🌋

FPGA なにで書く

2020/10/25に公開

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といえば、かんな丸!!さんの資料は必読です。

次回

FPGA なにを書く?

Discussion