將fsdb波形中信號保存到TXT文檔中


語法

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. 以不同格式報告列表中的信號:
    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
    
    第一條命令指定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
    

來自對fsdbreport命令的幫助文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM