• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Functional Verification
  3. xmsim/BSSXCD = The element count of bit-stream has reached...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 65
  • Views 2279
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

xmsim/BSSXCD = The element count of bit-stream has reached to a value that can cross the integer range in case anymore element gets added to bit-stream

Nandeesha
Nandeesha over 4 years ago

Hi
Here is my issue:
I have regenerated the register bank and register map for the updated xml (New registers have been added). The compilation is clean but when I run the simulation, it halts at ZERO time with the following error. [img][/img]

xmsim: *E,BSSXCD (/sw/cadence/xcelium/20.03.002/lnx86/tools/methodology/UVM/CDNS-1.2/sv/src/base/uvm_printer.svh,1118|17): No more element can be added to bit-stream - current size is [268433520] and further addition will cross the maximum permissible limit [268435455]. File: /sw/cadence/xcelium/20.03.002/lnx86/tools/methodology/UVM/CDNS-1.2/sv/src/base/uvm_printer.svh, line = 1118, pos = 17

Below is the uvm_table_printer function and I have added a comment at the error line (//ERROR LINE). You can also refer to this function in http://www.studio-muzzi.com/project/docs/UVMdocs_smu/uvm-1.1d/uvm__printer_8svh_source.html (Line 973-1055)

function string uvm_table_printer::emit();
 
  string s[$];
  string user_format;
  static string dash; // = "---------------------------------------------------------------------------------------------------";
  static string space; //= "                                                                                                   ";
  string dashes;
 
  string linefeed = {"\n", knobs.prefix};
 
  calculate_max_widths(); 
 
   begin
      int q[5];
      int m;
      int qq[$];
 
      q = '{m_max_name,m_max_type,m_max_size,m_max_value,100};
      qq = q.max;
      m = qq[0];
  	if(dash.len()<m) begin
  		dash = {m{"-"}};
  		space = {m{" "}};
  	end
  end
 
  if (knobs.header) begin
    string header;
    user_format = format_header();
    if (user_format == "") begin
      string dash_id, dash_typ, dash_sz;
      string head_id, head_typ, head_sz;
      if (knobs.identifier) begin
        dashes = {dash.substr(1,m_max_name+2)};
        header = {"Name",space.substr(1,m_max_name-2)};
      end
      if (knobs.type_name) begin
        dashes = {dashes, dash.substr(1,m_max_type+2)};
        header = {header, "Type",space.substr(1,m_max_type-2)};
      end
      if (knobs.size) begin
        dashes = {dashes, dash.substr(1,m_max_size+2)};
        header = {header, "Size",space.substr(1,m_max_size-2)};
      end
      dashes = {dashes, dash.substr(1,m_max_value), linefeed};
      header = {header, "Value", space.substr(1,m_max_value-5), linefeed};
 
      s.push_back({dashes, header, dashes});
    end
    else begin
      s.push_back({user_format, linefeed});
    end
  end
 
  foreach (m_rows[i]) begin
    uvm_printer_row_info row = m_rows[i];
    user_format = format_row(row);
    if (user_format == "") begin
      string row_str;
      if (knobs.identifier)
        row_str = {space.substr(1,row.level * knobs.indent), row.name,
                   space.substr(1,m_max_name-row.name.len()-(row.level*knobs.indent)+2)};
      if (knobs.type_name)
        row_str = {row_str, row.type_name, space.substr(1,m_max_type-row.type_name.len()+2)};
      if (knobs.size)
        row_str = {row_str, row.size, space.substr(1,m_max_size-row.size.len()+2)};
      s.push_back({row_str, row.val, space.substr(1,m_max_value-row.val.len()), linefeed});
    end
    else
     s.push_back({user_format, linefeed});
  end
 
 
  if (knobs.footer) begin
    user_format = format_footer();
    if (user_format == "")
      s.push_back(dashes);
    else
      s.push_back({user_format, linefeed});
  end
 
  begin
	  	string q = {>>{s}}; //ERROR LINE line = 1118, pos = 17
  		emit = q;
  end	
  m_rows.delete();
endfunction

Here is the sample of my regbank (There are many registers in this maps )
this.STATUS_file = STATUS_file_type::type_id::create("STATUS_file", null, get_full_name());
this.STATUS_file.configure(this,null,$sformatf("STATUS_file"));
this.STATUS_file.build();
this.STATUS_file.map(this.shibuya_regbank_mcu_map,`UVM_REG_ADDR_WIDTH'h0);
this.DIAG_STATUS_file = DIAG_STATUS_file_type::type_id::create("DIAG_STATUS_file", null, get_full_name());
this.DIAG_STATUS_file.configure(this,null,$sformatf("DIAG_STATUS_file"));
this.DIAG_STATUS_file.build();
this.DIAG_STATUS_file.map(this.shibuya_regbank_mcu_map,`UVM_REG_ADDR_WIDTH'h224);
---------------
--------------
It's really hard time for me to debug this issue. Please give me some inputs on what might be going wrong. I confirm to you that all the registers are with in the specified range. I don't understand what it has to do with the printing. I don't know how to increase/configure the bit-stream size.

Thanks in advance.

  • Cancel
  • muffi
    muffi over 4 years ago

    Hi Nandeesha,

    This BSSXCD error is issued when a very large UVM hierarchy is printed using uvm_top.print_topology().

    You will also see this message if you are trying to print an object using `uvm_info or uvm_report_info() and the size of the bit-stream exceeds the maximum permissible limit [268435455]

    As the error message states, the maximum permissible limit for the bit-stream size is 268435455. If the topology print crosses this limit, you can comment out the print_topology()call to avoid the error. If the error is due to printing a huge object, then consider reducing the number of elements being printed by using the UVM_NOPRINT automation flag to exclude a field for printing.

    The Verilog Stack Trace that is printed along with the error message will point you to the location of code which is causing the error.

    Please take a look at the following article on https://support.cadence.com where this is documented.

    Article (20479996) Title: How to prevent BSSXCD error when uvm_topology or uvm_info print exceeds the max permissible limit
    URL: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V0000090tKfUAI

    Thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information