apb_rw.svファイル内のapb_rwクラスで、次のようになっています。
シーケンサに対するデータではないので、uvm_sequence_itemではなく、uvm_transactionの
方がいいと思う!(examples/simple/tlm2/basic_blockingと同じです)
examples/simple/tlm2/basic_blockingのapb_pkg.svに対して、package/endpackageで囲んでいます。
方がいいと思う!(examples/simple/tlm2/basic_blockingと同じです)
examples/simple/tlm2/basic_blockingのapb_pkg.svに対して、package/endpackageで囲んでいます。
package apb_pkg; // apb_pkgパッケージにする import uvm_pkg::*; // UVMパッケージを読み込む class apb_rw extends uvm_sequence_item; // uvm_sequence_itemを継承する typedef enum {READ, WRITE} kind_e; // typedef enumでkind_eを定義 rand bit [31:0] addr; // randを指定し、ランダム生成できるように rand logic [31:0] data; rand kind_e kind; `uvm_object_utils_begin(apb_rw) // set_config_xxx/get_config_xxxのためのおまじない `uvm_field_int(addr, UVM_ALL_ON | UVM_NOPACK); `uvm_field_int(data, UVM_ALL_ON | UVM_NOPACK); `uvm_field_enum(kind_e,kind, UVM_ALL_ON | UVM_NOPACK); `uvm_object_utils_end function new (string name = "apb_rw"); super.new(name); endfunction function string convert2string(); // print()を実行呼ばれたときに、実行される関数を定義 return $sformatf("kind=%s addr=%0h data=%0h",kind,addr,data); endfunction endclass: apb_rw endpackage
examples/simple/tlm2/basic_blockingと違う点がもう一つあります。
`include "uvm_macros.svh"がありません。
通常なら`uvm_xxxマクロを使っているので、このインクルード文は必要です。
では、なぜ無いのでしょうか?
では、なぜ無いのでしょうか?
それは、examples/Makefile.questaのVLOGマクロに
下記のように、uvm_pkg.svの中で、"uvm_macros.svh"をインクルードしているからです。
$(UVM_HOME)/src/uvm.svがあります。このファイル(uvm.sv)の内容は、
`include "uvm_pkg.sv"です。
下記のように、uvm_pkg.svの中で、"uvm_macros.svh"をインクルードしているからです。
`ifndef UVM_PKG_SV `define UVM_PKG_SV `include "uvm_macros.svh" package uvm_pkg; `include "dpi/uvm_dpi.svh" `include "base/base.svh" `include "tlm1/uvm_tlm.svh" `include "comps/comps.svh" `include "seq/seq.svh" `include "tlm2/tlm2.svh" `include "reg/uvm_reg_model.svh" endpackage `endif
MentorのQuestaでは、ソースコードはコンパイルされているので、
上記のuvm_pkg.svのソースコードは読み込まないので、ユーザーコードには、
上記のuvm_pkg.svのソースコードは読み込まないので、ユーザーコードには、
`include "uvm_macros.svh"が必要になります。
次の例題は、examples/simple/sequence/basic_read_write_sequence です。
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology