FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2020-05-01から1ヶ月間の記事一覧

LLVMの新しい中間言語表現 MLIRを試す(2. MLIRに関するコード生成を試す)

MLIRについて基礎を学んだところで、実際に動かしてみたい。以下のページを読みながら少しチュートリアルを触ってみよう。 mlir.llvm.org mlir.llvm.org MLIRとのインタフェース 先ほどのtranspose()がどのようにMLIRに変換されたのかを以下に示す。 %t_tens…

LLVMの新しい中間言語表現 MLIRを試す(1. Getting Started)

MLIRについて基礎を学んだところで、実際に動かしてみたい。以下のページを読みながら少しチュートリアルを触ってみよう。 https://mlir.llvm.org/getting_started/ ビルドのためのリポジトリはLLVMのものと同じで良いらしい。 git clone https://github.com…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ15/ステップ16)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ15とステップ16。 ステ…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ13/ステップ14)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ13とステップ14。 ステ…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ11/ステップ12)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ11とステップ12。 ステ…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ9/ステップ10)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ9とステップ10。 ステッ…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ7/ステップ8)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ7とステップ8。 ステッ…

RISC-V Vector Extension v0.9 が Readyになっているようなので要点をまとめる

RISC-V Vector ExtensionのGitHubリポジトリに静かにv0.9のタグが打たれた。 v0.8とv0.9の間にどれだけの差分があるか、調べておかなければならない。 v0.8のタグの付いたRevision github.com v0.9のタグの付いたRevision github.com という訳でGitリポジト…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ5/ステップ6)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ5とステップ6。 ステッ…

コンパイラのための新しい中間表現 MLIR の論文を読む

LLVM IRについて調べていると、最近よくMLIRという言葉を目にするようになった。MLIRは"Multi-Level Intermediate Representation"の略称であって決して"Machine Learning"ではないのだが、LLVM IRを置き換えるために開発されている新しい中間表現形式である…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ3/ステップ4)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ3とステップ4。 ステッ…

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(ステップ1/ステップ2)

ゼロから作るDeep Learning ❸ ―フレームワーク編作者:斎藤 康毅発売日: 2020/04/20メディア: 単行本(ソフトカバー) ゼロから作るDeep Learning ③を買った。昨年のQiitaでも自分でビルドシステムを作ってみた通り、こういうプラットフォームを作る話は大好…

RISC-V Getting Started GuideのLinuxビルドを試す(4. Failする要因を確認)

前回のシミュレーションのトレース情報を確認していると、どうも途中から猛烈に例外に飛んでいることが分かった。 <FunctionCall 69225526 mcall_console_putchar (0x0000000080001b58)> <FunctionCall 69225538 htif_console_putchar (0x000000008000232a)> <Return 69225571 htif_console_putchar> <Return 69225576 mcall_console_putchar> <Return 69225582 mcall_trap> </return></return></return></functioncall></functioncall>

ブラウザ上でRISC-Vプロセッサの動作を学習できるGUIパイプラインシミュレータWebRISC-V

RISC-Vメーリングリストでアナウンスがあった。ウェブブラウザ上で動作するRISC-VパイプラインシミュレータWebRISC-Vが面白い。 論文も公開されている。正直何が新規要素なのかはよく分からないが、しっかりまとまっていることはいいことなので時間を取って…

VerilatorでDPIを使ってC++側からVerilogのFunctionやTaskを呼ぶための方法調査

これまでVerilog側からDPIを経由してC++の関数を呼び出したりする方法について調査した。 しかしよく考えたらDPIを経由してC++側の実装からVerilogのFunctionやTaskを呼び出す方法についてはあまり調べたことが無かったのでやってみることにする。 前回同様c…

昇降デスクは値段が高いので机上タイプのスタンディングデスクを導入した

リモートワークとは直接関係ないのだけれども、仕事をしていたり、ブログを書いたりするときにずっと机の前に座っているとお尻が痛くなる。 イケイケのベンチャー企業では、昇降デスクを導入するのが流行っているらしい。これはすごく魅力的で、電動の昇降デ…

GCC 10.1がリリースされたのでビルドしてみる

GCC 10.1がリリースされた。GCCのバージョン自体はあまり真剣に追いかけていないので詳細にチェックしていないのだが、まずは自分の環境にインストールして動作を確認しておきたい。 x86向けにビルドを試す いつも通りtar.gzをダウンロードしてインストール…

RISC-V Getting Started GuideのLinuxビルドを試す(3. Spike / 自作RISC-V ISSで試す)

前回の続き。前回はQEMUで動作させることができるようになったので、Spikeと自作RISC-V ISSで動作を確認していく。 あらかじめ断っておくがSpikeは今回のビルド環境に対するサポートはしていないので動作しないことは予想通りなのだが、一応確認していこう。…

