在进行仿真时,经常遇到设计代码中需要调用一些标准的库文件,但是在设计的编译列表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使用库文件的更多相关文章

  1. SharePoint文档库文件夹特殊字符转义

    当我们在SharePoint网站文档库中新建文件夹时包含了~ " # % & * : < > ? / \ { | }字符时(一共15个), 或者以.开头或者结束,或者包含 ...

  2. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  3. 安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题

    本文的下拉刷新以及上拉加载都是用PullToRefresh实现的,关于PullToRefresh的介绍以及源码,网上可以找到很多,本人在此不再赘述. PullToRefresh是一套实现非常好的下拉刷 ...

  4. 第一百六十一节,封装库--JavaScript,完整封装库文件

    封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象, ...

  5. Linux系统上java调用C++ so库文件

      PART1:     java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包           <!-- http ...

  6. gcc编译时头文件和库文件搜索路径

    特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始( ...

  7. golang调用c++的dll库文件

    最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以 ...

  8. 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

    在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Alte ...

  9. linux web服务器必需的库文件

    往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下: yum -y install m ...

随机推荐

  1. 激光雷达数据到云cloud

    激光雷达数据到云cloud 在美国地质调查局的3D提升计划(3DEP)被激发到一个新的方式可用性宣布从3DEP仓库的访问和处理激光雷达点云数据. 3DEP一直在美国使用光检测和测距(激光)技术获取三维 ...

  2. 开发平台支持Arm Cortex-M的微控制器上人工智能训练

    开发平台支持Arm Cortex-M的微控制器上人工智能训练 Development platform enables AI training on Arm Cortex-M-based microc ...

  3. GVS智能照明再下一城,前方到站贵阳地铁2号线!

    近期,"新基建"又频频刷屏,也为城轨交通建设快速发展提供了广阔的想象空间. 在新基建的导向作用下,越来越多城市加入地铁阵营.如果说普铁和高铁作为城市的发展窗口,那么地铁则是城市交通 ...

  4. 【NX二次开发】Block UI 半径尺寸(沿曲线的位置)

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  5. Boost 矩形布尔运算

    本文主要介绍boost库中矩形布尔运算的思路和代码解析.在此感谢Intel对开源事业的贡献. 基本概念 图形的插入 所有的操作的第一步都是进行图形的插入,我们需要声明定义好我们要使用的图形类型,以矩形 ...

  6. spring boot 并发请求,其他系统接口,丢失request的header信息【多线程、线程池、@Async 】

    场景:一次迭代在灰度环境发版时,测试反馈说我开发的那个功能,查询接口有部分字段数据是空的,后续排查日志,发现日志如下: feign.RetryableException: cannot retry d ...

  7. 你应该这样去开发接口:Java多线程并行计算

    所谓的高并发除了在架构上的高屋建瓴,还得需要开发人员在具体业务开发中注重自己的每一行代码.每一个细节,面子有的同时,更重要的还是要有里子. 面对性能,我们一定要有自己的工匠精神,不可以对任何一行代码妥 ...

  8. xshell远程连接另一台电脑的数据库,启动图形失败

    1.用xshell远程连接数据库10.62.207.152,且用oracle用户直接登陆 2.执行:netca 报错: Oracle Null Service Configuration: Error ...

  9. Java安全之反序列化回显研究

    Java安全之反序列化回显研究 0x00 前言 续上文反序列化回显与内存马,继续来看看反序列化回显的方式.上篇文中其实是利用中间件中存储的Request 和Response对象来进行回显.但并不止这么 ...

  10. 通过helm部署EFK收集应用日志,ingress-nginx日志解析。

    前段时间看了马哥的k8s新书,最后几章讲了下EFK,尝试部署了下,很多问题, 这里改进下,写个笔记记录下吧. 准备工作 所有组件都通过helm3部署,选添加几个仓库. helm repo add bi ...