AVM テストベンチその3
なんかcounterごときの記述で意外に手こずる。
やっぱり、SystemCを全然わかっていない。
最初に、下位に呼び出しているSC_MODULEのportに定数を
アサインする方法がよくわからない。
Verilogでいう、assign foo = 1; がそんなに簡単にはいかない。
System Design with SystemC の中に定数値を作るだけの
モジュールがあったことを思い出す。(p79)
void process() { while(1) output.write(constant_);}
相手がFIFOの場合は定数値でもwriteし続ける必要があるのか。
しょうがないので、SC_METHOD(init); でinit()関数を
呼び出し、その中で初期化。
これはこういう物だと思うが、0固定とか1固定がモジュールを
またがる場合、gccレベルでの最適化はできないと気がつく。
次に、sc_outにアサインしている信号を内部で読み出す方法が
わからない。Verilogだと、出力ポートの信号はいったん
wireで受けてassignすることで、内部でも出力信号を使用できる。
このwireの代わりにsc_signalを持ってきて、つないだだけ
では上手く行かない。
しょうがないので、wireに相当するsc_signalの入力に変化が
あったときに、sc_outの信号を更新するだけのSC_METHODを
書く。
SC_METHOD(update);
sensitive << q_wire0 << q_wire1 << q_wire2;
q_wireの信号が変化があれば、update()の中で、sc_outに
書き込むようにする。上手く動くかどうかはやってみよう。
The comments to this entry are closed.


Comments
いったいどこで blog 書いてらっしゃるのか
興味津々 ^_^;
> portに定数をアサインする方法がよくわからない。
無いんですよお...と思う...寝ぼけてるもんで。
それだけでなく、top で、bus を 2 つに分割しようとしても、
その module 書かないといけません...
大昔 osci のフォーラムが、このネタで盛り上がってた記憶が...
> Verilogだと、出力ポートの信号はいったん
> wireで受けてassignすることで、
> 内部でも出力信号を使用できる。
あれ、明示的に宣言する必要あったかなあ...
vhdl では絶対必要ですけど。
これで、痛い目にあったことあります。
synopsys が出力する vhdl のネットリストで、
間に配線を挿入してくれないケースがあって、
下流のツールで構文エラー。
禁断の手動 eco でサインオフでした。
Posted by: noboshemon | 2007.02.20 02:12 PM
>あれ、明示的に宣言する必要あったかなあ...
明示的に宣言しないとデフォルトのネットタイプであると
認識されると思います。通常は、wireです。
1364-2001では、ANSI-Cのようにポートで入出力タイプおよび型が
宣言できるようになり、とっても便利です。
でも、ほとんどの人はそんな書き方しませんが、
Posted by: 原山みや | 2007.02.21 11:13 PM
> 明示的に宣言しないとデフォルトのネットタイプであると
> 認識されると思います。通常は、wireです。
内部で参照するようなときは、大抵 reg で書いてるので、
意識するチャンスがないですわなあ ^_^;
> 1364-2001では、ANSI-Cのように
> ポートで入出力タイプおよび型が
> 宣言できるようになり、とっても便利です。
>
> でも、ほとんどの人はそんな書き方しませんが
いやー使いたいんですよ...
でも、プータロー向けの free のツールではつらいのと、
何も調べずに "使うな" と言うだけの
あんまりな方々が世間に多いもんで...
Posted by: noboshemon | 2007.02.22 03:06 PM
noboshemon さん、原山みやさん
こんにちは。
私自身 Verlog VHDL、高い論理合成ツール 安い合成ツール等を
いったりきたりしていると、自然に無難な書き方を使い回すように
なってしまい、言語仕様に結構いい加減になってきています。
この辺りが、自分自身がVerilogエンジニアを名乗れない理由ですね。
VHDLもそうですが、Verilogに関して突っ込んで勉強しようという
モチベーションがもてなくなっています。
SystemC LRMをダウンロードしてきましたが、予想以上につまらならそうで
とまどっています。
# まあ、こういうのをちゃんと読んで理解するかどうかが、プロの境目だと
# 思うので頑張ろう。
Posted by: なつたん | 2007.02.25 12:48 PM
LRMは、基本的につまらないです。
SystemCならAVMやSCML(CoWare)のコードを見て勉強するといいと思います。
他の人のコードを見て勉強するが一番いいです。
コードを見てわからなくなったときに、LRMが役立ちます。
Posted by: 原山みや | 2007.03.01 08:51 PM
原山みやさん、こんにちは。
LRMはおもしろくないけども、仕事でSystemCをやることになった場合、読まないといけない物だと思っています。
SCML(CoWare)は初めて知りました。情報ありがとうございます。早速見てみます。
Posted by: なつたん | 2007.03.01 09:25 PM