語法
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命令的幫助文檔