2017-11-08 9 views
1

検証のために、RTLモジュールにDVコードを埋め込む必要があります。このRTLモジュールには多くのインスタンス(1000s)があります。どのように私はそれをテストからインスタンス単位で制御可能にするのですか? TestbenchはSystemVerilog UVMにあります。私はCDPIから遠ざかりたいですか?RTLモジュールに埋め込まれたDVコードをテストベンチに接続する方法

任意の提案は、あなたがあなたのRTLモジュールにモジュールまたはインターフェイスを挿入するためにbind構文を使用し

-Hawki

答えて

1

をいただければ幸いです。このバインドされたモジュールの中で、RTLモジュールと対話するメソッドを持つクラスを構築します。クラスオブジェクトは、インスタンスごとにuvm_config_dbに設定されます。そして、あなたのテストベンチはこれらのオブジェクトをuvm_config_dbから取得し、それらのオブジェクトメソッドをテストベンチから呼び出すことができます。

私はDVCon 2012の論文The Missing Link: The Testbench to DUT Connectionを作成しました。

0

彼の答えに記載されているように、通常はbindのステートメントが最適な方法です。

他の方法もありますが、場合によってはより便利かもしれません。それらはパラメータ化されたモジュールに基づいています。

1)パラメータ

module rtl #(bit dvflag = 0)(); 
    ... 
    if (dvflag) 
     dv_module dv_instance(...); 
    ... 
endmodule 


module dut; 
    rtl rtl1(); 
    rtl #(.dvflag(1)) rtl2(); 
    ... 
endmodule 

2と直接インスタンス)v2kコンフィグステートメントでインスタンスを上書きします。

module dut; 
    rtl rtl1(); 
    rtl rtl2(); 
endmodule 
... 

config dv_cfg; 
    instance dut.rtl2 use #(.dvflag(1)); 
    ... 
endocnfig 
関連する問題