verdi方法fsdbreport将fsdb的某个信号值抽出为可读文件 及波形转换,合并,修改工具,Verdi培训整理笔记

目录

1.fsdbreport可以将fsdb的某个信号值抽出

2.fsdbreport manual

3.其他使用工具


0.Verdi培训整理笔记

文档记录在个人百度网盘

1.fsdbreport可以将fsdb的某个信号值抽出

该功能在波形比较的时候有大用。举例:

这个命令是将psel==1&penable==1&pwrite==0&pready==1时对应的prdata数据写到tmp_prdata.txt文件中,可以不加-exp条件,直接写出prdata数据,注意这个数据只在跳变的时候写出 -w 32是指定prdata的位宽

 

-bt :begin time

-et:end time

以上可以设置dump的开始结束时间,有时我们只需要某个时刻的值

-cn:设置显示列数, 0 表示所有满足的信号以一列形式显示

-s:后面可跟多个信号或信号范围,可带通配符 " * "

显示结果如下:满足i_*,和o_*的信号按列显示在time=1000ns=1000000000fs的信号值

还有其他很多用法可以在Synopsys官网上找到。下面贴出官网的手册

2.fsdbreport manual

fsdbreport is a utility to generate an ASCII text file of value change lists for specified signals from an FSDB dump file.
NOTE:    fsdbreport supports FSDB files with transaction-type signals with the following exceptions:
1) Transaction type signals cannot be used with -strobe or 
-levelstrobe options. Otherwise, error messages similar to the following are printed to the console:
*WARN* Transaction type signal </BusTop/MyAHB_1/AhbTransaction> cannot be used with -strobe!
*WARN* Report stop!
*WARN* Transaction type signal </BusTop/MyAHB_1/AhbTransaction> cannot be used with -levelstrobe!
*WARN* Report stop!

2) To accommodate the long and variable length of transaction type value changes, fsdbreport automatically uses a non-table format report (that is, -cn 0) whenever a transaction type signal exists in the signal list. The output format looks like the following:

Time:0
SystemC/HRESP    00
SystemC/HADDR    00000000000000000000000000000000
SystemC/HWRITE    0
Time:60000
/BusTop/MyAHB_1/AhbTransaction
*** single read (0 60000)-(0 140000) ***
Command=single read
Master='d 2
Slave='d 2
StartAddress='d 14526
Data="00000000000000000000000010101010"
Response=split
BurstType=single
BeatCount='d 1
SizePerBeat=1 byte

