DATE2022に上がっていたChiselの拡張言語Twineというものについて、論文を読んでみることにした。
しかしこれ系の拡張言語はふわっとしている印象が多くて嫌な予感がする。大丈夫か?(DATEにAcceptしているのだから大丈夫なのかなあ)
TwineはChiselの拡張。ここでいうヘテロジニアスデザインとは何なのか?
イントロダクション
現在のハードウェアシステムにおいて、ブラックボックスのコンポーネントを再利用するためには、ポートのピン仕様、タイミングなどのブラックボックスの中身を詳細に理解する必要があり、ハードウェアの複雑性が増加しコストが増大する。またエラー発生の可能性が増える。
SystemVerilogやVHDLに代表されるHDLは、コンポーネントのポートに対してデータと制御を区別しないところに問題がある、としている。HLSでもHDLと同様の性能を達成できるが、今回はHDLの亜種であるChiselを使用した。
Chiselは近年注目されているScalaベースのハードウェア記述言語であるが、Chisel自体は抽象レベルを十分に引き上げていない。そのため、設計者は手作業で制御信号を調整する必要があり、従来のHDLと同様の課題が存在している。
そこで、Twineを開発し、以下の機能を導入した。