1. 程式人生 > 其它 >Verdi與vcs、irun和questasim聯合模擬指令碼記錄

Verdi與vcs、irun和questasim聯合模擬指令碼記錄

  Verdi介紹:https://www.synopsys.com/zh-cn/verification/debug/verdi.html  

  Verdi 系統提供了以下基本除錯功能:

    • 功能全面的波形檢視器使您能夠顯示和分析各個時間段的活動
    • 功能強大的波形比較引擎可以讓您隔離快速訊號資料庫 (FSDB) 檔案之間的差異
    • 原始碼瀏覽器使您能夠在原始碼和層次結構之間輕鬆來回移動
    • 靈活的原理圖和方框圖使您能夠使用熟悉的符號顯示邏輯和連線
    • 直觀的氣泡圖幫助您揭示有限狀態機的操作

  三大EDA廠商軟體生成波形可以和verdi配合使用:

    • Sysnopsys--vcs
    • Cadence--irun
    • Mentor--Qustasim

  在平常工作時,正是由於verdi強大的看波形debug的功能,可以通過VCS、irun和Questasim編譯後,產生Verdi可以載入的快速訊號資料庫 (FSDB) 檔案,並通過Verdi載入以後方便的進行debug。因此記錄一下三大EDA廠商軟體生成fsdb波形的指令碼。

  1.VCS指令碼:使用UCLI介面

com:
	vcs -sverilog -debug_acc+all -LDFLAGS -rdynamic -full64 \
	    -P $(VERDI_HOME)/share/PLI/VCS/$(PLATFORM)/novas.tab \
	       $(VERDI_HOME)/share/PLI/VCS/$(PLATFORM)/pli.a \
	    -f tb_top.f \
	    +vcs+lic+wait \
	    -l com_vcs.log
sim:
    	./simv +ntb_random_seed=$(SEED) \
	-ucli -i dump_fsdb_vcs.tcl \
	+fsdb+autoflush \
	-l sim_vcs.log 

   對應的dump_fsdb_vcs.tcl 指令碼為

    global env                             # tcl指令碼引用環境變數,Makefile中通過export定義   
    fsdbDumpfile "$env(demo_name).fsdb"    # 設定波形檔名,受環境變數env(demo_name)控制   # demo_name在makefile中使用export demo_name=demo_fifo  
    fsdbDumpvars 0 "tb_top"                # 設定波形的頂層和層次,表示將tb_top作為頂層,Dump所有層次
    run                                    # 設定完dump資訊,啟動模擬(此時模擬器被ucli控制) 可以run 100ns會在模擬100ns的時候停下來下來

  2.IRUN指令碼 使用ncsim介面

com:
	irun -elaborate -access +r \
	-f tb_top.f \
	-top tb_top \
	-licqueue \
	-l com_irun.log


sim:
      	irun -R \
	-input dump_fsdb_irun.tcl \
        +fsdb+autoflush \
	-licqueue \
	-l sim_irun.log

  對應的dump_fsdb_irun.tcl 指令碼為

global env
call fsdbDumpfile "$env(demo_name).fsdb"  # 需要使用call,與vcs區別之一
call  fsdbDumpvars 0 "tb_top"
run   
quit                                      # 需要使用quit,irun不自動結束

  3. questasim指令碼

com:
	vlib work
	vmap work work
	vlog -64 -sv +acc \
	-f tb_top.f \
	-l com_questa.log

sim:
	vsim -64 -batch -pli $(VERDI_HOME)/share/PLI/MODELSIM/$(PLATFORM)/novas_fli.so \
	work.tb_top \ 
     -do dump_fsdb_questa.tcl \
     +fsdb+autoflush \
     -l sim_questa.log

  對應的dump_fsdb_questasim.tcl

gloal env 
fsdbDumpfile "$env(demo_name).fsdb"
fsdbDumpvars 0 "tb_top"
run -all
quit -sim

  4. Verdi載入fsdb指令碼

run_verdi:
    verdi \
    -sv \                            # 支援sv
    -nologo \                      # 關掉歡迎介面
    -f tb_top.f \    # 載入設計檔案列表
    -ssf tb_top.fsdb