【原创】如何通过-y和-v使用库文件
在进行仿真时,经常遇到设计代码中需要调用一些标准的库文件,但是在设计的编译列表filelist中却没有相应的库文件,这时为了完成仿真,需要设计人员提供对应的库文件或者库文件所在的路径,然后仿真时将这些库文件或者路径添加到编译命令中,以实现仿真编译的正常进行。这个过程在实际中是通过”-y”和”-v”将对应的这些库文件或者库路径告诉仿真器,这样在编译时仿真器就会在对应的库文件或者库路径下寻找对应的module代码。本文将示例”-y”和”-v”具体如何使用。
1 使用库文件
如果模块中存在对于某个库文件中的某个module的实例化,那么可以通过在编译命令中使用”-v”的方式指定要搜索的库文件。其格式如下:
compile_order -v library_file.v
其中compile_order为仿真器的编译命令,library_file.v为库文件,其中可以包含多个模块,编译时只编译用到的模块。
2 使用库路径
如果在编译的时候,不知道文件夹中到底哪个库文件包含需要的模块,那么这是可以使用”-y”的方式,指定要搜索的文件夹,但是这是需要注意,使用”-y”的同时需要配合使用”+libext+”用于指定要在搜索文件夹中哪些后缀类型的文件中进行搜索。其格式如下:
compile_order -y ./path_name +libext+.v
其中compile_order为仿真器的编译命令,./path_name用于指定要搜索的文件夹的路径(路径名包含要搜索的文件夹名), +libext+.v用于指定要在被搜索文件夹中搜索的文件的后缀,如果要搜索多个后缀可以继续追加”+libext+.v+后缀名”,如果没有后缀可以使用两个”++”连续写即可。
【示例】
示例文件的结构如下图,top_tb中例化了两个模块,分别是t2and和t1xor。t2and在t2.v中,t2.v中还存在另一个模块t2x2and,并且与top_tb.v位于同一个文件夹中。t1xor位于文件夹path中,该path文件夹下还有另外两个文件:t0xor.v和t2xor.v,并且在t1xor例化了t0xor。整体结构如下图所示:

【源代码】


【仿真命令】

注:其中的file.f中仅包含top_tb.v一个文件。
【仿真结果】


通过编译后仿真器分析的电路层次结构我们可以可以看到,只有在top_tb中被调用的模块出现在了设计层次中,没有被调用的并没有出现,即只有被调用的模块被编译到了设计中。同时我们注意到,因为t1xor中例化了t0xor,编译时会自动识别库中本身的层次调用关系,将相关的库文件自动搜索编译,但是需要注意的是这时t1xor和t0xor必须都位于相同的文件夹中。
通过示例我们可以知道,使用-v或-y选项指定库时,编译器将只编译那些设计中用到的模块,这些用到的模块无需再添加到filelist中,这样可以大大压缩编译时间及内存空间,避免了在众多文件或者路径下找模块的问题,将人力工作交由电脑来完成。
【总结】
- 使用库文件
在命令行中使用选项:-v file_name
- 使用库目录
在命令行中使用选项 -y directory_name
在命令行中使用选项 +libext+file_extension
- ”-y”和”-v”在Verilog和SystemVerilog的LRM中并没有出现,但是他们不是某家EDA大厂所特有的,所有的EDA大厂生产的仿真器都支持;
- ”-y”和”-v”仅适用于Verilog和SystemVerilog的代码;
- 使用”-y”和”-v”指定库文件和库路径时,只编译那些设计中用到的模块。如果没有使用”-v”,那么库文件中所有的模块都将会被编译;
更多技术内容,可关注下图个人技术微信公众号,欢迎朋友们关注沟通!

【原创】如何通过-y和-v使用库文件的更多相关文章
- SharePoint文档库文件夹特殊字符转义
当我们在SharePoint网站文档库中新建文件夹时包含了~ " # % & * : < > ? / \ { | }字符时(一共15个), 或者以.开头或者结束,或者包含 ...
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...
- 安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题
本文的下拉刷新以及上拉加载都是用PullToRefresh实现的,关于PullToRefresh的介绍以及源码,网上可以找到很多,本人在此不再赘述. PullToRefresh是一套实现非常好的下拉刷 ...
- 第一百六十一节,封装库--JavaScript,完整封装库文件
封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象, ...
- Linux系统上java调用C++ so库文件
PART1: java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包 <!-- http ...
- gcc编译时头文件和库文件搜索路径
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始( ...
- golang调用c++的dll库文件
最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以 ...
- 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)
在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面: ·Quartus不支持Testbench: ·调用了megafunction或者lpm库之类的Alte ...
- linux web服务器必需的库文件
往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下: yum -y install m ...
随机推荐
- java 全端开源 电商系统 springboot uniapp 小程序 前后端分离 高可用
Lilishop B2B2C商城系统 官方公众号 & 开源不易,如有帮助请点Star 所有jar包均可从maven中央仓库下载,无二次封装jar包,全端开源,无后门,无监控. 介绍 官网:ht ...
- python工业互联网应用实战18—前后端分离模式之jquery vs vue
前面我们分三章来说明了使用django template与jquery的差别,通过jquery如何来实现前后端的分离,同时再9章节使用vue.js 我们浅尝辄止的介绍了JQuery到vue的切换,由于 ...
- 使用cookies,免密登录禅道(一)
导言:在做自动化的过程中,很多时候都需要绕过登录验证码来进行测试,可使用cookie 绕过验证码进行登录. 以下以自己搭建的禅道环境登录为例(其他网站也可以同样道理): #coding=gbkimpo ...
- Spring如何使用三级缓存解决循环依赖
Spring如何使用三级缓存解决循环依赖 首先来了解一下什么是循环依赖 @Component public class A { @Autowired B b; } @Component public ...
- 单点突破:MySQL之基础
前言 开发环境:MySQL5.7.31 本文并不是mysql语法语句的教程或者笔记,如果初学MySQL,想要看sql的教程或者学习各种语法语句规范,可以看看一千行MySQL学习笔记或者MySQL教程| ...
- Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer
作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...
- docker安装nextcloud私人网盘,开启https配置证书
docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...
- 搞清楚Spring事件机制后:Spring的源码看起来简单多了
本文主讲Spring的事件机制,意图说清楚: 什么是观察者模式? 自己实现事件驱动编程,对标Spring的事件机制 彻底搞懂Spring中的事件机制,从而让大家 本文内容较长,代码干货较多,建议收藏后 ...
- 小白学k8s(9)-gitlab-runner实现go项目的自动化发布
gitlab构建CI/CD 准备 docker部署gitlab 使用二进制部署gitlab-runner gitlab-runner注册 配置Variables 简单先来个测试 开始构建 遇到的报错 ...
- WPF中ListView控件怎么添加新的tiem时滚动条一直在最下面
listBox.ScrollIntoView(listBox.Items[listBox.Items.Count - 1])