UVMでも基本的には、同じ。
OVMにおけるConfigurationは、
function void set_config_int (string inst_name, string field_name, ovm_bitstream_t value); function void set_config_string (string inst_name, string field_name, string value); function void set_config_object (string inst_name, string field_name, ovm_object value, bit clone=1); function bit get_config_int (string field_name, inout ovm_bitstream_t value); function bit get_config_string (string field_name, inout string value); function bit get_config_object (string field_name, inout ovm_object value, input bit clone=1);によって行うことができます。
それから、ovm_containerクラスを使います。
class ovm_container #( type T = int ) extends ovm_object; typedef ovm_container #( T ) this_t; T t; static function void set_value_in_global_config( string config_id , T t ); … endfunction static function T get_value_from_config( ovm_component c , string config_id ); … endfunction endclass
module top(); import ovm_pkg::*; import test_pkg::*; import ovm_container_pkg::*; typedef ovm_container #( virtual ready_valid_if ) container_t; ready_valid_if m_ready_valid_if1( clk ); ready_valid_if m_ready_valid_if2( clk ); // instantiate the DUT // connect the interfaces to the DUT initial begin // tell the test about the virtual interfaces container_t::set_value_in_global_config(“READY_VALID_IF_1” , m_ready_valid_if1); container_t::set_value_in_global_config(“READY_VALID_IF_2” , m_ready_valid_if2); // start the test run_test(“test”); end endmodule
検証、Verification、SystemVerilog、OVM、Open Verification Methodology