EDA - verdi提高dump效率的几种方法Conventional Issues & Verdi’s Approach

Posted 王万林 Ben

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EDA - verdi提高dump效率的几种方法Conventional Issues & Verdi’s Approach相关的知识,希望对你有一定的参考价值。

verdi提高dump效率的几种方法Conventional Issues & Verdi’s Approach

Issues and Conventional Approach
• Today’s complex SOC designs usually require huge amounts of data
for verification which introduces some problems when dealing with big simulation dump files.
• A common problem with complex design dumping is that the dumped simulation file may exceed the OS limitation, or the simulation
process may exceed the OS memory limitation during dumping.
• The work arounds is to limit the signal number by dumping from a specified scope in hierarchy or start dumping after a certain time.

Verdi’s Approach
• Verdi provides various environment variables and system tasks to restrict the FSDB file size in different constraints, to get the best balance between data accuracy and performance
• Verdi also provides a parallel dumping mechanism to speed up the dumping performance in dual CPU machines.

Restrict the FSDB File Size (1/4)
NOVAS_FSDB_ENV_WRITER_MEM_LIMIT variable:
• The default value is 64.
• When the user uses the nWave auto-update feature, the recommendation is to set this environment variable to a smaller value before running the simulation. For example:
% setenv NOVAS_FSDB_ENV_WRITER_MEM_LIMIT 20

Skip dumping VHDL complex data.
• Including array of array and record signals.
% setenv IGNORE_COMPLEX 1

Skip dumping Verilog cell instances
• To skip the FSDB dumping for primitive cells, for example:
% setenv SKIP_CELL_INSTANCE 1

Restrict the FSDB File Size (2/4)
Use 𝑓𝑠𝑑𝑏𝐴𝑢𝑡𝑜𝑆𝑤𝑖𝑡𝑐ℎ𝐷𝑢𝑚𝑝𝑓𝑖𝑙𝑒𝑡𝑜𝑟𝑒𝑑𝑢𝑐𝑒𝑡ℎ𝑒𝑠𝑖𝑧𝑒𝑎𝑛𝑑𝑐𝑜𝑛𝑡𝑟𝑜𝑙𝑡ℎ𝑒𝑛𝑢𝑚𝑏𝑒𝑟𝑜𝑓𝐹𝑆𝐷𝐵𝑓𝑖𝑙𝑒𝑠.•𝐹𝑜𝑟𝑒𝑥𝑎𝑚𝑝𝑙𝑒,𝑖𝑓𝑡ℎ𝑒𝑚𝑎𝑥𝑖𝑚𝑢𝑚𝑑𝑒𝑠𝑖𝑟𝑒𝑑𝐹𝑆𝐷𝐵𝑓𝑖𝑙𝑒𝑠𝑖𝑧𝑒𝑖𝑠1𝐺𝑎𝑛𝑑𝑎𝑡𝑚𝑜𝑠𝑡20𝐹𝑆𝐷𝐵𝑑𝑢𝑚𝑝𝑓𝑖𝑙𝑒𝑠𝑐𝑎𝑛𝑏𝑒𝑐𝑟𝑒𝑎𝑡𝑒𝑑,𝑎𝑑𝑑𝑓𝑜𝑙𝑙𝑜𝑤𝑖𝑛𝑔𝑡𝑎𝑠𝑘𝑖𝑛𝑠𝑜𝑢𝑟𝑐𝑒𝑐𝑜𝑑𝑒:

fsdbAutoSwitchDumpfile(1000, “ALU.fsdb”, 20, “my.log”);
• Where 1000 (1G) is the size of each file and 20 is the number of dump files.

