Edited at

15年ぶりの Verilog

More than 1 year has passed since last update.

<はてブロから移設しました。本記事はテスト投稿を兼ねています。>


セミナーに参加

2017/3/24 に都内某所にセミナー参加してきた。

ソフト屋がハードウェアセミナーに参加するのはやや不安ではあるが。


Verilog ソースコードを目の当たりにする

そこで目にしたのは PCI シーケンサを自作して以来の Verilog ソースコードだった。


Verilog の書き方によってパフォーマンスが変わる

HDL によって統一的に回路を記述できるようになったが、チップが持っているリソースを想定しながら HDL を記述しなければならないという事情は変わっていないらしい。

例えば積和演算をしたい場合、最近の FPGA には DSP が内蔵されているが、HDL に細かな指示子をつけないと FF などに展開したとんでもない回路を生成してしまう。

(DSP資源は貴重だから温存しようとするのか?)

例えば Xilinx 系では

Verilog:Code Snippet

(* USE_DSP48 = "yes" *) wire c = a * x1 + b * x2;



としないと DSP が使用されないそうだ。

HSL など高位合成ツールから論理合成を行った場合、この仕様はパフォーマンスが上がらない原因となりそうだ。


結論: ソフトから合成したい人は SDSoC を使え???

SDSoC はソフトウェア資源をトップダウンにハードウェア化するというかなり野心的なツールだが、そこそこの品質のハードウェアを作成してくれるなら画期的なツールと言える。

残念ながらボタン一発で H/W の Block Diagram と最適化された(人間が見て満足の行く)ネットリストを作成してくれるまでにはなっていないようだ。

しかし、今後多数のボードが機械学習されて、分類が進んでくると結構いいネットリストを作ってくる可能性があるんじゃないだろうか。

将来の記述に希望がもてるセミナーだった。