VCS

VCS 即 verilog compile simulator,主要分为两个步骤:compile编译、simulator仿真

  1. 编译
    编译verilog文件成为一个可执行的二进制文件,完成后生成 simv 文件。
    vcs <source_files>
  2. 仿真
    运行生成的二进制文件,进行仿真。
    ./simv

实际使用

封装成一个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)

# 删除原来的仿真文件
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)

编译参数

  • +v2k
    使能verilog2000的标准
  • +nospecify            
    不对SPECIFY 模块进行时序检查和路径延时计算
  • +notimingcheck         
    不进行时序检查;但是还是把path延时加入仿真中
  • -timescale
    time_unit采用就近原则,例如顶层文件定义timescale后,中间文件再次定义timescale,则其后的文件按照中间文件定义的timescale执行。time_precision则采用最小的精度
  • -override_timescale
    统一所有的timescale
  • -f -F
    -f采用绝对路径;-F与-f类似,也可以采用绝对路径,同时也支持相对路径,但不允许嵌套使用。
    VCS用-F解析filelist时,不允许文件嵌套使用,不支持`include “xxx.v”这种写法,改为-f便ok了。
  • +incdir+directory+
    添加include 文件夹
  • -R
    编译完成后,自动执行当前编译生成的可执行文件
  • +vcs+initmem+0|1|x|z
    初始化RTL中所有mem的所有bit初始值
  • +vcs+initreg+0|1|x|z
    初始化RTL中所有reg的所有bit初始值
  • VCS的+ -区别
    -的一般是编译时用的,编译工具自带的。
    +的是插件,环境,验证语言,等等加的,可扩展的,自定义的。

常用选项

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容