SystemCとVerilogとC++と
先頭から連続する0を数えるプログラムをC++とVerlogとSystemCで書いてみた。
ファイルはここ。
C++は本を丸写しだからゴールデンとして。
Verilogの方は、以前に書いたとおり2つのアルゴリズムで速い方を選ぶようにした。
思ったより簡単だ。リソースは倍食うけど、ワースト値が大きく改善される。
チャンスがあれば今度仕事で使おう。
もうちょっと詳しく書くと、先頭からの続く0を計算するのに、順に左にシフトしていって
MSBが1になるまでを数えるのと、順に右にシフトしていってシフトした結果が0になるのを
二つ同時に回している。もっと複雑な処理でも使えそう。(もちろん演算系以外でも)
(Veritakですぐに動くようにしてあります。)
SystemCは、初めてのSystemCレベル。なんと言っても、テンプレートから一歩でも
はみ出すとさっぱり動かないのがくやしい。全然勉強がたりない。
0から書くと、いかにportもchannelもeventも分かっていないのかが、身にしみて
わかる。
The comments to this entry are closed.
Comments