検証環境のコード ガイドラインは、ファイルごとに 1 つのクラスです。
uvm_object
aは 1 つの other でのみ必要な場合があるuvm_component
ため、オブジェクト指向の理論に従って、ネストされた/内部クラスを使用する必要があります。
ネストされたクラスは、SystemVerilog で完全にサポートされています。しかし、それらは UVM でサポートされていますか?
次のようなものをコンパイルすることは可能ですか:
class inception_level_1 extends uvm_test;
`uvm_component_utils(inception_level_1)
function new(string name = "inception_level_1", uvm_component parent = null);
super.new(name, parent);
endfunction
class inception_level_2 extends uvm_object;
int a;
`uvm_object_utils_begin(inception_level_2)
`uvm_field_int(a, UVM_DEFAULT)
`uvm_object_utils_end
function new(string name = "inception_level_2");
super.new(name);
endfunction
endclass
endclass
現在、上記のコードではコンパイル エラーが発生します。
** Error: testbench.sv(20): (vlog-2889) Illegal to access non-static method 'uvm_report_warning' outside its class scope.
完全なコード例: http://www.edaplayground.com/x/3r8