Use 𝑓𝑠𝑑𝑏𝐷𝑢𝑚𝑝𝑣𝑎𝑟𝑠𝑡𝑜𝑟𝑒𝑑𝑢𝑐𝑒𝑡ℎ𝑒𝑛𝑢𝑚𝑏𝑒𝑟𝑜𝑓𝑠𝑐𝑜𝑝𝑒𝑠𝑡𝑜𝑏𝑒𝑑𝑢𝑚𝑝𝑒𝑑.•𝐹𝑜𝑟𝑒𝑥𝑎𝑚𝑝𝑙𝑒,𝑡𝑜𝑠𝑡𝑎𝑟𝑡𝑑𝑢𝑚𝑝𝑖𝑛𝑔𝑓𝑟𝑜𝑚𝑠𝑐𝑜𝑝𝑒𝑡𝑜𝑝.𝑢𝑓𝑜𝑜.𝑢𝑏𝑎𝑟𝑤𝑖𝑡ℎ𝑑𝑒𝑝𝑡ℎ=3𝑎𝑛𝑑𝑑𝑢𝑚𝑝𝑖𝑛𝑔𝑙𝑜𝑐𝑎𝑡𝑖𝑜𝑛𝑎𝑛𝑑𝑓𝑖𝑙𝑒𝑛𝑎𝑚𝑒𝑜𝑓…/𝑙𝑜𝑔/𝑡𝑒𝑠𝑡1.𝑢𝑏𝑎𝑟.3.𝑓𝑠𝑑𝑏,𝑎𝑑𝑑𝑓𝑜𝑙𝑙𝑜𝑤𝑖𝑛𝑔𝑡𝑎𝑠𝑘𝑖𝑛𝑡𝑜𝑠𝑜𝑢𝑟𝑐𝑒𝑐𝑜𝑑𝑒(𝑜𝑟𝑡𝑒𝑠𝑡𝑏𝑒𝑛𝑐ℎ):𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑏𝑒𝑔𝑖𝑛

fsdbDumpfile ("…/log/test1.u_bar.3.fsdb");
$fsdbDumpvars (3, top.u_foo.u_bar);
end

Restrict the FSDB File Size (3/4)
Use 𝑓𝑠𝑑𝑏𝑆𝑢𝑝𝑝𝑟𝑒𝑠𝑠𝑡𝑜𝑠𝑢𝑝𝑝𝑟𝑒𝑠𝑠𝑡ℎ𝑒𝑠𝑐𝑜𝑝𝑒𝑠𝑡ℎ𝑎𝑡𝑠ℎ𝑜𝑢𝑙𝑑𝑛𝑜𝑡𝑏𝑒𝑑𝑢𝑚𝑝𝑒𝑑.•𝐹𝑜𝑟𝑒𝑥𝑎𝑚𝑝𝑙𝑒,𝑖𝑓𝑛𝑜𝑡𝑔𝑜𝑖𝑛𝑔𝑡𝑜𝑑𝑢𝑚𝑝𝑠𝑐𝑜𝑝𝑒“𝑠𝑦𝑠𝑡𝑒𝑚.𝑖𝑝𝑟𝑎𝑚”𝑎𝑛𝑑“𝑠𝑦𝑠𝑡𝑒𝑚.𝑖𝑐𝑝𝑢.𝑖𝐶𝐶𝑈”,𝑎𝑑𝑑𝑓𝑜𝑙𝑙𝑜𝑤𝑖𝑛𝑔𝑡𝑎𝑠𝑘𝑖𝑛𝑡𝑜𝑠𝑜𝑢𝑟𝑐𝑒𝑐𝑜𝑑𝑒𝑜𝑟𝑡𝑒𝑠𝑡𝑏𝑒𝑛𝑐ℎ:

fsdbSuppress(system.i_pram, system.i_cpu.i_CCU);
$fsdbDumpvars;

