FPGA なにで書く
ULX3Sを買ったとする。もしくはTinyFPGA BX。しかし、買っただけでは動かない。ビットストリームが必要だ。ビットストリームを作るには、論理回路を書かなければ。
FPGA なにで書く
言語のはなし。
Verilog HDL? VHDL? SystemVerilog?
あるある聞いたことある。
Chisel?
ちらっと見た気がする。
C言語? C++?
いいえ、高位合成には興味がないとは言いません。言いませんが、どちらかと言えば、何かを作るためにHardware Description Languageを書くんじゃなくて、Hardware Description Languageを書くために何かを作るんです。そんな心意気。
とはいえ、Verilog HDLを書くのは正直しんどい。
でも高位合成言語はちょっと。
ハードウェア記述言語のまま、もっと楽に書ける言語はないものか。
そんな都合のいいものがあるわけ... あるんです。
Chisel
Chiselは、Scalaによる記述力を使って、直接論理回路を構築する言語です。
誤解を恐れずに言い切ってみるとこんな感じ。
HDL | プログラミング言語でのアナロジー |
---|---|
SystemVerilog | C++ |
Verilog HDL | C言語 |
Chisel | アセンブラ |
しかし、Scalaを書きたいかというと... まぁ、それはそれとして。
Magma
Chiselはすごく魅力的だけど、Scalaじゃなくて別の言語だったらなー、と思ったことはないでしょうか。そもそもChiselなんて今日知ったから、考えたこともないという方も多いとは思いますが、たとえばPythonだったらいいと思いませんか?
言うならば、それがMagmaです。Pythonによる記述力を使って、直接論理回路を構築する言語なわけです。
Chiselとの比較表を無理やり作ってみましょう。
Chisel | Magma | |
---|---|---|
出自 | UCバークレー | スタンフォード |
ベース言語 | Scala | Python |
チュートリアル | https://github.com/ucb-bar/chisel-tutorial | https://github.com/leonardt/magma_examples |
筆者のコミット数 | 0 | 40 |
まだまだある選択肢
Silice
例の The DooM-chip! (CPUを使わずに、論理回路だけでDOOMを再現した代物)
nMigen
作者によるYosysの新しいC++シミュレーションバックエンド CXXRTLが記憶に新しい。
SFL
SFLといえば、かんな丸!!さんの資料は必読です。
Discussion