Uvmc packer max size

Hello,

I have a transaction with more than 4k bytes and I try to redefine size (changing from 4096 to 409600) from two files: uvm_pkg.sv and uvmc_common.h.

  • uvm_pkg.sv:38
    `define UVM_PACKER_MAX_BYTES 409600

  • uvmc_common.h:65
    `define UVM_PACKER_MAX_BYTES 409600

When I try to send a transaction (tlm2 with generic payload using sockets) from sv to sc the size error disappear, but the data received at sc is always zero after 4080 bytes.

Using:

  • uvmc 2.3.0
  • cadence ius 14.10

Thanks!

Hi,

You may wish to try the new “fast packers” feature of UVM-Connect 2.3.0.

They have no limitations on TLM generic payload data size.

Only requirement is that you parametrize your uvmc_connect() calls with the
new packer type.

Something like this from the examples/xlerate.connections/ example area:

For SystemC side:
uvmc_connect<uvmc_tlm_gp_converter>(prod.out,“42”);

For SV side:
uvmc_tlm #( uvm_tlm_generic_payload,
uvm_tlm_phase_e, uvmc_tlm_gp_converter) ::connect( loop.in, “42”);

– johnS

In reply to jstickle:

johnS,

It works, but I need to add template type to SystemC side too.

  • for SystemC side:
    old:
uvmc_connect(target_socket, "test");

new:

uvmc_connect<uvmc_tlm_gp_converter>(target_socket, "test");
  • for SV side:
    old:
uvmc_tlm #()::connect(prod.out, "test");

new:

uvmc_tlm #( uvm_tlm_generic_payload,uvm_tlm_phase_e, uvmc_tlm_gp_converter) ::connect( prod.out, "test");

Thanks!

– ciroceissler

In reply to ciroceissler:

Ciroceissler,

You are correct. My cut and paste was from the wrong place.

So yes you need to parametrize the packer type to the connect
call on both the SV side and SysC side as you state.

– johnS