###### tags: `Synopsys VCS & Verdi` # **Synopsys VCS Note** ## <font color="#f00">1.Basic rtl function check</font> 當我們完成 rtl coding 後必須驗證其function是否正確。 這邊我們要先製作一個.cmd檔方便快速進行simulation ,下面附上範例及介紹。  <font color="#6133ff">指令介紹</font> 注意!!! (#)號為註解,需視模擬情況使用。 (1) -R 該指令使VCS在compile完後繼續執行之後指令,若無該選項,VCS在compile完後直接跳出。 (2) -full64 以64位元模式執行,compile後產生之檔案也以64位元執行為標準。 (3) -sverilog 若有使用system verilog 需使用此指令。 (4) testfixture1.v 此為testbench,需注意,若testbench中有定義timescale請將testbench指令置於主design之前。 (5) ISE.v 此為主要design code。 (6) +access+r 此為Cadence NC-verilog指令,VCS無需使用。 (7) +vcs+fsdbon 可以dump出verdi需要的波形檔案。 (8) +define+自訂義選項 此指令需配合testbench,若testbench內部有寫到'ifdef 用於測試不同資料等,需加上此指令。 ## <font color="#f00">2.Pre simulation(pre-sim)</font> (1)在完成rtl function check後,需準備進行Logic synthesis,這時需使用Synopsys所提供的Design Compiler(簡稱DC),經過DC後將初步得知電路的timing、area及power,另外將得到兩個檔案 前者(.sdf檔)是電路經過邏輯合成計算每個cell之delay資訊,後者(.v檔)是一個netlist檔,定義電路的串接型態。 (2)有了上述兩個檔案便可以進行pre-sim了,這邊我們要將rtl function check的vcs做一些更改,如下  <font color="#6133ff">指令介紹</font> (1) ../syn/ISE_syn.v 這邊需要將剛剛得到的netlist檔取代之前的ISE.v檔,以便進行pre-sim。 (2) +define+SDF 這邊需參考testbench內之寫法  這邊先定義SDFFILE會呼叫ISE_syn.sdf  這邊接著定義VCS指令中的+define+SDF會呼叫ISE_syn.sdf檔 (3) +maxdelays 選擇sdf檔中的max值來模擬最糟糕的delay值 (4) -v /cad/CBDK/CBDK_IC_Contest_v2.5/Verilog/tsmc13_neg.v \ simulation model (5) +neg_tchk 由於setup time及hold time在現代clock中會出現負值,故用此指令來告知VCS可能出現負值並處理。 ## <font color="#f00">3.VCS常用指令介紹</font>  (1) +debug_access+all 啟用所有debug功能,包括單步執行等。 (2) -kdb 及 -lca 打開verdi時需要加載filelist,因此在vcs階段加載kdb可以節省verdi解析filelist的時間 。 另外-lca則是方便我們生成simv.daidir/kdb.elab++這個檔案,這樣我們可以直接用 “verdi -elab simv.daidir/kdb”指令來打開verdi波形。 (3) filelist 可以將你的design自動整理成一個.f檔方便管理。 (4) -notimingcheck if using sram , all sram have defined timing so we should use to neglect unknown timing。 ## <font color="#f00">4.VCS code coverage</font> Code coverage用以檢查撰寫的rtl code中是否有冗餘或未使用到的暫存器等。 在進行code coverage前須先將以下指令選擇所需要的置於vcs.cmd中。  接著跑完vcs.cmd後在terminal中輸入  即可在verdi中看到需要的資訊。  ## <font color="#f00">5.單步執行</font> 在vcs.cmd中輸入才可執行。 打開verdi後,按上方的Invoke simulation  之後即可在rtl code的行數前建立中斷點。  接著在console輸入run即可執行在中斷點即結束。  波形也可以直接看到,無須讀取fsdb。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up