语法
fsdbreport fsdb_file_name [-f config_file]
[-bt time[unit]] [-et time[unit]]
[-nocase] [-w column_width] [-o 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] ]
[-exp expression [-a name] [-w colomn_width] ]
[-levelstrobe signal=="value" [-a name] [-w column_width] [-verilog|vhdl] ]
[-shift shift_time | -shiftneg shiftneg_time]
[-partition_sig_list file_name file_count]
[-period period_time]
[-cn column_number] [-o reported_file_name]
[-pt time_precision]
[-log [log_file_name]]
[-find_forces [-no_value] [-no_fdr_glitch]]
选项意义
a alias_name
:别名,定义输出信号的别名,也就是起一个简单好记的名字af alias_file
: 指定一个nWave别名文件**bt time[unit]**
:指定报告的开始时间。如果缺省,则使用fsdb文件的开始时间。时间单位可以为Ms, Ks, s, ms, us, ns, ps, fs
。默认单位为ns
。cn,column_number
:定义报告的列数,包括时间列。该参数可以设置为0或者大于1的整数。当设置为0时,信号的名字以及数值不会按照列表的形式打印出来,但是会一行一行得打印出来。如果另外使用了-csv
选项,那么这个选项就会被忽略。csv
将输出报告保存为CSV格式。如果该选线与-cn, -w
一起使用,那么-cn, -w
会被忽略掉。et time[unit]
指定报告的结束时间。如果缺省,使用fsdb的结束时间。时间单位可以为Ms, Ks, s, ms, us, ns, ps, fs
。默认单位为ns
。exclude_scope scope_name
:排除所给定的范围中的信号。每个给定的范围都应该使用双引号括起来。如果要排除给定范围的子范围,必须在所给范围的后面添加通配符*
。该选项必须与-find_forces
选项配合使用。
例如:-find_forces -exclude_scope "system/i_cpu\*" "system/s1"
find_forces
: 用强制、释放或暂存事件和信号值显示信号help | h
: 显示帮助信息。level level_depth
: 指定所给范围下输出的层次。该选项必须与 -s 选项配合使用。当设定为0时,给定范围中的所有信号都会被输出。levelstrobe "expression"
: 当选通信号与所指定的信号相等时,输出信号。-strobe和-levelstrobe不能一起使用。log [log_file_name]
: 指定输出日志文件。默认的文件名为 err.log。no_fdr_glitch
: 展示强制、释放或者暂存事件中的稳定值。该选项是可选的并且必须与 -find_forces联合使用,否则会被忽略。no_value
: 不展示强制、释放或者暂存事件中的值。该选项是可选的并且必须与 -find_forces联合使用,否则会被忽略。nocase
:当包含该选项时,大小写不敏感。nolog
:指示不生成日志文件。o report_file_name
: 指定输出文件名称。of [b|o|d|u|h]
: 指定输出数据的格式为二进制、八进制、十进制、无符号十进制或者十六进制。partition_sig_list
: 指定信号的一部分。period period_time
: 在每个指定的时间输出数据。precision precision_value
: 为模拟信号类型的数据指定精度。如果是数字信号,该选项会被忽略。pt time_precision
: 指定模拟信号的时间精度。如果是数字信号,该选项会被忽略。s {signal_name [option] }
:指定要报告的信号或者范围。当指定范围时,必须在末尾使用通配符*
shift | shift_time[unit]
: 当选通信号与指定值相等时,指定移动的时间加一段时间或者减一段时间。该选项必须和 -strobe选项一起使用。strobe "expression"
: 当选通信号与指定信号相等时,输出信号。verilog | vhdl
: 指定输出格式为verilog或者vhdl类型。w column_width
定义信号列的宽度。如果还指定了 -csv 选项,该选项会被忽略。
例子
- 指定报告的开始时间和结束时间
此命令的意思是:将文件verilog.fsdb中的信号"/system/addr",在时间段1000ps~2000ps内的值输出。fsdbreport verilog.fsdb -s /system/addr -bt 1000ps -et 2000ps
- 报告总线信号的一个切片
此命令和上一条命令很像,但是只报告"/system/addr"信号的[7:4]部分,且没有限定时间段。fsdbreport verilog.fsdb -s "/system/addr[7:4]"
- 以不同格式报告列表中的信号:
第一条命令指定fsdb文件,第二条命令指定大小写不敏感,第三条命令指定输出信号,这里的输出信号一共有三个,分别是第4,5,6行,第四行指定了输出信号且取了一个别名"simple.field3",第7行指定输出文件的名字,第8行指定报告的启示和结束时间。1 fsdbreport fsdb/vhdl_typecase.fsdb \ 2 -nocase \ 3 -s \ 4 top/A_SIMPLE_REC.FIELD3 -a simple.field3 \ 5 -w 15 TOP/A_COMPLEX_REC.F1.FIELD3 -a complex.f1.field3 \ 6 -w 20 top/a_std_logic_vector -af sean2.alias -of h \ 7 -o output.txt \ 8 -bt 1000 -et 2000
- 报告一个范围以及它的子范围,可以指定多个范围:
fsdbreport rtl.dump.fsdb -bt 10 -et 100 -s "/system/i_cpu/*" -level 3 /system/i_pram/clock -cn -0
- 报告使用strobe指定点的结果。
fsdbreport verilog.fsdb -strobe "/system/clock==1" -s /system/data/system/addr
- 当表达式为真时,报告结果。
fsdbreport verilog.fsdb -exp "/system/addr=='h30 & /system/clock==1" -s /system/data
- 报告指定信号的强制、释放或者暂存信息使用 -find_forces.
fsdbreport rtl.fsdb -find_forces -s "system/i_cpu/*" -level 2 -o report.txt
- 报告指定信号的强制信息,使用 -find_forces 和 -exclude_scope。
fsdbreport rtl.fsdb -find_forces -s "/system/i_cpu/*" -exclude_scope "/system/i_cpu/s1/\*" "system/i_cpu/s2" -o report.txt
来自对fsdbreport命令的帮助文档