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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • bfs是什么意思_bfs实现

    bfs是什么意思_bfs实现Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有 8 个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这 8 种颜色用前 8 个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列 (1,2,3,4,5,6,7,8) 来表示,这是基本状态。这里提供三种基本操作,分别用大写字母 A,B,C 来表示(可以通过这些操作改变魔板

  • JSONObject转换为Map<String, String>对象「建议收藏」

    JSONObject转换为Map<String, String>对象「建议收藏」方法一JSONObjectobj=newJSONObject();{obj.put(“key1″,”value1”);obj.put(“key2″,”value2”);obj.put(“key3″,”value3”);}Map<String,String>params=JSONObject.parseObject(obj.toJSONString(),newTypeReference<Map<String,String>>.

  • iOS关于地图定位基础(二)[通俗易懂]

    iOS关于地图定位基础(二)[通俗易懂]在前一篇文章 iOS关于地图定位基础(一) 中我们主要总结了 iOS里面利用原生 CoreLocation 框架实现基本定位功能和一些注意点,侧重点主要是iOS8+之后的定位授权与授权状态的使用。接下来本篇文章主要是讲解如何利用 CoreLocation 框架实现地理定位的具体实现。(PS:下文涉及我自定义的指南针Demo请去我的GitHub仓库查看源码https://github.com/IML

  • Java的三种注释

    Java的三种注释Java基础是java初学者的起点,是帮助你从小白入门到精通必学基础课程!为初学者而著!Java300集>>>适合准备入行开发的零基础员学习Java,基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。配套学习:Java初学者入门教程>>>Java注释:单行、多行和文档注释注释是对程序语言的说明,有助于开发者和用户之间的交流,方便理…

  • springboot项目实战视频教程_Spring揭秘

    springboot项目实战视频教程_Spring揭秘前言:花了大概一个多月的时间,debug自己录制的SpringbBoot实战历程~从菜鸟到小牛课程已经完成了!包含课时46节,涵盖知识点以及详情如下图所示。课程介绍:本课程以实际业务场景为出发点、实战撸码为主、理论概念为辅,零基础一步一个脚印讲解当前微服务项目或分布式系统下SpringBoot各种典型的应用场景及其涉及的各个核心要点!课程目的:本课程目的在于给那些需要入门Sp…

  • 首次使用空气炸锅需要干烧10分钟_pycharm第一次打开

    首次使用空气炸锅需要干烧10分钟_pycharm第一次打开1、PyCharm的下载下载地址:https://www.jetbrains.com/pycharm/版本:PyCharmProfessionalEdition收费版本:PyCharmCommunityEdition免费2、首次新建项目打开安装好的PyCharm首次打开会出现本界面,点击CreateNewProject项目命名及选择Python解释…

发表回复

您的电子邮箱地址不会被公开。

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