[Connection Error] connection count of 0 does not meet required minimum of 1

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