数字电路仿真编译文件指定方式

news2024/11/26 4:48:41

目录

1 最基本的方式

2 指定多个文件

3. 使用filelist文件

4 指定整个目录中的所有指定后缀的文件

5 指定include文件的搜索路径

6 追加宏的定义

7 Verdi相关的选项

8 Vivado中的处理方式


1 最基本的方式


        最基本的方式就是直接在命令行指定单个源文件,比如说(这里以vcs为例,但是对于其它常见工具也基本都适用,下同):

vlogan -sverilog design1.sv

        其中vlogan是vcs的编译命令。以上命令针对一个设计文件进行编译。-sverilog表示其后跟随的文件应该按照SystemVerilog语法进行编译。不指定文件类型的话缺省为verilog。不过,在细节方面处理各种工具有所不同。比如说,vcs是用-sverilog,而QuestaSim、irun等则是用"-sv"。又比如说,有些EDA工具也会根据文件名后缀来推断其类型。除非是文件名后缀为.v,但是希望按照SystemVerilog语法来解释才需要显式地指定“-sv”选项。而vcs则不看文件名后缀,要按systemverilog语法编译必须显式地指定"-sverilog"。

2 指定多个文件


        指定多个文件自然就是,作为直感,在命令行跟多个文件就好了。

vlogan -sverilog design1.sv design2.sv design3.sv ...

        但是想一下,如果很多个文件(比如说十几个),而调试阶段需要反复执行编译命令,每次输入这么多文件名就会成为一件令人崩溃的事情(虽然一般来说用up/down键可以查到命令历史避免重复输入的情况)。当文件数再多一些,哪怕在命令行只需要输入一次(其后都用up/down键可以查到命令历史来复用)也是一件可怕的事情。这时候,就需要考虑用一个文件来将所有文件列入其中,参见下一节。

3. 使用filelist文件


        将所需要加入的源文件都列在一个文本文件中,然后命令行用“-f”选项引用该文件,这样就解决了上一节所提出来的问题。比如说:

        file.lst (ASCII文件,即文本文件):

-sverilog design1.sv 

-sverilog design2.sv 

-sverilog design3.sv

....

-sverilog design100.sv

        然后在命令行只需要如下即可:

vlogan -f file.lst

        当源文件有增删(注意,不是说源文件内容有修改,而是说要添加一个文件或删除一个文件)时只需要单独修改file.lst即可。注意,“file.lst”不是一个专用文件名,你可以自行选择任意合适的文件名。

        但是,当一个大型项目有许多个源文件目录,有非常多的文件(比如说不同的模块、不同的子系统由不同的队伍分别开发,现在做系统集成),像这样一个问一个文件地列出来也是一件和费劲的事情。这时候就可以考虑以指定目录,并结合文件类型(文件后缀)指定的方式来将指定目录下的所有指定后缀类型的文件全部加入了,参见下一节。

        

4 指定整个目录中的所有指定后缀的文件


        “-y”用于指定目录路径

        “-libext+”用于指定文件后缀名

        比如说要将目录src1底下的所有.v和.sv后缀的文件全部加入编译列表,可以在命令行,当然更常见的是在一个文件中指定如下:

/************************************************************************
*    compile list specification
************************************************************************/
-y ../../../src/IP_LIB1
-y ../../../src/WAFE_RX
-y ../../../src/HIF
+libext+.v

+libext+.sv

5 指定include文件的搜索路径


        有些文件,通常是用于定义参数或者宏定义的头文件是以include的方式包含在其它源文件中,通常在“`include”语句不包含路径信息。编译器在看到“`include”语句时需要去搜索该文件在哪里。这个时候可以用“+incdir+”选项来告诉编译器应该到哪里去找被include的头文件,如下例所示:

+incdir+../../../src/header/
-y ../../../src/IP_LIB1
-y ../../../src/WAFE_RX
-y ../../../src/HIF
+libext+.v

+libext+.sv

../../../src/TOP/design1.sv

../../../src/TOP/design2.sv

        当然在以上这个file.lst文件中仍然可以另行指定单个的文件,如最后两行所示。

6 追加宏的定义


        一个设计通常可能会可以通过预处理器宏开关来控制其中的配置情况或者设计选项的切换,本质上是切换编译范围。有时也通过宏来指定设计参数。

        比如说一个DMA的设计,4个通道还是8个通道,在编译时指定宏的值来决定按几个通道进行设计配置,也同样可以在命令行或者file.lst指定宏的定义,这里有两种情况。如下所示(最后两行):

 
+incdir+../../../src/header/
-y ../../../src/IP_LIB1
-y ../../../src/WAFE_RX
-y ../../../src/HIF
+libext+.v
+libext+.sv
../../../src/TOP/design1.sv
../../../src/TOP/design2.sv
+define+NUM_CH=8
+define+DMA_ON


        其中,

        NUM_CH对应于设计中使用到的一个参数类的宏,比如说用于指定通道数为8个。

        DMA_ON则对应于设计中使用的一个开关类的宏,比如说用于打开或关闭某一段代码。

7 Verdi相关的选项


        上面通过-y 指定library目录, +libext+.v指定library后缀名。 有时候还用-v 来指定library文件。但是这样直接被verdi吃进去以后不能显示hierarchy和文件。比如说,用Verdi看电路的schematic图时,无法点进去看到下一层次。

        verdi提供了解决的办法是(是否专属于verdi?待确认):   -ssy  (用来取消-y指定的library为library cell)     -ssv (用来取消-v 指定的library为library cell)


-ssy
-ssv
+incdir+../../../src/header/
-y ../../../src/IP_LIB1
-y ../../../src/WAFE_RX
-y ../../../src/HIF
+libext+.v
+libext+.sv
../../../src/TOP/design1.sv
../../../src/TOP/design2.sv
+define+NUM_CH=8
+define+DMA_ON

8 Vivado中的处理方式


        在Vivado的Tcl脚本中, 可以通过set_property命令来实现一部分以上选项相同的功能。

For Vivado in project mode:

For \+incdir\+:

    set_property include_dirs <directory_name> [current_fileset]

For \+define\+:

    set_property verilog_define a=b [current_fileset]

        至于,-y and \+incdir\+, Vivado Tcl脚本应该是不支持的(?)。可以考虑在GUI模式中将文件(可以整个目录)加入进去,然后再export成为Tcl脚本,这样会得到如下图所示的样子:



 

        更多的数字设计验证点点滴滴知识参见:常用数字设计仿真工具(Questa,VCS,IUS/Xcelium,Verdi等)使用入门 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware安装华为存储模拟器

实验需要的软件&#xff1a; VMware Workstation Pro ST00000000201812000*配套的license文件 Dorado5000 V3存储模拟器磁盘 存储模拟器磁盘和license文件资源&#xff0c;在本人主页发布的资源中去下载 安装步骤&#xff1a; 1. 点击 “文件->新建虚拟机”。 2. 在弹框…

MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询SQL执行加载顺序七种JOIN写法 3 索引介绍3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合建索引3.6 哪些情况不适合建索引 4 性能分析4.1 性能分析前提知识4.2 Explain…

SQL Server数据库使用

文章目录 前言一、SQL Server 2008 R2 安装例&#xff1a;安装一台SQL Server 2008 R2服务器 二、SSMS管理工具简介1.SQL Server 2008 R2常用的工具2.连接到服务器 三、SQL Server数据库分类及管理1.SQL Server数据库分类2.SQL Server数据库文件类型3.SQL Server数据库管理例&a…

操作系统第五章——输入输出管理(中)

提示&#xff1a;若我会见到你&#xff0c;事隔经年&#xff0c;我如何向你招呼&#xff0c;以眼泪&#xff0c;以沉默 文章目录 5.2.1 IO核心子系统知识总览功能要在那个层次实现 5.2.2 假脱机技术&#xff08;SPOOLing&#xff09;知识总览什么是脱机技术假脱机技术——输入井…

Kafka锦集(二):三种不同方式,查看kafka是否已启动

前言 Kafka的启动之前&#xff0c;必不可少的三个操作&#xff1a; 1、启动Zookeeper服务&#xff0c;点击进入 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 2、 Kafka的下载和安装 3、修改Kafka安装目录下./config/server.properties文件里的监听窗…

考研C语言第三章

3.1 运算 #include <stdio.h>int main() {int result45*2-6/310%4;printf("%d\n",result);return 0; }C语言输出上每次都要带着数据类型&#xff0c;想念java 算术运算符与关系运算符 #include <stdio.h>int main() {int a;while(scanf("%d"…

C#,Matlab混合编程(01)——Mat文件格式简介及读写Mat文件的C#源程序

