将fsdb波形中的信号值保存到TXT文档中-FPGA常见问题论坛-FPGA CPLD-ChipDebug

将fsdb波形中的信号值保存到TXT文档中

d2b5ca33bd182748

 

语法

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 选项,该选项会被忽略。

例子

1. 指定报告的开始时间和结束时间

  •  
fsdbreport verilog.fsdb -s /system/addr -bt 1000ps -et 2000ps

此命令的意思是:将文件verilog.fsdb中的信号”/system/addr”,在时间段1000ps~2000ps内的值输出。

2. 报告总线信号的一个切片

  •  
fsdbreport verilog.fsdb -s "/system/addr[7:4]"

此命令和上一条命令很像,但是只报告”/system/addr”信号的[7:4]部分,且没有限定时间段。

3.以不同格式报告列表中的信号:

fsdbreport fsdb/vhdl_typecase.fsdb 
-nocase 
-s 
top/A_SIMPLE_REC.FIELD3 -a simple.field3 
-w 15 TOP/A_COMPLEX_REC.F1.FIELD3 -a complex.f1.field3 
-w 20 top/a_std_logic_vector -af sean2.alias -of h 
-o output.txt 
-bt 1000 -et 2000

 

第一条命令指定fsdb文件,第二条命令指定大小写不敏感,第三条命令指定输出信号,这里的输出信号一共有三个,分别是第4,5,6行,第四行指定了输出信号且取了一个别名”simple.field3″,第7行指定输出文件的名字,第8行指定报告的启示和结束时间。

4.报告一个范围以及它的子范围,可以指定多个范围:

  •  
fsdbreport rtl.dump.fsdb -bt 10 -et 100 -s "/system/i_cpu/*" -level 3 /system/i_pram/clock -cn -0

 

5. 报告使用strobe指定点的结果。

  •  
fsdbreport verilog.fsdb -strobe "/system/clock==1" -s /system/data/system/addr

 

6.当表达式为真时,报告结果。

  •  
fsdbreport verilog.fsdb -exp "/system/addr=='h30 & /system/clock==1" -s /system/data

 

7.报告指定信号的强制、释放或者暂存信息使用 -find_forces.

  •  
fsdbreport rtl.fsdb -find_forces -s "system/i_cpu/*" -level 2 -o report.txt

 

8. 报告指定信号的强制信息,使用 -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

d2b5ca33bd182808

 

来自对fsdbreport命令的帮助文档

 

请登录后发表评论

    没有回复内容