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混合脚本相关推荐

  1. Makefile 脚本运行VCS仿真

    LINUX学习笔记 Makefile 脚本运行VCS仿真 1. 文件 2. Makefile 脚本 3. 命令 1. 文件 tb.list: tesetbech文件目录 rtl.list:rtl代码文 ...

  2. RTL设计推荐的各步骤 推荐工具 适合VHDL verilog

    初学EDA时候,大家都在找工具而烦恼,有些工具不是没有license 就是不会设置,要不就是不会用,还担心这个以后有人用么? 所以,我通过自己的体会,推荐大家给大家一个学习时候的流程,和一个业界用流程 ...

  3. 使用VCS 仿真后,通过DVE 观察波形,多维数据显示not load问题及解决方案

    版权声明:本文为CSDN博主「Silent_Majority」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ ...

  4. 用telnet+openocd+jtag_dpi+vcs仿真调试RISCV的cpu

    目录 背景: 需要了解的基础知识,此处不做介绍: 如何连结和调试 一些中间过程需要关心,记录 背景: Server    :tcl+telnet SW         :openocd+JTAG_DP ...

  5. Synopsys VCS仿真编译选项

    VCS仿真编译选项 1. 扩展选项 2. 自带编译选项 1. 扩展选项 1. +vcs+line+wait:一直等待license. 2. +maxdelays/+mindelays:使用SDF文件中 ...

  6. Linux 运行vcs仿真命令,VCS使用以及命令行调试

    最近在学习VCS,现将VCS的一些使用心得记录下来. VCS是synopsys的仿真verilog的仿真器.基于linux系统.有命令行模式和图形化模式.图形化模式是用的dve. 以串口verilog ...

  7. IC学习笔记20——VCS的使用(二)VCS仿真基础知识

    VCS全程是 Verilog Compiled Simulator,其中包含PLI接口,可以调用C和C++一些程序.支持行为级描述.RTL(寄存器传输级)和Gate-level(门级:是RTL经过综合 ...

  8. VCS仿真和多个test用urg工具生成coverage文件verdi查看--转载

    VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法.我呢,因为运用都是简单的非mix language,所以经常用一步法,因为这样省劲,但是对于跑regression最好还 ...

  9. 一个简单的makefile编写VCS仿真

    一个简单的makefile编写VCS仿真 1 VCS简介 VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言.PLI和SDF. VCS具有行业中较高的模拟性能,其出色 ...

最新文章

  1. 模拟video播放器
  2. 博士申请 | 纽约州立大学布法罗分校招收ML/AI方向全奖博士生
  3. 处理 Maven 项目名称红色感叹号的问题
  4. 如果您在2016年编写过Java代码-这是您不容错过的趋势
  5. 2021年中国党箔气球市场趋势报告、技术动态创新及2027年市场预测
  6. 一起学java【5】---原生态数据类型使用陷阱
  7. IntelliJ IDEA中项目界面右上角中没有SVN工具按钮
  8. 抑郁自评量表SDS问卷HTML版
  9. 无线网络技术导论笔记(第五讲)
  10. android6.0相机权限申请
  11. P1125 [NOIP2008 提高组] 笨小猴 java
  12. 第9章 Linux的磁盘管理
  13. php返回结果,后端继续执行
  14. App地推:这些方法让你事半功倍
  15. 基于单片机的太阳能热水器辅助控制系统
  16. c51抢答器程序汇编语言,c51单片机汇编语言单片机八位抢答器程序
  17. 数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答(1)
  18. 登录outlook显示无法登录服务器,无法登录到 Outlook Web Access
  19. 低温温度传感器——铑铁温度计
  20. ajax在加拿大什么位置,加国小常识 教你读懂加拿大地址邮编

热门文章

  1. oracle-账户解锁
  2. 【反演复习计划】【COGS2432】爱蜜莉雅的施法
  3. 删除正在使用的文件——釜底抽薪?
  4. Do not hardcode /data/; use Context.getFilesDir().getPath() instead 解决方法
  5. 百度编辑器(ueditor)魔改:4、滚动条管理(scrollTop,scrollTo)
  6. mac未能正确推出移动硬盘而读取不了
  7. FigrCollage for Mac(照片拼贴工具)
  8. android ellipsize 多行,android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法...
  9. Acwing---1246. 等差数列
  10. 全双工与半双工的区别