3) The -of and -af options do not change the output format of a transaction's attribute value.
Usage:
fsdbreport fsdb_filename [-f config_file] [-bt time[unit]] [-et time[unit]] 
[-nocase] [-w column_width] [-of output_format] [-verilog | -vhdl] -s {signal [-level level_depth] [-a name] [-w column_width] [-af alias_file] 
[-of [b|o|d|u|h]] [-verilog|-vhdl] [-precision precision_value]}[-strobe [signal=="value"] [-a name] [-w column_width] [-verilog|-vhdl]] 
[-levelstrobe "expression"] [-a name] [-w column_width] [-verilog|-vhdl]] 
[-shift shift_time | -shiftneg shiftneg_time] [-period period_time] 
[-cn column_number] [-log filename] [-o reported_filename] 
[-pt time_precision] [-csv] [-find_forces [-no_value] [-no_fdr_glitch]] [-ignore_2G][-first_force]
Options
Explanation
-a alias_name
Defines the alias for the output signal.
-af alias_file
Specifies an nWave waveform alias file.
NOTE: Specifies the -af option must be specified for each signal. For example:
-s
/tb/chip/lbu/core/dmac/haddr -a haddr -af novas.alias
/tb/chip/lbu/core/dmac/hwdata -a hwdata -af novas.aliafsdbs
-bt time[unit]
Specifies the begin time of the report. If omitted, the begin time of the FSDB file is used. The time unit is Ms, Ks, s, ms, us, ns, ps, or fs. The default time unit is ns.
-cn column_number
Defines the number of columns for the report, including the time column. Column number is set to be 0 or an integer larger than 1. When setting to 0, the signal name and its value are not printed in the format of a table, but line by line.
NOTE: This option is ignored if the -csv option is also specified.
-csv
Saves the output report file in the CSV format. If this option is specified with -cn and -w, these options are ignored.
NOTE: If the selected signals contain stream, coverage, or SVA type signals, the -csv option is ignored and non-csv format is output.
-et time[unit]
Specifies the end time of the report. If omitted, the end time of the FSDB is used. The time unit is Ms, Ks, s, ms, us, ns, ps, or fs. The default time unit is ns.
-exclude_scope "scope1" ["scope2" … "scopeN"]
Excludes signals under the specified scopes. Each scope is enclosed with double quotes. To exclude subscopes of the specified scopes, the wildcard character "*" is appended at the end of the scopes.
Example:
-find_forces -exclude_scope "/system/cpu/*" "/system/s1"
NOTE:
1) Use this option with the -find_forces option.
2) The -exclude_scope option has higher priority than the -s option.
-exp expression
Reports values when the expression changes to true (==1). The expression syntax is the same as the Logical Operation command under the Signal menu in nWave.
Example: fsdbreport verilog.fsdb -s system/data -exp "/system/addr=='h30 & /system/clock==1"
-f config_file
Specifies a text file which defines all the options except -h and -f. The pound (#) sign isadded to the beginning of a line as a comment line.
Example:
fsdbreport example.fsdb -f config_file -o output.txt
-find_forces
Shows signals with force, release, or deposit events and the signal values.
-h | -help
Prints the help message.
-level level_depth
Specifies the number of levels to be dumped under the specified scope. Use this option with the -s option.
When set to 0, all signals below the specified scope is dumped.
-levelstrobe "expression"
Dumps values when the expression holds true (level sampling). If the expression is not true, the time point and value are not dumped. The expression can consist of one strobe signal (for example, "a==1") or multiple strobe signals (for example, "a==1 && b==1"). The -strobe and -levelstrobe options cannot be used together.
Example:
fsdbreport verilog.fsdb -levelstrobe "/system/clock==1 && /system/sig==1" -s /system/data /system/addr
-log filename
Specifies the output log file name. The default file name is err.log.
-nolog
Disables generation of the fsdbreportLog log directory.
-nocase
When included, the mapping of signal names is not case-sensitive. The default is case-sensitive.
-no_fdr_glitch
Shows the stable value for force, release, and deposit events.
NOTE: This option is optional and is used with the -find_forces option; otherwise, it is ignored.
-no_value
Disables value display of force, release, and deposit events.
NOTE: This option is optional and is used with the -find_forces option; otherwise, it is ignored.
-o reported_file_name
Specifies the output report file name. If the -o option is not specified, the default is report.txt.
-of [b|o|d|u|h]
Defines the output display format as binary, octal, decimal, unsigned decimal, or hexadecimal. Its default value is binary. When this option is specified before the -s option, it is applied globally. When this option is specified after a signal, it is applied locally.
-period period_time
Dumps values at each specified time.
-precision precision_value
Defines the precision (the number of decimal places to include) of output values for analog signal types. This option is ignored for digital signal types.
Example:
- Original output without the -precision option:
> fsdbreport test.tr0.fsdb -s "I(vcc"
 
Time(1.0) I(vcc 
========== ==========
0.000000e+00 -10.0pA
5.000000e-11 23.4nA
1.000000e-10 25.0nA
3.000000e-10 30.4nA
1.100000e-09 41.0nA
2.100000e-09 43.3nA
3.100000e-09 43.4nA
- Report with the -precision 7 option:
> fsdbreport test.tr0.fsdb -s "I(vcc" -precision 7 -w 20 
-o report_with_precision_5.txt
 
Time(1.0) I(vcc 
========== ====================
0.000000e+00 -1.0000000e-11A
5.000000e-11 2.3453000e-08A
1.000000e-10 2.5039000e-08A
3.000000e-10 3.0451002e-08A
1.100000e-09 4.1056001e-08A
2.100000e-09 4.3309001e-08A
3.100000e-09 4.3463999e-08A
4.100000e-09 4.3423999e-08A
5.100000e-09 4.3402000e-08A
6.100000e-09 4.3387999e-08A
7.100000e-09 4.3374001e-08A
-pt time_precision
Defines the time precision (the number of decimal places to include) of the output value for analog signal types. This option is ignored for digital signal types.
Example:
fsdbreport hspice.fsdb -s "/v(_be0" -pt 5 -o 1.txt
-s {signal_name [options]}
Specifies the signals or scopes to be reported. When specifying a scope name, the wildcard character "*" is appended to the end with double quotes. At least one -s must be included.
NOTE: For system tasks or system functions, when a scope or signal name begins with '$' (for example, $root), it denotes a variable in the Unix shell, and gives a warning that the variable root value is not obtained. To avoid this error usage, use single quotes (') to replace double quotes ("). For example:
fsdbreport test.fsdb -s '/$root/En_a' -o test_report.txt
NOTE: If the output format needs to be specified for multiple signals, the output specification must immediately follow each of the desired signals. For example:
fsdbreport test_fsdb.fsdb -o multi_scope.txt
-s "/U_core_top*" -precision 5 -w 17 
"/U_pad_ring*" -precision 6 -w 20 -bt 555 -et 555
-precision 5 -w 17 belongs to the "/U_core_top*" signal 
-precision 6 -w 20 belongs to the "/U_pad_ring*" signal
If the following are specified, the -precision 6 -w 20 only belongs to /U_pad_ring:
fsdbreport test_fsdb.fsdb -o multi_scope.txt 
-s "/U_core_top*" "/U_pad_ring*" -precision 6 -w 20 
-bt 555 -et 555 -cn 20
-shift | -shiftneg
Specifies to shift (plus) or shiftneg (minus) the report time when the strobe signal matches the specified value. Use this option with the -strobe option.
Example: fsdbreport verilog.fsdb -shift 10 
-s "system/VMA" -strobe "system/clock==1" -o 1
Samples the value for VMA 10 time units after the clock becomes 1.
fsdbreport verilog.fsdb -shiftneg 300ps -s "system/VMA" 
-strobe "system/clock==1" -o 1
Samples the value for VMA 300ps before clock becomes 1.
-strobe "expression"
Reports values when the value of the strobe signal changes to the specified value (edge sampling). The strobe is in the format of “signal==value”. For multi-bit signals, the value is in binary without leading zeros.
-verilog | -vhdl
Specifies the output format as Verilog or VHDL format. When this option is specified before the -s option, it is applied globally. When this option is specified after a signal, it is applied locally.
-w column_width
Defines the width of the signal column. When this option is specified before the -s option, it is applied globally. When this option is specified after a signal, it is applied locally. The default column width is 10. If the width of the signal or value is greater than the specified column, then '*' is used in the signal or value. For example, if /system/addr is an 8-bit bus:
> fsdbreport verilog.fsdb -w 5 -s /system/addr
*addr is reported with values, such as, *0000 in report.txt.
For the strobe, level_strobe or expression signal, if the width is less than the maximum time width, the width is automatically expanded to the maximum time width.
NOTE: This option is ignored if the -csv option is also specified.
-ignore_2G
Reports FSDB if the signal count of input FSDB is over 2G.
Reporting fails if the count of user interested signal is over 2G.
-first_force
Only shows the first force event for signal. This option works only with the -find_forces option.
Examples:
1. Assign the begin time (1000ps) and end time (2000ps) for the report. The value of the end time must be greater than the value of the begin time; otherwise, no output is generated.
> fsdbreport verilog.fsdb -s /system/addr -bt 1000ps -et 2000ps
2. Report multiple signals. Only one -s option takes effect. If two or more are specified, only the last -s takes effect. For example, the following commands lead to the same result with addr being reported only:
> fsdbreport verilog.fsdb -s /system/clock -s /system/addr
> fsdbreport verilog.fsdb -s /system/addr
However, both clock and addr are reported with the following command:
> fsdbreport verilog.fsdb -s /system/clock /system/addr
3. Report a slice of a bus signal. The MSB and LSB of the partial bus must match the original bus. For example, if there is the addr[7:0] bus, bits 7, 6, 5, and 4 are extracted with the following command:
> fsdbreport verilog.fsdb -s "/system/addr[7:4]"
If the following command is executed, nothing is extracted:
> fsdbreport verilog.fsdb -s "/system/addr[4:7]"
4. Report signals in the signal list using different formats.
> fsdbreport fsdb/vhdl_typecase.fsdb -nocase -s top/SIMPLE_REC.FIELD3
-a simple.field3 -w 15 TOP/COMPLEX_REC.F1.FIELD3 -a complex.f1.field3
-w 20 top/a_std_logic_vector -af sean2.alias -of a -o output.txt
-bt 1000 -et 2000
 
simple.field3 is reported as the alias for the top/SIMPLE_REC.FIELD3 signal, complex.fl.field3 is reported as the alias for the TOP/COMPLEX_REC.F1.FIELD3 signal, and the alias values in sean2.alias are reported for the top/a_std_logic_vector signal.
5. Report signals using different output formats. For example, the formats are applied globally with the following command:
> fsdbreport verilog.fsdb -w 15 -of d \
-s /system/addr /system/clock
 
The column width is 15 and the radix is decimal for both /system/addr and /system/clock.
The following command applies column width of 12 and radix of 16 (hexadecimal) locally to /system/addr.
> fsdbreport verilog.fsdb -w 15 -of d -s /system/addr -w 12 \
-of h /system/clock
 
However, column width of 15 and radix of 10 (decimal) are applied globally to /system/clock.
6. Report a scope and its descendants. Multiple scopes may be specified.
> fsdbreport rtl.dump.fsdb -bt 10 -et 100 \
-s "/system/i_cpu/*" -level 3 /system/i_pram/clock -cn 0
Up to 3 levels of scopes below /system/i_cpu and the /system/i_pram/clock signal between 10-100ns are reported. The results are printed line by line.
7. Report the results for the specified strobe point using -strobe.
> fsdbreport verilog.fsdb -strobe "/system/clock==1" -s /system/data /system/addr
 
Only when the value of the /system/clock signal is 1, the values of the 
/system/data and /system/addr signals are reported.
8. Specify a configuration file. In the configuration file, all the command options (except -h or -f) are specified in a single line or multiple lines. The fsdbreport utility reads them in order. For example, the following three files generate the same extracted results:
File1:
-w 12 -s /system/addr /system/clock
-w 15 -et 1200
File2:
-w 12
-s /system/addr /system/clock -w 15 -et 12000
File3:
-w 12
-s /system/addr
/system/clock
-w 15 -et 12000
> fsdbreport verilog.fsdb -f File1
> fsdbreport verilog.fsdb -f File2
> fsdbreport verilog.fsdb -f File3
9. Report the results when the expression value changes to true.
> fsdbreport verilog.fsdb -exp "/system/addr=='h30 & /system/clock==1"
-s /system/data
 
When the value of the /system/addr signal is 'h30, and the value of the 
/system/clock signal is 1, the expression is TRUE. The value of the 
/system/data signal is reported     when the expression is TRUE.
10. Report the force, release or deposit information of the specified signals using -find_forces.
> fsdbreport rtl.fsdb -find_forces -s "/system/i_cpu/*" -level 2 -o report.txt
 
When the specified signals meet the following conditions, the signal information is reported:
• Signals with force, release, or deposit events
• Signals under the /system/i_cpu scope
• Signals located two levels under the specified scope. If the level is more than 2, the signals are ignored.
11. Report the force of the specified signals using -find_forces and -exclude_scope.
> fsdbreport rtl.fsdb -find_forces -s "/system/i_cpu/*" -exclude_scope "/system/i_cpu/s1/*" "/system/i_cpu/s2" -o report.txt
12. Exclude a specific scope without excluding its subscopes.
> fsdbreport test.fsdb –exclude_scope "/top/system" –o out.txt
13. Specify a scope and exclude the specified scope and its subscopes.
> fsdbreport test.fsdb –exclude_scope "/top/system/*" –o out.txt
14. Exclude multiple scopes.
> fsdbreport test.fsdb –exclude_scope "/top/system/*" "/top/S1" "/top/S2/" –o out.txt

3.其他使用工具

 1)波形类型转换类:fsdb2saif,fsdb2vcd,

    log2fsdb(只能增加某些周期性信号,从log txt直接产生fsdb波形,适合于siloti的某些分析)

    xml2fsdb

    vpd2fsdb,vcd2fsdb;

  2)fsdb的波形合并与抽取:fsdbextract,fsdbmerge;

  3)fsdb波形文件的修改,主要是scope:fsdbedit;

  4)由fsdb生成force等信息的报告,fsdbreport;

    由fsdb拿到file的依赖关系,gencom;

    由kdb db中抽出filelist,kdb_extract_source;

  5)使用工具:bacom,直接进行behavior analysis;(比普通的load,driver的分析,更加具体)

        arm的gdb debug库,分为elf和非elf两种;

        sdfin,对sdf进行编译;

        vdCov,直接打开verdi的coverage功能;

  