Matlab 软件 20GB&#xff0c;很大&#xff0c;还有卡脖子的问题。 我们可以利用其生成的 Mat 文件做更多的事。 1 Mat 文件 MAT 文件版本概述 MAT 文件是二进制 MATLAB 文件&#xff0c;用于存储工作区变量。从 MAT 文件版本 4 开始&#xff0c;随后的几个 MAT 文件版本都支持…

qtcreator-ros 安装配置

qtcreator-ros 安装配置 计划利用 QT 搭建简易的小车远程控制客户端&#xff0c;QT 系统学习有点耗时&#xff0c;借助 qtcreator-ros 可以缩短开发周期 How to Install (Users) ROS Qt5 librviz人机交互界面开发一&#xff08;配置QT环境&#xff09; 电脑中已经安装 5.10.1 …

DJ6-1/2/3 文件系统

目录 6.1 文件系统概述 6.1.1 文件、记录和数据项 6.1.2 文件类型 6.1.3 文件系统模型 6.1.4 对文件的操作 6.2 文件的逻辑结构 6.2.1 文件逻辑结构的类型 6.2.2 顺序文件&#xff08;Sequential File&#xff09; 6.2.4 索引文件&#xff08;Index File&…

英文论文(sci)解读复现【NO.12】YOLO-Tea: YOLOv5改进的茶叶病害检测模型

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

CocosCreator图片处理:截图裁剪,保存到本地,从本地加载,远端图片转base64

截图裁剪 从相机导出的renderTexture中使用readPixels读取像素数据&#xff0c;通过像素数据创建spriteFrame可以展示到界面上。 this.rt new RenderTexture(); this.rt.initialize({width: view.getVisibleSize().width,height: view.getVisibleSize().height, }) this.ca…

Three.js--》实现3d官网模型展示

目录 项目搭建 实现网页简单布局 初始化three.js基础代码 创建环境背景 加载飞船模型 实现滚轮滑动切换3D场景 设置星光流动特效 今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&…

计算机常见的故障类型

文章目录 前言一、常见故障类型介绍1.硬件故障2.系统故障3.软件故障 二、故障排查思路三、Win操作系统问题1.系统基本信息2.系统资源监视器&#xff08;运行对话框输入“resmon”&#xff09;3.事件查看器&#xff08;运行对话框输入“eventvwr”&#xff09;4.任务管理器&…

使用这些方法让你的 Python 并发任务执行得更好

动动发财的小手&#xff0c;点个赞吧&#xff01; 问题 一直以来&#xff0c;Python的多线程性能因为GIL而一直没有达到预期。 所以从 3.4 版本开始&#xff0c;Python 引入了 asyncio 包&#xff0c;通过并发的方式并发执行 IO-bound 任务。经过多次迭代&#xff0c;asyncio A…

【LED子系统】八、小试牛刀

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强公司&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录…

2023电工杯数学建模B题完整模型代码【原创首发】

文末获取全部资料 摘要 近年来&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的发展和广泛应用&#xff0c;其在教育领域的潜力和影响引起了广泛关注。本研究旨在通过一项全面的问卷调查&#xff0c;探讨AI学习工具在大学生学习过程中的影响。 在本项研究中&#…

认识HTTP协议---1

hello,大家好,今天为大家带来http协议的相关知识 1.HTTP协议 &#x1f437;1.应用层协议 &#x1f437;2.HTTP协议的工作过程 2.HTTP协议格式 &#x1f437;1.认识抓包工具Fidder &#x1f437;2.学会使用fidder &#x1f437;3.协议格式总结 3.HTTP请求 &#x1f437…

常用本地事务和分布式事务解决方案模型

目录 1 DTP模型2 2PC2.1 方案简介2.2 处理流程2.2.1 阶段1&#xff1a;准备阶段2.2.2 阶段2&#xff1a;提交阶段 2.3 方案总结 3 3PC3.1 方案简介3.2 处理流程3.2.1 阶段1&#xff1a;canCommit3.2.2 阶段2&#xff1a;preCommit3.3.3 阶段3&#xff1a;do Commit 3.3 方案总结…

使用本地的chatGLM

打开终端 wsl -d Ubuntu conda activate chatglm cd cd ChatGLM-6B python3 cli_demo.py 依次输入以上命令。

随机森林Proximity实现及应用

随机森林Proximity实现及应用 1 算法1.1 随机森林Proximity简介1.2 RF-GAP1.3 实现代码 2 应用2.1 离群点(outlier)检测2.1.1 原理和实现2.1.2 实验结果 附录 项目主页&#xff1a;randomforest C implementation of random forests classification, regression, proximity and…