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)
functionstring uvm_table_printer::emit(); strings[$];string user_format;staticstring dash;// = "---------------------------------------------------------------------------------------------------";staticstring space;//= " ";string dashes; string linefeed ={"\n", knobs.prefix}; calculate_max_widths(); beginint 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{" "}};endend if(knobs.header)beginstring header; user_format = format_header();if(user_format =="")beginstring 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)};endif(knobs.type_name)begin dashes ={dashes, dash.substr(1,m_max_type+2)}; header ={header,"Type",space.substr(1,m_max_type-2)};endif(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});endelsebegins.push_back({user_format, linefeed});endend foreach(m_rows[i])begin uvm_printer_row_info row = m_rows[i]; user_format = format_row(row);if(user_format =="")beginstring 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});endelses.push_back({user_format, linefeed});end if(knobs.footer)begin user_format = format_footer();if(user_format =="")s.push_back(dashes);elses.push_back({user_format, linefeed});end beginstring 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.