スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UVMを書いてみた(uvm_sequence_item)

まずは、データを定義するuvm_sequence_itemです。

今回、2ポートずつのWrite/Readが可能なRegister Fileの
検証を行うために検証環境(テストベンチ)を作るものとします。

○Writeポート側
class wr_transfer extends uvm_sequence_item; //--- uvm_sequence_itemを継承

rand bit[4:0] address;
rand bit[31:0] data;
rand bit[3:0] data_enable;
rand bit enable;

//--- 制約
//constraint c_data_enable { data_enable inside {0, 32'h0000_FFFF, 32'hFFFF_0000, 32'hFFFF_FFFF}; }

//--- fieldマクロへの登録
`uvm_object_utils_begin(wr_transfer)
`uvm_field_int (address, UVM_ALL_ON)
`uvm_field_int (data, UVM_ALL_ON)
`uvm_field_int (data_enable, UVM_ALL_ON)
`uvm_field_int (enable, UVM_ALL_ON)
`uvm_object_utils_end

// new - constructor
function new (string name = "wr_transfer");
super.new(name);
endfunction : new

endclass : wr_transfer


○Readポート側
class rd_transfer extends uvm_sequence_item; //--- uvm_sequence_itemを継承

rand bit[4:0] address;
bit[31:0] data;
rand bit enable;

//--- fieldマクロへの登録
`uvm_object_utils_begin(rd_transfer)
`uvm_field_int (address, UVM_ALL_ON)
`uvm_field_int (data, UVM_ALL_ON)
`uvm_field_int (enable, UVM_ALL_ON)
`uvm_object_utils_end

// new - constructor
function new (string name = "rd_transfer");
super.new(name);
endfunction : new

endclass : rd_transfer


`uvm_object_utilsマクロを使用することで、上位からの
set_config_xxxに対応することができます。
また、.print()にて表示されるようになります。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。