今日のテクノロジ
ModelSim上で、Verilog テストベンチからSAIFを抽出する
まず、テストベンチ上のinitialに次のような記述を加える。
// create initial signals including reset initial begin $readmemh(`IM_FNAME, INSTMEM); $readmemh(`DM_FNAME, DATAMEM); $set_toggle_region(TestBench.DUT); $toggle_start();
つぎにシミュレーションを止める記述で、
if (IM_data == {(`IM_DW){1'b1}}) begin $toggle_stop(); $toggle_report("out.saif", 1.0e-12, "TestBench.DUT");
としてSAIFの出力システムタスクを記述する。
このままコンパイルしてシミュレーションしても、システムタスクは未定義状態なので何も起こらない。シミュレーション時に、例えば Synopsys の提供する PLI ライブラリをリンクし、システムタスクを認識させる。
% vsim -novopt -t ns -sdftyp /DUT=dump.sdf -pli /export/cad/synopsys/cores_2008.09 /amd64/power/vpower/libvpower.so -do wave.do TestBench
DesignCompilerでクロックツリーの消費電力をはかる
消費電力を見積もる場合、SAIFを読ませた上で、report_power、これは常識。
ではクロックツリーだけ、その消費電力だけ抽出する場合は?
IC Compiler 等でCTSした記述にたいして、dc_shell 上で、
% create_clock CLK % report_clock_tree_power
する。report_clock_tree_power はdc_shellの補完で出てこないので注意したい。ただし、2008.09バージョンの話。