RISC-V Getting Started GuideのLinuxビルドを試す(2. VirtualBox Ubuntu 16.04 LTSで試す)

RISC-V Getting Started Guideというページがある。目的ベースで、QEMUやLinuxなどのオペレーティングシステムを動かすための方法や、様々なツールキットを動かすための情報がまとめられている。 前回WSLでビルドを試行して上手く行かなかったので、次はVirt…

Verilatorの使い方(4. DPI-Cを使ったC/C++との連携)

Verilog-HDLを使った検証では、C/C++のモデルとVerilogのモデルを接続した協調検証が頻繁に行われる。Verilatorでも同様の機能が搭載されており、DPI-Cを使ったC/C++とVerilogとの通信が実現可能だ。 ここでは前回作成したcounter_4bit.svに対してDPI-Cを経…

RISC-V Getting Started GuideのLinuxビルドを試す

RISC-V Getting Started Guideというページがある。目的ベースで、QEMUやLinuxなどのオペレーティングシステムを動かすための方法や、様々なツールキットを動かすための情報がまとめられている。 risc-v-getting-started-guide.readthedocs.io ここに"Runnin…

Verilatorの使い方(3. Lintとして活用する)

Verilatorは論理シミュレータだけではなく、Lintとしても活用することができる。例えばこれまで使用してきたcounter_4bit.vをLintに掛けてみよう。 $ verilator --lint-only -Wall counter_4bit.v %Warning-DECLFILENAME: counter_4bit.v:1:8: Filename 'cou…

RISC-Vにおける32ビットよりも大きな定数の生成方法

ふと気になって、RISC-Vの32ビットよりも大きな定数の作り方を調べることにした。これはRISC-VのISAの話というよりもコンパイラの話だ。 例えば以下のようなプログラムをGCCでコンパイルするとどのように定数を生成するのかチェックしてみる。 long_value.c …

Verilatorの使い方(2. 波形ダンプの方法)

Verilatorの使い方。基本的なデジタル回路のシミュレーション方法が分かったら、次は波形をダンプする方法だ。 Verilatorを使ってRTLシミュレーションをすべてフリーのツールで完結させたい場合、波形をダンプするためには主に以下の2種類の方法がある。 vcd…

freedom-u-sdkのLinuxを立ち上げながらLinuxのブートプロセスを学ぶ(8. start_kernel(void)の処理)

私の開発したRISC-VシミュレータはLinuxを立ち上げることができる。シミュレータのデバッグ時には相当中身を読み込んだのだが、きちんと文章化していない挙句、大昔のプロジェクトなのでもう忘れかけている。 Linuxのブートの方法から各種プロセスの取り扱い…

Verilatorの使い方(1. Verilatorの考え方と基本的なシミュレーション実行方法)

Verilatorについて全く知らない人が、どのように使えば良いのかきちんとした文章が世の中に存在していない気がするので、少しまとめてみることにした。VerilatorはフリーでオープンソースのVerilogシミュレーションシステムなので、うまく活用すれば強力な武…

RISC-Vのコードモデルについて(2. コードモデルとRelaxationの挙動まとめ)

RISC-Vのコードモデルについていろいろ調べる機会があったのでまとめておく。 参考にしたのは、 www.sifive.com RISC-V Large Code Model Software Workaround https://sifive.cdn.prismic.io/sifive%2F15d1d90e-f60e-42a2-b6bf-c805c6c73b0d_riscv-large-co…

RISC-Vのコードモデルについて(1. コードモデルとは何なのか)

RISC-Vのコードモデルについていろいろ調べる機会があったのでまとめておく。 参考にしたのは、 www.sifive.com RISC-V Large Code Model Software Workaround https://sifive.cdn.prismic.io/sifive%2F15d1d90e-f60e-42a2-b6bf-c805c6c73b0d_riscv-large-co…

freedom-u-sdkのLinuxを立ち上げながらLinuxのブートプロセスを学ぶ(7. 物理アドレスモードから仮想アドレスモードへの変更)

私の開発したRISC-VシミュレータはLinuxを立ち上げることができる。シミュレータのデバッグ時には相当中身を読み込んだのだが、きちんと文章化していない挙句、大昔のプロジェクトなのでもう忘れかけている。 Linuxのブートの方法から各種プロセスの取り扱い…

freedom-u-sdkのLinuxを立ち上げながらLinuxのブートプロセスを学ぶ(6. CPU0が実行する`boot_loader(dtb)`の流れ)

私の開発したRISC-VシミュレータはLinuxを立ち上げることができる。シミュレータのデバッグ時には相当中身を読み込んだのだが、きちんと文章化していない挙句、大昔のプロジェクトなのでもう忘れかけている。 Linuxのブートの方法から各種プロセスの取り扱い…