« AVM テストベンチその2 | Main | 子育てと仕事 »

2007.02.20

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に
書き込むようにする。上手く動くかどうかはやってみよう。

|

« AVM テストベンチその2 | Main | 子育てと仕事 »

Comments

いったいどこで blog 書いてらっしゃるのか
興味津々 ^_^;

> portに定数をアサインする方法がよくわからない。

無いんですよお...と思う...寝ぼけてるもんで。
それだけでなく、top で、bus を 2 つに分割しようとしても、
その module 書かないといけません...
大昔 osci のフォーラムが、このネタで盛り上がってた記憶が...

> Verilogだと、出力ポートの信号はいったん
> wireで受けてassignすることで、
> 内部でも出力信号を使用できる。

あれ、明示的に宣言する必要あったかなあ...
vhdl では絶対必要ですけど。
これで、痛い目にあったことあります。
synopsys が出力する vhdl のネットリストで、
間に配線を挿入してくれないケースがあって、
下流のツールで構文エラー。
禁断の手動 eco でサインオフでした。

Posted by: noboshemon | 2007.02.20 at 02:12 PM

>あれ、明示的に宣言する必要あったかなあ...

明示的に宣言しないとデフォルトのネットタイプであると
認識されると思います。通常は、wireです。

1364-2001では、ANSI-Cのようにポートで入出力タイプおよび型が
宣言できるようになり、とっても便利です。

でも、ほとんどの人はそんな書き方しませんが、

Posted by: 原山みや | 2007.02.21 at 11:13 PM

> 明示的に宣言しないとデフォルトのネットタイプであると
> 認識されると思います。通常は、wireです。

内部で参照するようなときは、大抵 reg で書いてるので、
意識するチャンスがないですわなあ ^_^;

> 1364-2001では、ANSI-Cのように
> ポートで入出力タイプおよび型が
> 宣言できるようになり、とっても便利です。
>
> でも、ほとんどの人はそんな書き方しませんが

いやー使いたいんですよ...
でも、プータロー向けの free のツールではつらいのと、
何も調べずに "使うな" と言うだけの
あんまりな方々が世間に多いもんで...

Posted by: noboshemon | 2007.02.22 at 03:06 PM

noboshemon さん、原山みやさん
こんにちは。

私自身 Verlog VHDL、高い論理合成ツール 安い合成ツール等を
いったりきたりしていると、自然に無難な書き方を使い回すように
なってしまい、言語仕様に結構いい加減になってきています。

この辺りが、自分自身がVerilogエンジニアを名乗れない理由ですね。
VHDLもそうですが、Verilogに関して突っ込んで勉強しようという
モチベーションがもてなくなっています。

SystemC LRMをダウンロードしてきましたが、予想以上につまらならそうで
とまどっています。

# まあ、こういうのをちゃんと読んで理解するかどうかが、プロの境目だと
# 思うので頑張ろう。

Posted by: なつたん | 2007.02.25 at 12:48 PM

LRMは、基本的につまらないです。
SystemCならAVMやSCML(CoWare)のコードを見て勉強するといいと思います。

他の人のコードを見て勉強するが一番いいです。
コードを見てわからなくなったときに、LRMが役立ちます。


Posted by: 原山みや | 2007.03.01 at 08:51 PM

原山みやさん、こんにちは。

LRMはおもしろくないけども、仕事でSystemCをやることになった場合、読まないといけない物だと思っています。

SCML(CoWare)は初めて知りました。情報ありがとうございます。早速見てみます。

Posted by: なつたん | 2007.03.01 at 09:25 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/13983246

Listed below are links to weblogs that reference AVM テストベンチその3:

« AVM テストベンチその2 | Main | 子育てと仕事 »