VCS

VCS 即 verilog compile simulator,主要分為兩個(gè)步驟:compile編譯、simulator仿真

  1. 編譯
    編譯verilog文件成為一個(gè)可執(zhí)行的二進(jìn)制文件,完成后生成 simv 文件。
    vcs <source_files>
  2. 仿真
    運(yùn)行生成的二進(jìn)制文件,進(jìn)行仿真。
    ./simv

實(shí)際使用

封裝成一個(gè)python腳本,方便使用。

#! /usr/bin/env python

import os, sys

# 打印腳本信息和分割線
def cut_line():
    "Draw the cut lines."
    print "-" * 79
print """Script name: run_vcs.py"""
cut_line()

# 讀入源文件
if sys.argv[1] == '':
    print("Please type in the path of filelist.")
    quit()

filelist = sys.argv[1]
print("VCS running case: " + filelist)

# 刪除原來(lái)的仿真文件
rm_command = "rm ./simv -f"
# 編譯命令
vcs_command = "vcs -full64 +v2k +nospecify -sverilog -fsdb -override_timescale=1ns/1ps -f " + filelist
# 仿真命令
simv_command = "./simv "

sys.stdout.flush()
os.system(rm_command)
os.system(vcs_command)
os.system(simv_command)

編譯參數(shù)

  • +v2k
    使能verilog2000的標(biāo)準(zhǔn)
  • +nospecify            
    不對(duì)SPECIFY 模塊進(jìn)行時(shí)序檢查和路徑延時(shí)計(jì)算
  • +notimingcheck         
    不進(jìn)行時(shí)序檢查;但是還是把path延時(shí)加入仿真中
  • -timescale
    time_unit采用就近原則,例如頂層文件定義timescale后,中間文件再次定義timescale,則其后的文件按照中間文件定義的timescale執(zhí)行。time_precision則采用最小的精度
  • -override_timescale
    統(tǒng)一所有的timescale
  • -f -F
    -f采用絕對(duì)路徑;-F與-f類(lèi)似,也可以采用絕對(duì)路徑,同時(shí)也支持相對(duì)路徑,但不允許嵌套使用。
    VCS用-F解析filelist時(shí),不允許文件嵌套使用,不支持`include “xxx.v”這種寫(xiě)法,改為-f便ok了。
  • +incdir+directory+
    添加include 文件夾
  • -R
    編譯完成后,自動(dòng)執(zhí)行當(dāng)前編譯生成的可執(zhí)行文件
  • +vcs+initmem+0|1|x|z
    初始化RTL中所有mem的所有bit初始值
  • +vcs+initreg+0|1|x|z
    初始化RTL中所有reg的所有bit初始值
  • VCS的+ -區(qū)別
    -的一般是編譯時(shí)用的,編譯工具自帶的。
    +的是插件,環(huán)境,驗(yàn)證語(yǔ)言,等等加的,可擴(kuò)展的,自定義的。

常用選項(xiàng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容