在进行仿真时,经常遇到设计代码中需要调用一些标准的库文件,但是在设计的编译列表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”,那么库文件中所有的模块都将会被编译;

更多技术内容,可关注下图个人技术微信公众号,欢迎朋友们关注沟通!

最新文章

  1. 使用AjaxPro实现无刷新更新数据
  2. python迭代器,生成器,装饰器,context模块
  3. Java并发编程核心方法与框架-Future和Callable的使用
  4. 解决 Cocos2d-x 中 Android.mk 手动添加源文件
  5. JS简易时钟
  6. django初探
  7. T-SQL 一次插入多行数据
  8. 学习okhttp wiki--Connections.
  9. nginx-lua实现简单权限控制
  10. js限制日期选择范围是两个月
  11. uImage和zImage的区别
  12. 编程实现将一个N进制数转换成M进制数
  13. 如何免费下载付费音乐歌曲,6个网站+8个APP
  14. xslt中substring 函数的用法
  15. Excel 两列单元格合并超级链接的VBA 写法
  16. Swift5 语言参考(六) 声明
  17. NOIP2018考前抱佛脚——搜索复习
  18. 利用wsdl2java工具生成webservice的客户端代码
  19. (转)Python3.5——装饰器及应用详解
  20. 批处理 安装、卸载 window service

热门文章

  1. 基于Kaggle的图像分类(CIFAR-10)
  2. CountDownLatch原理详解
  3. 4,java数据结构和算法:双向链表 ,有序添加,正向遍历,反向遍历, 增删改查
  4. 【Java实现】剑指offer53.1——在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)
  5. 【Android编程】Java利用apktool编写Metasploit恶意后门注入工具
  6. 【接口测试】-1.常用的接口测试工具(Postman、soupUI、Jemeter)
  7. 13:Linux虚拟机网络连接异常
  8. python通过字典实现购物车案例-用户端
  9. 孟老板 ListAdapter封装, 告别Adapter代码 (三)
  10. 【复习】Listening and Reading Comprehension