読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

高位合成言語Chiselイントロダクション(1)

Chisel

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の19日目の記事です。

ハードウェア開発、CPUアーキテクチャ Advent Calendarも、25日分ほぼ埋まってきました。あともう少し、各担当者の皆様、頑張りましょう!

今回はちょっと話題を外して、RISC-Vのハードウェア実装の根幹を担っている高位合成言語、Chiselについて調べてみようと思う。

f:id:msyksphinz:20161218115648p:plain


1. そもそも高位合成言語とは

ちまたでVerilog-HDL, VHDLの変わりになると流行っている高位合成言語だが、きちんとした定義はどのようになっているのだろう?

こちらの発表資料を見てみると、

  • 今さら聞けない高位合成 ~1から学ぶ高位合成~

http://www.edsfair.com/2009/pdf/sp_s04/eds09_sp04_1.pdf

設計対象の回路の動作・アルゴリズムからレジスタ転送レベル(RTL)の回路を自動で生成する技術

とある。動作記述、つまり「どのようなことを行いたいか?」を記述したら回路(それもRTLレベル)を生成する技術というように捉えることが出来る。

2. いろんな高位合成ツール

私の調査した限りでの、高位合成ツールをリストアップしてみる。

大体以下のような感じかなあ。いまいち高位合成ツールの比較方法って分からないんだよな。対象言語と値段くらいしか思いつかない。

あと、この一覧表は私のGoogle検索の結果と思い付く限りで調査したものなので、ウソや過不足もあると思うので、適宜ツッコミを入れて頂ければ助かります。

Cyber Work Bench Vivado-HLS Catapult C Impulse C Synphony C Compiler C-to-Silicon Compiler
開発元 NEC Xilinx Mentor Graphics Impulse Accelerated Technologies Synopsis Cadence
対象言語 System-C/ANSI-C C/C++ ANSI C++/System C ANSI C C/C++ System C
値段 有料 無償版あり 有料 有料 有料 有料

CyberWorkBench

jpn.nec.com

NECの開発した高位合成ツール。結構昔からある気がする。ハードウェアC(?)からRTLを生成することが出来る。有料だし非常にお高いと聞いているので、トライしたことは無い。

Vivado-HLS

japan.xilinx.com

Xilinxの発表したFPGA向け高位合成ツール。というかもとはAutoESLという高位合成ツールを買収したものらしい。C/C++からRTLを生成することが出来る。最近無料になった。

Catapult C

www.mentor.com

メンターグラフィックスの開発した高位合成ツール。C/C++などのからRTLを生成することが出来る。ちなみに、MicrosoftのProject Catapultとは関係無い。

Impulse C

こちらもFPGA向け、C/C++からRTLを生成する高位合成ツール。こちらは、何故か日本語の資料や書籍が入手しやすい。結構誰にでもトライアルできるツールなのかな?

[実践] C言語による組込みプログラミングスタートブック

[実践] C言語による組込みプログラミングスタートブック

C言語による実践的FPGAプログラミング

C言語による実践的FPGAプログラミング

  • 作者: デビッドペレリン,スコットティボー,天野英晴,David Pellerin,Scott Thibault,宮島敬明
  • 出版社/メーカー: エスアイビーアクセス
  • 発売日: 2011/08
  • メディア: 単行本
  • クリック: 18回
  • この商品を含むブログ (1件) を見る

上記の書籍の翻訳は慶応大学の学生さんが行ったそうだ。すごいなあ。

Synphony C Compiler

www.synopsys.com

Synopsysの高位合成ツール。C/C++をRTLにコンパイルする。

C-to-S Compiler

日本ケイデンス・デザイン・システムズ社|次世代SystemCベースの高位合成ツール、C-to-Silicon Compiler

Cadenceの高位合成ツール。C/C++/SystemCをRTLにコンパイルする。

3. ではChiselとは何なのか?売りは?

ChiselはScalaからRTLを生成する高位合成コンパイラだ。ただしステートマシンなどの細かい制御は出来ないらしいので、あまり商用の高位合成系と比較すべきではないのかもしれない。

Scalaについては正直あまり詳しくないのだが、なぜChiselを開発しようと思ったのか。

github.com

We were motivated to develop a new hardware language by years of struggle with existing hardware description languages in our research projects and hardware design courses.

We believe that it is important to not only teach students how to design circuits, but also to teach them how to design circuit generators

ふうーむ、UC Berkeleyは回路を設計するだけでなく、今後ますます増大する回路を効率的に設計するために、回路ジェネレータをどのように設計すべきか、というところにも焦点を当てている、ということか。

たしかに、全てVerilogで回路を記述することはもう不可能だ。柔軟かつ高速に回路を設計するためには、少なからず高位合成の力を借りなければならないときはやってくる。 そのために、どのように回路ジェネレータを作ればよいのか、というところにも焦点を当てなければならない、というのか。

4. Chiselを手っ取り早く試すためのVagrant Box

という訳で、Chiselを試すためのVagrant+Chefの環境を早速作っていみた。というか、gitからcloneして自動的にmakeをするだけだけれども。

github.com

これでChiselの開発環境を一通り準備できた。次は、これを使ってなにかやっていきたい。