TLM - Port and export Connection

Hello all
I was trying to connect the port and export of TLM 1.0 and I was getting the following errors. It was working fine for imp port.

Errors:

UVM_ERROR @ 0: uvm_test_top.env.comp_b.trans_in [Connection Error] connection count of 0 does not meet required minimum of 1

UVM_ERROR @ 0: uvm_test_top.env.comp_a.trans_out [Connection Error] connection count of 0 does not meet required minimum of 1

UVM_FATAL @ 0: reporter [BUILDERR] stopping due to build errors

Code:
TLM-port-export - EDA Playground

I think the connection is not done between port & export. Show the code where you are connecting port & export.

In reply to shanthi:

I think the connection is not done between port & export. Show the code where you are connecting port & export.

Hello Shanthi
I have connected port and export in the environment. Here is a snippet of it

  
function void connect_phase(uvm_phase phase);
    comp_a.trans_out.connect(comp_b.trans_in);
endfunction : connect_phase

In reply to Malai_21:

Hello all
I was trying to connect the port and export of TLM 1.0 and I was getting the following errors. It was working fine for imp port.
Errors:

UVM_ERROR @ 0: uvm_test_top.env.comp_b.trans_in [Connection Error] connection count of 0 does not meet required minimum of 1

UVM_ERROR @ 0: uvm_test_top.env.comp_a.trans_out [Connection Error] connection count of 0 does not meet required minimum of 1

UVM_FATAL @ 0: reporter [BUILDERR] stopping due to build errors

You can’t connect a uvm_blocking_put_port with an uvm_blocking_put_export. For details see the UVM Standard chapter 5.5.2.14 connect.
A uvm_blocking_put_port can be connected only to a uvm_put_export or a uvm_blocking_put_imp. The imp provides the put task.

In reply to Malai_21:

**The real issue is that *_port and _export NEED to be Ultimately connected to an _imp type

In your code you have connected a port to an export so these these 2 are NEVER Connected to
an imp Ultimately .

Refer_this_modified_Code_which_works

In reply to chr_sue:

I believe this would an error !!

You can’t connect a uvm_blocking_put_port to a uvm_put_export .

In reply to ABD_91:

In reply to Malai_21:
**The real issue is that *_port and _export NEED to be Ultimately connected to an _imp type
In your code you have connected a port to an export so these these 2 are NEVER Connected to
an imp Ultimately .
Refer_this_modified_Code_which_works

Hello
why do we need to connect *_export to *_imp port? you mean to say port and export can’t be connected?

In reply to ABD_91:

In reply to chr_sue:
I believe this would an error !!
You can’t connect a uvm_blocking_put_port to a uvm_put_export .

Yes, the uvm_blocking_put_pot and uvm_put_export connection is not working. Getting the same error as before.

port & export can be connected , but again export should be connected to implementation port. Finally the port connection should be terminated with an implementation port which implements the methods defined by a port.

In reply to shanthi:

To clarify: I did not say uvm_put_export is working in this case. In this case it is working only with the imp, because the imp has to provide the put method.

With my earlier statement I was refering to the UVM Standard 5.5.2.14 connect. There you can read:
b) The provider’s interface type (blocking, non-blocking, analysis, etc.) shall be compatible, e.g., an
uvm_blocking_put_port #(T) is compatible with an uvm_put_export #(T) and
uvm_blocking_put_imp #(T) because the export and imp provide the interface required
by the uvm_blocking_put_port.

In reply to chr_sue:

In reply to shanthi:
To clarify: I did not say uvm_put_export is working in this case. In this case it is working only with the imp, because the imp has to provide the put method.
With my earlier statement I was refering to the UVM Standard 5.5.2.14 connect. There you can read:
b) The provider’s interface type (blocking, non-blocking, analysis, etc.) shall be compatible, e.g., an
uvm_blocking_put_port #(T) is compatible with an uvm_put_export #(T) and
uvm_blocking_put_imp #(T) because the export and imp provide the interface required
by the uvm_blocking_put_port.

Hello
Then, what should be done in order to connect uvm_blocking_put_port#(T) and uvm_put_export#(T)?

In reply to shanthi:

port & export can be connected , but again export should be connected to implementation port. Finally the port connection should be terminated with an implementation port which implements the methods defined by a port.

Hello
It was working fine. I just wanna connect uvm_blocking_put_port#(T) and uvm_put_export#(T) as mentioned in LRM.