首页 > 如何通过-y和-v使用库文件
头像
硅芯思见
发布于 2022-10-06 22:09 广西
+ 关注

如何通过-y和-v使用库文件

在进行仿真时,经常遇到设计代码中需要调用一些标准的库文件,但是在设计的编译列表filelist中却没有相应的库文件,这时为了完成仿真,需要设计人员提供对应的库文件或者库文件所在的路径,然后仿真时将这些库文件或者路径添加到编译命令中,以实现仿真编译的正常进行。这个过程在实际中是通过-y-v将对应的这些库文件或者库路径告诉仿真器,这样在编译时仿真器就会在对应的库文件或者库路径下寻找对应的module代码。本文将示例-y-v具体如何使用。

使用库文件

如果模块中存在对于某个库文件中的某个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中例化了两个模块,分别是t2andt1xort2andt2.v中,t2.v中还存在另一个模块t2x2and,并且与top_tb.v位于同一个文件夹中。t1xor位于文件夹path中,该path文件夹下还有另外两个文件:t0xor.vt2xor.v,并且在t1xor例化了t0xor。整体结构如下图所示:

【源代码】


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

【仿真结果】


通过编译后仿真器分析的电路层次结构我们可以可以看到,只有在top_tb中被调用的模块出现在了设计层次中,没有被调用的并没有出现,即只有被调用的模块被编译到了设计中。同时我们注意到,因为t1xor中例化了t0xor,编译时会自动识别库中本身的层次调用关系,将相关的库文件自动搜索编译,但是需要注意的是这时t1xort0xor必须都位于相同的文件夹中。

通过示例我们可以知道,使用-v-y选项指定库时,编译器将只编译那些设计中用到的模块,这些用到的模块无需再添加到filelist中,这样可以大大压缩编译时间及内存空间,避免了在众多文件或者路径下找模块的问题,将人力工作交由电脑来完成。

【总结】

使用库文件

在命令行中使用选项:-v file_name

使用库目录在命令行中使用选项 -y directory_name在命令行中使用选项 +libext+file_extension

-y-vVerilogSystemVerilogLRM中并没有出现,但是他们不是某家EDA大厂所特有的,所有的EDA大厂生产的仿真器都支持;

-y-v仅适用于VerilogSystemVerilog的代码;

使用-y-v指定库文件和库路径时,只编译那些设计中用到的模块。如果没有使用-v,那么库文件中所有的模块都将会被编译;


全部评论

(1) 回帖
加载中...
话题 回帖

近期热帖

热门推荐