VCS仿真VHDL VERILOG混合脚本「建议收藏」

VCS仿真VHDL VERILOG混合脚本「建议收藏」#!/bin/csh#虚拟路径.PHONY:comsimcovcleandebug#DEFINEALL_DEFINE=+define+DUMP_VPD #预编译宏定义,本例程没有用到宏定义#OUTPUHTOUTPUT=simv #输出文件的文件名#Codecoveragecommand#覆盖率检查CM=-cmline+cond+fsm+branch+tgl#收集的代码覆盖率类型CM_NAME=-c..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

         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 command

VCS2=	 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的后仿总结,希望能够帮助到大家~~

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191115.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Cookie中的httponly的属性和作用

    Cookie中的httponly的属性和作用1.什么是HttpOnly?如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。XSS全称CrossSiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其…

    2022年6月29日
    24
  • 26.学习Camera之——PDAF(相位对焦)的基本原理

    26.学习Camera之——PDAF(相位对焦)的基本原理在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。左图为CCD在焦后的情况,右图为焦前。当CCD在焦后时,在线阵CCD1和CCD2上会发现聚焦点CCD1的在左,反之,则聚焦点CCD2的在左(图中红色标记的光线)。这种方法需要加.

    2022年9月6日
    3
  • networkx之图遍历和图绘制

    networkx之图遍历和图绘制networkx之图遍历和图绘制文章目录networkx之图遍历和图绘制图数据读取后默认标签(labels)为索引,如何使用编号id?图数据读取后,如何得到节点集和边集?如何绘制多样的图?图数据读取后默认标签(labels)为索引,如何使用编号id?例如在读取football数据时,其labels都是节点的英文名称,这样在处理图数据时不是很方便,往往报错,我们通常习惯处理节点的编号从1开始,可以建立label-id的反向索引,如果处理图数据时只需要编号id,可以将labels属性设置为id,如果之后还

    2022年5月9日
    53
  • Eclipse配置SVN的几种方法及使用详情

    Eclipse配置SVN的几种方法及使用详情Eclipse配置SVN的几种方法及使用详情此文章对Myeclipse同样适用。一.在Eclipse里下载Subclipse插件方法一:从EclipseMarketplace里面下载具体操作

    2022年7月2日
    23
  • 13.1.2 拷贝赋值运算符、析构函数、三/五法则、阻止拷贝

    13.1.2 拷贝赋值运算符、析构函数、三/五法则、阻止拷贝

    2021年6月10日
    83
  • 2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料

    2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:煤矿井下电气考试题库是安全生产模拟考试一点通总题库中生成的一套煤矿井下电气考试资料,安全生产模拟考试一点通上煤矿井下电气作业手机同步练习。2021年煤矿井下电气考试题库及煤矿井下电气考试资料1、【多选题】短路电流的大小与()有关。(BCDE)A、电动机的额定功率B、电缆的长度C、电缆的截面D、电网电压E、变压器的容量F、电动机的负荷2、【多选题】漏电保护方式主要有()。(ABC)A、附加直流电源式B

    2022年9月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号