AVM 最初のテストベンチ
Advanced Verification Methodology SystemC and SystemVerilog
某展示会でメンターの人から日本語版をもらう。
ちょっと電車の中で読んでみたら予想以上に面白そうだったので
勉強してみる。
一応Questaのロゴは入っているが、このレベルなら高価なシミュ
レータはいらない。gcc 万歳。
テストベンチ小ネタ
最初のstimulusを作るところのみ、dont_initialize()を宣言しないことで、
時刻0の時に、SC_METHODを呼び出す。
その、SC_METHOD内で、next_trigger()を遅延付きで呼び出すことで、
再びSC_METHODを呼び出す。
以下、ループ
ブラボー!こんな発想無かったよ。
ソースを抜粋
コンストラクタの中で、SC_METHODとして、run()を登録。
dont_initialize()が無いので時刻0にて1回run()が実行される。
stim_gen (sc_module_name mn): sc_module(mn), stimulus(0)
{
SC_METHOD(run);
}
SC_HAS_PROCESS(stim_gen);
run()の中身がこれ
void stim_gen::run(void)
{
A = stimulus[0];
B = stimulus[1];
stimulus++;
next_trigger(3, SC_NS);
}
next_trigger(3, SC_NS)の呼び出しにより、3ns後に再びrun()が呼び出される。
書籍のpdfおよびソースは上記サイトからダウンロード可能です。展示会に
いけば無料でもらえる時があり。ライセンスは、Apache License。
コンストラクタでの初期化も気持ちよいし、企業名が入っているドキュメントは
こうあるべきだみたいな見本だと思う。
ちなみに、私はメンター社の回し者では無いですが、全く無関係という
わけでも無いので、若干バイアスはかかっております。
The comments to this entry are closed.


Comments