VCS仿真VHDL VERILOG混合脚本
IC小白有感于第一次参与的流片工程,总结了一下参与过程中的Makefile配置,以及一些环境配置,希望能够帮助到大家;
首先VCS要进行VHDL和VERILOG的混合仿真,在进行仿真VHDL时要配置synopsys_sim.setup文件,配置如下
-- Mapping default work directory
WORK > DEFAULT
DEFAULT : ./work-- Library Mapping
IEEE : $VCS_HOME/linux/packages/IEEE/lib
SYNOPSYS : $VCS_HOME/linux/packages/synopsys/lib--Simulation variables
ASSERT_STOP = ERROR
TIMEBASE = ns
TIME_RESOLUTION = 1 ps
配置完synopsys_sim.setup文件后进行VCS的混合编译仿真,makefile如下
#!/bin/csh #虚拟路径
.PHONY: com sim cov clean debug
#DEFINE
ALL_DEFINE = +define+DUMP_VPD #预编译宏定义,本例程没有用到宏定义
#OUTPUHT
OUTPUT = simv #输出文件的文件名
# Code coverage command #覆盖率检查
CM = -cm line+cond+fsm+branch+tgl #收集的代码覆盖率类型
CM_NAME = -cm_name $(OUTPUT) #表示覆盖率的文件名
CN_DIR = -cm_dir ./$(OUTPUT).vdb #覆盖率文件的存放目录# vpd file name
VPD_NAME = +vpdfile+$(OUTPUT).vpd #DVE波形文件,该工程使用的VERDI型波形文件,没有用到DVE
#SDF
SDF= +neg_tchk -negdelay -sdf min/typ/max(三选一看后端给出的sdf文件):反标的位置(一般是顶层):反标文件 #定义反标文件,vhdl的反标只能在VCS的命令中反标,verilog的反标可以直接在RTL中反标
#Compile vhdl command #该工程是VHDL和VERILOG混合编程RTL,VCS编译要分三步走VCS= vhdlan -nc #第一步用VCS编译VHDL文件,单独编译每个VHDL文件VCS1= vhdlcom -nc #将VHDL文件编译成库,方便VERDI导入RTL#Compile verilog commandVCS2= vlogan -nc +v2k #编译VERILOG文件VCS3= vericom -nc +v2k #将verilog文件编译成库,方便verdi导入#compile all
VCSALL= vcs -R -nc -debug_all \ #第三步,对RTL进行总和编译仿真-error=IWNF \ #加强约束+lint=TFIPC-L \ #加强约束-full64 \ #64位系统tb_top_behavior \ #VHDL的top,要把结构体声明出来$(CM) \ #覆盖率选项$(CM_NAME) \ #覆盖率选项$(CM_DIR) \ #覆盖率选项-o $(OUTPUT) \ #输出文件,缺省为simv-l compile.log #输出log
# + nospecify #不对SPECIFY模块进行时序检查和路径延时的计算
# + notimingcheck #不进行时序检查,但是还是把path延时加入仿真中 可以在后端用来查明是哪里的错误
# SDF #加入反标的sdf文件
# +libext+lib_ext #当用到很多库时这样加在库文件
# +incdir+inc_dir #RTL中有include文件,这样指定include文件的位置
# -v lib_file #RTL中用到工艺库时,用这个方法指定工艺库的位置#wavefrom command
wavefrom = verdi -lib work -top tb_module -ss tb_module.fsdb & #打开verdi仿真面板,-lib work加载rtl库,-top指名顶层 -ss指名生成的fsdb文件
#simulation command #在vcs编译中加入-R就不用在分开编译仿真了
SIM = ./$(OUTPUT) \$(CM) $(CM_NAME) $(CM_DIR) \$(ALL_DEFINE) \-l $(OUTPUT).log
# start compile vhdl lib
com1:$(VCS) -f file_vhdl.f #-f 编译加载在文档中所有的rtl文件
# start compile vhdl
com2:$(VCS1) -f file_vhdl.f
# start compile verilog lib
com3:$(VCS2) -f file_verilog.f #编译vhdl的文件时要加入 .f文件中要加入${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd 用来加载novas的库
# start compile vhdl
com4:$(VCS3) -f file_verilog.f
# start compile
comall:$(VCSALL)
#Start simulation
sim:$(SIM)
#Start wavefrom
wave:$(wavefrom)
#show the coverage
cov:dve -covdir *vdb & #打开覆盖率检查,查看覆盖率情况
urg:urg -dir simv.vdb -report both #生成覆盖率情况,用于外界观看debug:dve -vpd $(OUTPUT).vpd &\ #DVE debug选项,暂时没有用到
#start clean
clean: #清理命令rm -rf ./csrc *.daidir ./csrc \*.log *.vpd *.vdb simv* *.key \+race.out* novas* verdi* *fsdb apb2apb_asyncs
后续会发布一些DC综合脚本,PT脚本,加上UVM的VCS仿真,功能点描述等,以及ASIC的后仿总结,希望能够帮助到大家~~
VCS仿真VHDL VERILOG混合脚本相关推荐
- Makefile 脚本运行VCS仿真
LINUX学习笔记 Makefile 脚本运行VCS仿真 1. 文件 2. Makefile 脚本 3. 命令 1. 文件 tb.list: tesetbech文件目录 rtl.list:rtl代码文 ...
- RTL设计推荐的各步骤 推荐工具 适合VHDL verilog
初学EDA时候,大家都在找工具而烦恼,有些工具不是没有license 就是不会设置,要不就是不会用,还担心这个以后有人用么? 所以,我通过自己的体会,推荐大家给大家一个学习时候的流程,和一个业界用流程 ...
- 使用VCS 仿真后,通过DVE 观察波形,多维数据显示not load问题及解决方案
版权声明:本文为CSDN博主「Silent_Majority」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ ...
- 用telnet+openocd+jtag_dpi+vcs仿真调试RISCV的cpu
目录 背景: 需要了解的基础知识,此处不做介绍: 如何连结和调试 一些中间过程需要关心,记录 背景: Server :tcl+telnet SW :openocd+JTAG_DP ...
- Synopsys VCS仿真编译选项
VCS仿真编译选项 1. 扩展选项 2. 自带编译选项 1. 扩展选项 1. +vcs+line+wait:一直等待license. 2. +maxdelays/+mindelays:使用SDF文件中 ...
- Linux 运行vcs仿真命令,VCS使用以及命令行调试
最近在学习VCS,现将VCS的一些使用心得记录下来. VCS是synopsys的仿真verilog的仿真器.基于linux系统.有命令行模式和图形化模式.图形化模式是用的dve. 以串口verilog ...
- IC学习笔记20——VCS的使用(二)VCS仿真基础知识
VCS全程是 Verilog Compiled Simulator,其中包含PLI接口,可以调用C和C++一些程序.支持行为级描述.RTL(寄存器传输级)和Gate-level(门级:是RTL经过综合 ...
- VCS仿真和多个test用urg工具生成coverage文件verdi查看--转载
VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法.我呢,因为运用都是简单的非mix language,所以经常用一步法,因为这样省劲,但是对于跑regression最好还 ...
- 一个简单的makefile编写VCS仿真
一个简单的makefile编写VCS仿真 1 VCS简介 VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言.PLI和SDF. VCS具有行业中较高的模拟性能,其出色 ...
最新文章
- 模拟video播放器
- 博士申请 | 纽约州立大学布法罗分校招收ML/AI方向全奖博士生
- 处理 Maven 项目名称红色感叹号的问题
- 如果您在2016年编写过Java代码-这是您不容错过的趋势
- 2021年中国党箔气球市场趋势报告、技术动态创新及2027年市场预测
- 一起学java【5】---原生态数据类型使用陷阱
- IntelliJ IDEA中项目界面右上角中没有SVN工具按钮
- 抑郁自评量表SDS问卷HTML版
- 无线网络技术导论笔记(第五讲)
- android6.0相机权限申请
- P1125 [NOIP2008 提高组] 笨小猴 java
- 第9章 Linux的磁盘管理
- php返回结果,后端继续执行
- App地推:这些方法让你事半功倍
- 基于单片机的太阳能热水器辅助控制系统
- c51抢答器程序汇编语言,c51单片机汇编语言单片机八位抢答器程序
- 数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答(1)
- 登录outlook显示无法登录服务器,无法登录到 Outlook Web Access
- 低温温度传感器——铑铁温度计
- ajax在加拿大什么位置,加国小常识 教你读懂加拿大地址邮编
热门文章
- oracle-账户解锁
- 【反演复习计划】【COGS2432】爱蜜莉雅的施法
- 删除正在使用的文件——釜底抽薪?
- Do not hardcode /data/; use Context.getFilesDir().getPath() instead 解决方法
- 百度编辑器(ueditor)魔改:4、滚动条管理(scrollTop,scrollTo)
- mac未能正确推出移动硬盘而读取不了
- FigrCollage for Mac(照片拼贴工具)
- android ellipsize 多行,android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法...
- Acwing---1246. 等差数列
- 全双工与半双工的区别