剩下的:1)vericom,编译verilog;

    2)vhdlcom,编译vhdl;

    3)nWave,只打开fsdb;

    4)siloti,打开siloti;(波形文件大小会比fsdb小很多,只记录真正的驱动点,

      很多propgate的驱动不会记录,方便rtl波形反标netlist波形)

  • 9
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Verdi培训整理笔记主要是指针对Verdi软件进行的培训所做的总结和整理。Verdi是一款用于设计验证和调试的仿真工具,广泛用于芯片设计和验证领域。培训整理笔记的目的是帮助学员系统化地掌握Verdi的使用方法和技巧,从而提高设计验证的效率和准确性。 Verdi培训整理笔记通常包括以下内容: 1. Verdi的基本介绍:包括Verdi的功能特点、应用领域等基本信息,以及如何正确安装和配置Verdi软件。 2. Verdi的基本操作:介绍Verdi的用户界面和基本元件,包括如何打开设计文件、添加信号波形以及观察时序图等操作。 3. Verdi的高级功能:介绍Verdi的高级功能,如信号追踪、代码覆盖率分析、时序约束检查等。帮助学员深入理解Verdi的强大功能,并能在设计验证过程中灵活应用。 4. 常见问题和解决方法整理常见的Verdi应用问题,并给出相应的解决方法。帮助学员能够快速解决在Verdi使用过程中遇到的问题。 总之,Verdi培训整理笔记是一个对Verdi软件进行系统性梳理和总结的过程,通过整理这些笔记,学员可以更好地理解和应用Verdi,提高设计验证的能力和效率。 ### 回答2: Verdi培训整理笔记是指对所接受的Verdi培训内容进行整理和总结的过程。通过整理笔记,我们可以更好地回顾和巩固自己所学的知识,提高学习效果和记忆力。下面将介绍整理笔记的重要性以及如何进行有效的Verdi培训整理笔记。 首先,整理笔记的重要性不可忽视。通过整理笔记,我们可以将繁杂的培训内容进行分类、梳理和归纳,帮助我们更好地理解和记忆知识点。同时,整理笔记也方便我们今后复习和回顾所学内容,提高知识的掌握和应用能力。此外,在工作中,整理笔记也是一种重要的信息管理方式,方便回顾和查阅。 进行Verdi培训整理笔记时,可以采取以下方法。首先,在培训过程中,要积极记录重要的概念、原理、公式等内容,尤其是讲解重点和难点的部分。其次,在整理笔记时可以使用标题、分点和箭头等方式使笔记结构清晰,便于理解和回顾。同时,可以使用不同颜色的笔或者高亮笔标记重点内容,突出重要性。另外,在整理过程中,可以加上个人理解和思考,以及实际应用的案例,丰富笔记内容,便于理解和记忆。 总结而言,Verdi培训整理笔记对于我们巩固所学知识、提高学习效果和提升工作能力都起到了重要作用。通过合理的整理笔记方法,我们可以更好地理解和记忆所学内容,并能在之后的学习和工作中随时回顾和查阅需要的知识点。因此,在接受培训过程中,要重视整理笔记的工作,培养良好的整理笔记习惯,提高学习效果和工作能力。 ### 回答3: Verdi培训整理笔记是指对Verdi培训内容进行整理和归纳的笔记。Verdi培训是一种针对软件开发工程师的培训课程,旨在提供关于Verdi工具的使用和调试技巧。在学习这门课程时,整理笔记是非常重要的,可以帮助我们梳理课程的重点和核心内容。 首先,在整理笔记时,我们可以按照不同的章节或主题进行分类,方便日后查找和复习。比如,可以按照Verdi工具的不同功能模块,如调试界面、波形查看、时序分析等进行分类。 其次,在整理笔记时,应该注意抓住重点和关键信息。Verdi培训课程通常涉及到很多细节和技术性的知识,我们应该将重点内容标记出来,例如重要的Verdi命令和快捷键,以及常用的调试方法和技巧。 此外,笔记应该简明扼要,避免冗长的叙述和重复的内容。我们可以使用清晰简洁的语言记录下关键信息和思路,以便后期复习时快速回顾。 最后,在整理笔记时,可以结合自己的理解和总结,对所学内容进行概括和归纳。这不仅有助于加深对Verdi工具的理解,还可以为今后实践应用提供参考。 总之,Verdi培训整理笔记是一项重要的学习工作,它可以帮助我们更好地掌握Verdi工具的使用技巧和调试方法。通过合理整理和归纳,我们可以在日后的实践中更加高效地应用Verdi工具,提升我们的工作效率和质量。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值