Hello,
I’m trying to instantiate a virtual sequencer whose definition looks something like
class spi_seq_driver extends ovm_sequencer;
// some fields
...
`ovm_sequencer_utils(spi_seq_driver)
function new(string name, ovm_component parent = null);
super.new(name, parent);
`ovm_update_sequence_lib
endfunction : new
endclass : spi_seq_driver
...
class spi_demo_tb extends ovm_env;
...
function void build();
...
spi_seq_driver0 = spi_seq_driver::type_id::create("spi_seq_driver0", this);
endfunction : build
endclass : spi_demo_tb
class spi_demo_base_test extends ovm_test;
...
virtual function void build();
...
set_config_string("spi_demo_tb0.spi_seq_driver0", "default_sequence", "main_seq");
endfunction : build
endclass : spi_demo_base_test
…and that’s about it(main_seq is an ovm_sequence).
When running with Questa6.4a, I get
OVM_INFO @ 0 [RNTST] Running test spi_demo_base_test…
OVM_ERROR @ 0: ovm_test_top.spi_demo_tb0.spi_seq_driver0.rsp_export [Connection Error] connection count of 0 does not meet required minimum of 1
OVM_FATAL @ 0 [ovm] elaboration errors
My investigation revealed that ovm_sequencer_param_base has a field
// Response Analysis Fifo
ovm_analysis_export #(RSP) rsp_export;
Am I missing something here? Should I bind this port to …? I do not really need it right now…
Thank you
Fixed.
Unlike build(), connect() is called down-top fashion. This resulted in some null pointers at run-time(although I wasn’t explicitly accessing them…).
My apologies for the noise.
I recently received a similar error whilst building a sequencer and because of the top down nature of connect i needed to do a super.connect() to make sure rsp_export is connected otherwise i got the same error.
class slfbrc_fbrc_master_sequencer extends ovm_sequencer #(slfbrc_dm_fbrc_transfer);
//
// OVM transaction interfaces
//
ovm_analysis_export #(slfbrc_dm_fbrc_transfer) item_collected_export;
local tlm_analysis_fifo #(slfbrc_dm_fbrc_transfer) fbrc_fifo;
//
// Fields
//
slfbrc_dm_fbrc_config m_config;
slfbrc_dm_fbrc_transfer transfer;
//
// OVM automation macros for sequencers
//
`ovm_sequencer_utils_begin(slfbrc_fbrc_master_sequencer)
`ovm_field_object ( m_config, OVM_ALL_ON)
`ovm_sequencer_utils_end
//
// Constructor
//
function new (string name = "slfbrc_fbrc_master_sequencer", ovm_component parent);
super.new(name, parent);
`ovm_update_sequence_lib_and_item(slfbrc_dm_fbrc_transfer)
endfunction : new
//build
function void build();
super.build();
item_collected_export = new("item_collected_export", this);
fbrc_fifo = new("fbrc_fifo", this);
endfunction
virtual function void connect();
**<font color=red>super.connect();</font>**
item_collected_export.connect(fbrc_fifo.analysis_export);
endfunction
endclass : slfbrc_fbrc_master_sequencer
In reply to adamwalker:
Hi, i am getting this error too. But in UVM.
I am getting this error.I connected my scoreborad vip_export port which is analysis port with observer port of my usb agnet in connect_phase and even new the vip_export in new phase of scoreboard.
I am getting this UVM_INFO which i couldnt able to understanad
UVM_INFO /h/tool_linux/synopsys/vcs/2012.09/etc/uvm-1.1/base/uvm_resource_db.svh(129) @ 0.000 ns: reporter [CFGDB/GET] Configuration
‘uvm_test_top.mss1_tb_env.usb_scoreboard.vip_export.check_connection_relationships’ (type logic signed[4095:0]) read by uvm_test_top.mss1_tb_env.usb_scoreboard.vip_export = null (failed lookup)
thanks,
Vinay