IC設計のシミュレーションが欠かせない重要なステップである、一般的に詳細な分析と研究のためのポストシミュレーション波形ファイルを記録する必要があります。:いくつかの波がWLF(ウェーブログファイル)、VCD(バリューチェンジダンプ)ファイル、fsdbは(高速信号データベース)ファイル、SHM、VPDのファイルについての話
WLF波形ログファイルの場合は、限り、我々はModelSimのを使用して、あなたはすべて理解しておく必要があります。WLF(ウェーブログファイル)がメンター・グラフィックスのModelSimの波形ファイルによってサポートされています。私たちは* .wlfファイルを生成しますシミュレーションの終了時に、波形の波形ウィンドウを観察する際には(デフォルトはvsim.wlfです)。次回は、私たちはModelSimのを介して直接保存された波形を開くことができます。VSIM -view vsim.wlf -do run.do run.do信号波形の内容を見ることにします。それは、このWLFファイルが唯一のModelSimによって生成することができることが強調される、唯一のModelSimで表示することができます。ではない一般的なファイル形式。
VCD(バリューチェンジダンプ)は、共通のフォーマットです。VCDファイルはASCIIファイルIEEE1364標準(のVerilog HDL言語の標準)が定義されています。これは主にヘッダ情報を含み、変更情報変数は、値を事前定義します。それは全体のシミュレーションのための同等の情報を記録された情報信号の変化を、含まれているため、それは正確で、我々はそれが波形を表示することができ、シミュレーションを再現するために、このファイルを使用することができます。VCDはすべてのverilogシミュレータは、この機能を実現することができるはずですので、Verilog HDLの言語標準の一部ですが、また、ダンプVCDファイルシステム機能へのverilogコードをユーザーに許可するので。我々は、波形が一定の所定のデータモジュールと、我々はシミュレーションパラメータをdumpvars信号抽出にダンプファイルによって生成されたVerilog HDL波形ダンプファイルシステム機能によって生成されてもよいです。
特に注目すべきは、からこそ、情報信号における完全な変更のVCD記録を、私たちはVCDファイルによって、デザインの消費電力を推定することができる、つまり、これは他のwaveファイルが利用できないです。出会いとプライムタイムPX(プライムパワー)は、電力解析を達成するために、シミュレーション後に生成されたVCDファイルとネットリストファイル、ライブラリ、および消費電力情報が入力することができます。
VCDは、Verilog HDLの言語標準の一部であるため、すべてのverilogシミュレータは、この機能を実現することができなければならないので。我々はVerilogのコードでdumpVCDファイルシステムの機能をできるようにします。また、当社は、VHDLにまで拡張することができますModelSimのコマンドにより、VCDファイルをダンプすることができます。特定のコマンド:VCDファイルmyfile.vcd
VCDの追加/テスト/ DUT / *これは、すべてのDUT信号に関する情報を含むVCDデータを生成します。
私たちが使用してシミュレートする必要がありVSIM -vcdstim myfile.com
テスト; / *波を追加します。-all実行します。
またはでテストベンチに参加します:
初期
ベギン
$ダンプファイル( "* VCD。");
$ Dumpvars(0 **)。
終わり
FSDB(高速信号データベース)は、一般的に小さな春ソフト(ノバス)会社ドビュッシー/ヴェルディ波ファイルのサポートで、より広く使用され、そのようmodlesimなどNCSIM、などのシミュレーションツールの残りの部分は、PLIヴェルディの(通常のインストールディレクトリに配置によってロードすることができます下の共有/ PLIディレクトリ)を直接fsdbはファイルをダンプします。ヴェルディFSDBファイルVCDと同様の独自のデータフォーマットを使用することであるが、それはシミュレーション信号中に提示のみ有用な情報であり、VCDに冗長な情報を削除し、VCDデータは、ハフマン符号化のようであること。したがって、少量のデータFSDBが、それは、シミュレーション速度が向上します。PLIを達成するためにVerilogのインターフェイスですFSDB私たちは、Verilogの組み込みのシステム機能を実現するために使用してVCDファイルを知っています。fsdbDumpfile、fsdbDumpfile、fsdbDumpvarsなど
テストベンチを追加しました:
初期
ベギン
$ fsdbDumpfile( "* FSDB。");
$ FsdbDumpvars(0 **)。
終わり
残りの波形ファイルはそう、ファイルの種類サポートされるさまざまなエミュレーションやデバッグツールとは異なり、そしてないGMを行うが、ちょうどシミュレーションデバッグに必要なデータを取るための基本は、実際にはVCDファイル(VCDファイルの要約版から変換することができますファイルサイズ)は、元のVCDファイルよりもはるかに小さい、そしていくつかはまた、VCDファイル変換機能との相互運用性を提供します。
SHMは.shmが実際に2つのファイルが.dsnと.TRN含むディレクトリ、である、波形ファイルのケイデンスのNC VerilogおよびSimvisionサポートです。
VPDは、波形ファイルのシノプシスのVCS DVEサポートが$ vcdplusonで生成することが可能です。
同じ条件にCadence社NC Verilogのテストケースの比較と同じ波形ダンプ、最短のSHMファイル生成時間(ナンセンス、元々会社)を使用して、生成されたVCDファイルは、複数の時間及びSHMのFSDB時間を生成します。VCDファイルのサイズが数GBになりますしながら、私がテストした例では、FSDBファイルは、MBの数十の十MB、SHMファイルとして生成されました。
************************************************** ******************************
いくつかの使用法をFSDB:
(1)以下は、我々は1をGoogleにすることができ、様々な、特定のコンテンツfsdbは使用可能性を示唆し、リストであり、それらはすべて出てきました。
fsdbDumplimit - FSDBファイルサイズの上限はどのように使用するには?
$ fsdbDumpvars([<レベル>]、<スコープ|信号> *)
fsdbDumpfile - 指定FSDBファイル名
$ fsdbDumpfile(「<FSDB名>」)
fsdbDumpvars - 指定されたダンプ変数
fsdbDumpSingle - ダンプ指定された信号
fsdbDumpvariable - ダンプ指定された変数のVHDL
fsdbSwitchDumpFileは - 別のファイルに切り替わります投棄FSDB
$ fsdbSwitchDumpFile(「<新しいFSDB名>」)
fsdbAutoSwitchDumpfile - ファイルのサイズを制限し、自動的にデータのオーバーロードの新しいFSDBファイルを作成します
$ fsdbAutoSwitchDumpfile(<ファイルサイズ>、「<FSDB名>」、<ファイル数>)
fsdbDumpflush - フォースFSDBファイルに結果をダンプします
fsdbDumpMem - 指定されたメモリの内容をダンプ
$ fsdbDumpMem(<REG名>、[<スタートADDR>、[<サイズ>]])
$ FsdbDumpon - オープンFSDBダンピング
$ FsdbDumpoff - 閉じるFSDBダンピング
(1)スイッチ方式からなるFSDB
時には、あなたは長い時間のためにシミュレーションを実行したいが、関心の波が、ちょうど短いです。波形を切り替える方法を今回は、ファイルが大きすぎることもないのだろうか?ここでは方法が記載されています。参照のための例としては唯一、我々は種々の変更へのより実用的なアプリケーションを作成することができます。
初期は始まります
$ TIMEFORMAT(...);
$ fsdbAutoSwitchDumpfile(...);
$ FsdbDumpvars(...);
//条件式1
FsdbDumpoffを$。
//条件式2
FsdbDumponを$。
終わり
(2)、我々は、より一般的に一般的に使用されているだけでなく、中にtest_topで、このタスクをvaluevalueplusargs:
valuevalueplusargs( "casename =%S"、casename)
実行時に渡されたスクリプトcasenameことで(:+ casename = $ Testcase_name.fsdb VCS / NC SIM_ARGへ)
他はスキップする開始時間である一方、テストケースを容易にしつつ、実行時に複数のdumpfsdb可能性がある場合
ダンプ(SIM_ARG:+時間= $のstart_time)
valuevalueplusargs( "時間=%dの"、スキップ)
#スキップ
頻繁にダンプtest_topを修正するために、関係するすべての人(3)異なるモジュールプロジェクトは、一般的にDUMPLISTの内容をダンプする必要があります。
ファイルが実装されています
$ fsdbDumpvarsToFile( "dump.list");
コメントの例えばdump.listコンテンツ#)
0 test_top
#1 test_top
#0 test_top.dut
#0 test_top.dut.m1
#0 test_top.dut.m2
使用する場合、通常はtest_top.vに関連するステートメントを追加します。
REG [100:0] casename。
整数私は、スキップ。
初期は始まります
(testtestplusargs( "dumpfsdb"))であれば開始
(valuevalueplusargs( "時間=%dの"、スキップ))の場合
#スキップ;
IF(valuevalueplusargs( "casename =%S"、casename))
$ FsdbAutoSwitchDumpfile(300、casename、30)。
そうしないと
$ fsdbAutoSwitchDumpfile(300、 "./ test_top.fsdb"、40);
$ fsdbDumpvarsToFile( "dump.list");
終わり
終わり
ときにシミュレーションの実行を、VCS / NCパラメータ、開始ダンプ波形に対応5000ns(関連単位時間スケールルート)からのIF
+ dumpfsdb +時間= 5000 + casename = testcase1.fsdb
一般的にどのtestcase1、我々はケース名の仲間が続くスクリプトに対処します、それは5000からスタートダンプした後、次のように終了します
testcase1_000.fsdb、このようなtestcase1_001.fsdb、
2.またdump.list(名前簡単に取ることができます)ダンプのように、いつものセットレベルの設定内のセットを
レベルパス名
0 test_top.dut.m1
例:
// =================
//ダンプFSDB波
interger start_dump;
stop_dump整数;
finish_timeに整数;
結果整数。
REG [8 * 30 * -1:0] waveform_name。
開始当初:fsdb_dump
start_dump = 0;
finish_timeに= 0;
waveform_name = "debussy.fsdb"。
(testtestplusargs( "FSDB"))の場合
ベギン
もし(testtestplusargs( "dump_fileに"))
結果= valuevalueplusargs( "dump_fileに=%S"、waveform_name)。
$ fsdbAutoSwitchDumpfile(150、waveform_name、100);
$ fsdbDumpflush;
#start_dump;
//選択ダンプ信号
$ fsdbDumpvars(0、xx_tb)。
終わり
終わり