Use 𝑓𝑠𝑑𝑏𝐷𝑢𝑚𝑝𝑀𝑒𝑚/
fsdbDumpMDA to dump the relevant cells of the memory/MDA at specific time intervals.
• Dump the memory cells from mem[0] to mem[31] at the time the system task is called:
𝑓𝑠𝑑𝑏𝐷𝑢𝑚𝑝𝑀𝑒𝑚(𝑚𝑒𝑚,0,32);•𝐷𝑢𝑚𝑝𝑡ℎ𝑒𝑚𝑒𝑚𝑜𝑟𝑦𝑐𝑒𝑙𝑙𝑠𝑓𝑟𝑜𝑚𝑚𝑒𝑚[0]𝑡𝑜𝑚𝑒𝑚[31]𝑎𝑓𝑡𝑒𝑟23𝑠𝑖𝑚𝑢𝑙𝑎𝑡𝑖𝑜𝑛𝑡𝑖𝑚𝑒𝑢𝑛𝑖𝑡𝑠𝑤ℎ𝑒𝑛𝑡ℎ𝑒𝑡𝑟𝑖𝑔𝑔𝑒𝑟𝑠𝑖𝑔𝑛𝑎𝑙,𝑊𝑅𝐸𝑁𝐴𝐵𝐿𝐸,𝑐ℎ𝑎𝑛𝑔𝑒𝑠𝑡𝑜1:

fsdbDumpMem(mem, 0, 32, , WR_ENABLE, 23);
• Evaluate the value of signal WR_ENABLE at #0, #500, #1000… If WR_ENABLE=1, dump all memory cells of mem after 20 time units:
$fsdbDumpMem(mem, , , 500, WR_ENABLE, 20);

Restrict the FSDB File Size (4/4)
Use 𝑓𝑠𝑑𝑏𝐷𝑢𝑚𝑝𝑜𝑛𝑎𝑛𝑑
fsdbDumpoff to change the start and stop dumping time for the needed time interval.
• For example, to generate a FSDB file that will record all the scopes from 1000 time units to 70000 time units, add the following to the testbench:
initial begin
fsdbDumpvars; #1000

fsdbDumpoff;
#70000 $fsdbDumpon;
end

Use environment variables to prevent dumping of glitches and event sequence information.
• NOVAS_FSDB_ENV_MAX_GLITCH_NUM is used to specify glitch dumping:
• Default: does not record glitches
• 0: all glitches are stored.
• 1: the last glitch is stored.
• 2: the first and the last glitch are stored
• NOVAS_FSDB_ENV_DUMP_SEQ_NUM set to ‘on’ is used to enable event sequence dumping.

Parallel Dumping for FSDB
Two functions are includedin the process when dumping FSDB:
• Running the simulation and
• Writing the FSDB.
Use parallel dumping mechanism to separate these two process in a multi-processor system.
Two ways to run simulation in parallel mode:
• Add +fsdb_parallel option in command line when running
simulation.
• Set environment variable FSDB_PARALLEL before running
simulation.
• setenv FSDB_PARALLEL 1

Summary
Use environment variables and system tasks to get balance between accuracy and performance when dumping FSDB.
• NOVAS_FSDB_ENV_WRITER_MEM_LIMIT
• IGNORE_COMPLEX
• SKIP_CELL_INSTANCE
• 𝑓𝑠𝑑𝑏𝐴𝑢𝑡𝑜𝑆𝑤𝑖𝑡𝑐ℎ𝐷𝑢𝑚𝑝𝑓𝑖𝑙𝑒•
fsdbDumpvars
• 𝑓𝑠𝑑𝑏𝑆𝑢𝑝𝑝𝑟𝑒𝑠𝑠•fsdbDumpMem/𝑓𝑠𝑑𝑏𝐷𝑢𝑚𝑝𝑀𝐷𝐴•

fsdbDumpon and $fsdbDumpoff
• NOVAS_FSDB_ENV_MAX_GLITCH_NUM and NOVAS_FSDB_ENV_DUMP_SEQ_NUM
Use command line option +fsdb_parallel or environment variable FSDB_PARALLEL to improve the dumping performance on dual CPU machines.
狠芯低成本,专芯低功耗,计划高性能。

转载信息

URL:https://www.cnblogs.com/chip/articles/4353563.html

以上是关于EDA - verdi提高dump效率的几种方法Conventional Issues & Verdi’s Approach的主要内容,如果未能解决你的问题,请参考以下文章

提升Python编程效率的几种方法

创建.NET程序Dump的几种姿势

抓取win32程序崩溃dump文件的几种方法

抓取win32程序崩溃dump文件的几种方法

django序列化的几种方法

sql优化的几种方法