SV
* 環境変数
- VIPCAT
- 設定ファイルの生成
$CDN_VIP_ROOT/bin/cdn_vip_setup_env
- 設定ファイルの実行
cdn_vip_env_<...>.[c]sh.
* データ
- SOMA ファイル
VIP wrapper モジュールから参照される
- VIP wrapper モジュール
PureView から生成可能
DUT から信号を接続する(AXI I/Fなど)
- モデルの定義(SV class) denaliCdn_axiInstance の派生クラス定義
TB/denalicdn_axi_class_ext.sv
- 関数定義 (regWrite など)
- トランザクションの定義(SV class) denaliCdn_axiTransaction の派生クラス定義
TB/denalicdn_axi_class_ext.sv
=> 両定義はテストベンチファイルのモジュールの外側で include されることが前提
- テストベンチ内の VIP のインスタンス設定
MODEL/INST/axi_mst_udl_ch1_inst.sv
テストベンチファイルから include されることが前提
- wrapper モジュールのインスタンス宣言
port を接続
- package のインポート
- モデル インスタンス宣言
- トランザクション 変数宣言
- 上記変数の設定 (initial 文)
- new による denaliCdn_axiInstance VIP 変数の生成 (引数に VIP インスタンスのパスを指定)
- VIP 変数に callback 関数を登録
- VIP 変数に メモリセグメントを定義
- VIP 変数に VIP レジスタの初期値を設定
- new による transaction 変数の生成
--------------------------------------------------------------------
探す順番
$DENALIRC // Environment variable
.denalirc // Simulation specific defaults (current dir)
.denalirc // User Defaults
$DENALI/.denalirc //System Defaults
--------------------------------------------------------------------
class definition
class my_Cdn_ahbInstance extends denaliCdn_ahbInstance;
denaliMemInstance regInst ; // Handle to the register-space
denaliMemInstance memory ; //Handle to the internal memory of the device
function new(string instName);
super.new(instName);
regInst = new( { instName, "(registers)" } );
memory = new( { instName, "(memory)" } );
endfunction // new
...
endclass
--------------------------------------------------------------------
activeMaster.regWrite(addr,val)
regRead(addr)
Backdoor
memRead
memWrite
Preload memory from file
$mmload("pstest.axiActiveSlavedavice(memory)","file");
MemoryMap
axiActiveMaster.mapMemorySegment(from, to, domain);
Transaction
axiMasterInst.transAdd(masterBurst, BURST);
testbench
initial begin
activeMaster = new ("<path>");
burst = new();
burst.Direction
burst.StartAddr
burst.Size = 4;
burst.Length = 16;
Callback
Output files
history
trace
to Waveform, stripe chart
SystemVerilog interface
new()
transAdd()
setCallBack()
passive mode
AXI VIP
registers
DENALI_CDN_AXI_REG_EnableTracker
HasTrRecording
InitialMemoryValue
Transfer Ordering algorithm
round-robin ID
Preloading memory from external file
success = $mmload("pstest.axiActiveSlaveDevice(mem)", "mrdata");
Number_Bytesは転送サイズ(単位バイト)= 2^AWSIZE または 2^ARSIZE
Burst_Lengthはバースト長 = AWLEN+1 または ARLEN+1
--------------------------------------------------------------------
$DENALIRC が必須らしい
$DENALIRC. scripts/denali_set
sataDeviceDoInitDiag 1
sataBypassPlInit 0
.denalirc で enable にしたときだけ出ると思う
WARNING_VR_AXI1110_WSTRB_EQUAL_ZERO
接続検証 protocol checker 確認中 済 ★本物同士の間は passive をつけるべきか?