##はじめに
今年は(も?)SystemVerilogに関して 大きなトピック無かったよなあ と感じる一年でした。
FPGA開発者はSVA(SystemVerilogAssertions)を欲し、Verification IPはSystemVerilogで書かれているところを見るとそれなりに浸透していると感じますが、「SystemVerilog=検証言語」の印象が大きく、SystemVerilogで設計している人はあまり見かけない感じです。
セルベース(ASIC)向けの論理合成ツールは対応が地味に進んでいますが、FPGAのIDEはそれほど進んでいません。むしろARM内蔵FPGAを使ってあれこれするのがホットトピックスであり、SystemVerilog対応のプライオリティはそれほど高くないのが実情でしょう。
それはされておき、もはやWebブラウザで実行する言語のデファクトスタンダードであるJavascript界隈では進歩のスピードが速く、AltJSという非JavaScript言語群が次々と提唱され、今年はそれらが収斂していくというHDL界隈では考えられない変化が起きていました。
この「AltJS」という言葉にあやかってか、alt.hdlというVerilog/VHDLに変わる何かを使ってベンチマークした試みがありました。
もともと、HDL界隈ではVerilog/VHDLに変わる何かを模索し続けて 10年以上経っている 感じがします。SystemCとかありますよね、はい。
今回は、SystemCはさておいて、alt.hdlこれらで取り上げられた言語を中心に、その他、Verilog/VHDLに変わる何かを AltHDL と称し、いろいろ雑に紹介していきます。
##bluespec
bluespecはセルベース開発者だと有名かなと思います。日本にも代理店があります。
抽象度を上げつつ型チェックが比較的厳密で、並列処理を分かり易く記述することができます。
##Chisel
Chiselは、Scalaのハードウェア記述向けのDSLです。OOP的なところに加えて、静的型付けの特徴を持っています。OOPをクリアすれば静的型付けは特にVHDL技術者にはなじみ深くなるのかもしれません。
##MyHDL
MyHDLは、PythonのDSLになります。Pythonは学習コストが低く、読みやすい言語と言えます。MyHDLではデコレータというPythonの技術を利用し、実際のハードウェアのwire接続を表現していきます。
##NSL
NSLは国産のハードウェア記述言語です。主にF/Fベースで書かれているHDLから、その辺りの繰り返し処理を切り離し、設計者の意図を反映させることに主眼が置かれています。
##AltHDLの未来
C言語から無理矢理合わせ込んできた頃と比較して、現在のAltHDL群はVerilog/VHDLよりもシンプルに記述することができ、かつ、ケースによってはFPGAベンチマークで優れた結果を出しているものもあります。
しかし、こういった優れた技術は、まだ普及しているとは言い難いものがあります。
セルベースの場合、プロジェクト自体にかかる費用が巨額になっている背景もあり、実績の乏しいAltHDLの参入は、キーマンとなる優秀な技術者が加わらないと、却ってプロジェクト進捗の低下とバグとなるリスクがあります。三大EDAベンダに採用される、あるいは買収されるといったシナリオがあると、道は開けてくるかもしれません。
FPGAはどうでしょうか。AltHDLのメインターゲットはFPGAかもしれません。しかしARM内蔵FPGAが出てきた現在、ソフトウェア技術者をFPGAに引き込む流れが出てきています。この場合、FPGAベンダのIDEでHDLを書く機会が無くなってしまうのかもしれません。そもそもHDLを書かないのであればAltHDLの出番は無くなっていきます。
とはいえ、SystemCが出てきたころからHDLを書く技術者はいなくなると言われて10年以上経つ現在、HDLは無くなっていません。同様に全てのFPGAが大きなCPU内蔵FPGAになるわけでもありません。AltHDLは、その書きやすさと高いベンチマークに加え、FPGA IDEとシームレスにつながる仕組みがあると、爆発的に普及する可能性はあると思います。