在进行仿真时,常常遇到设计代码中须要调用一些标准的库文件,可是在设计的编译列表filelist中却没有相应的库文件,这时为了完成仿真,须要设计人员提供对应的库文件或者库文件所在的路径,而后仿真时将这些库文件或者路径添加到编译命令中,以实现仿真编译的正常进行。这个过程在实际中是经过”-y”和”-v”将对应的这些库文件或者库路径告诉仿真器,这样在编译时仿真器就会在对应的库文件或者库路径下寻找对应的module代码。本文将示例”-y”和”-v”具体如何使用。微信
1 使用库文件spa
若是模块中存在对于某个库文件中的某个module的实例化,那么能够经过在编译命令中使用”-v”的方式指定要搜索的库文件。其格式以下:命令行
compile_order -v library_file.v设计
其中compile_order为仿真器的编译命令,library_file.v为库文件,其中能够包含多个模块,编译时只编译用到的模块。blog
2 使用库路径内存
若是在编译的时候,不知道文件夹中到底哪一个库文件包含须要的模块,那么这是可使用”-y”的方式,指定要搜索的文件夹,可是这是须要注意,使用”-y”的同时须要配合使用”+libext+”用于指定要在搜索文件夹中哪些后缀类型的文件中进行搜索。其格式以下:编译器
compile_order -y ./path_name +libext+.vio
其中compile_order为仿真器的编译命令,./path_name用于指定要搜索的文件夹的路径(路径名包含要搜索的文件夹名), +libext+.v用于指定要在被搜索文件夹中搜索的文件的后缀,若是要搜索多个后缀能够继续追加”+libext+.v+后缀名”,若是没有后缀可使用两个”++”连续写便可。编译
【示例】class
示例文件的结构以下图,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
更多技术内容,可关注下图我的技术微信公众号,欢迎朋友们关注沟通!