概述
2.
$ vcs addertb.v fa.v add4.v add8.v
或者 $ vcs *.v
vcs命令会进行以下操作:
(1)检查verilog文件的语法
(2)解析引用的模块并建立电路层次
(3)检查编译选项
(4)对电路进行优化
(5)生成link object code, run-time routines以及利用PLI创建可执行文件simv
3.执行simv文件进行仿真,但是出现了问题:
$ simv
$ bash:simv:command not found
在参照的几个仿真教程当中都是直接输入simv完成仿真,一度以为是VCS的安装出了问题导致相关文件丢失,无法执行命令,直到看到了这个帖子:http://bbs.eetop.cn/thread-424278-1-1.html
才知道实际上执行的是./simv,如果想要直接通过名字执行必须要先在.bashrc文件中设置(也反映出我对linux命令不熟悉)
需要在.bashrc文件中加入
export PATH=$PATH:.
4.simv -o选项
$ vcs addertb.v fa.v add4.v add8.v –o addertest
执行以上命令之后得到的是名为addertest的可执行文件,运行addertest以后可以得到和之前simv一模一样的结果,因此-o相当于一个帮助你在生成编译文件之前就可以预设改名的选项。
PART B
在partb目录下执行以下的命令
$ vcs addertb.v add8.v –y ../../lib +libext+.v -R
对命令进行分析:
(1)-y 指定一个verilog库目录,VCS会在这个目录当中寻找源文件中没有定义但是例化了的模块和实例。指定目录下的文件名和module名要一致且文件里面只能包含这个module,并需要用+libext+来指定文件类型。
注意:+libext+和.v之间不能有空格,否则会出现Error说没有.v这个文件,一开始习惯性地打了一个空格,一运行就报错了。
(2)-R 表示在编译之后立即执行仿真。
因此这个命令的意思是除了对addertb.v和add8.v 两个文件进行编译,还会在lib文件夹下寻找源文件中没有定义但例化了的模块,同时指定必须是.v后缀文件类型(在这里是fa.v和add4.v),并对这些文件进行编译。所有符合条件的文件编译完毕后立即执行仿真。
2. sim -f选项
创建.f文件来简化仿真时的代码,文件中包含所有要用到的源文件和库,并在编译的时候用-f选项调用。首先创建adder.f文件,文件中包含以下内容(注:这里+libext+.v中间也不能有空格):
addertb.v
add8.v
-y ../../lib +libext+.v
然后输入命令:
$ vcs –f adder.f -R
出来的是与第一步完全一样的结果,说明在第一步命令当中对.v文件的选择和-y选项都被包含在.f文件当中了。
Questions
仿真教程最后还留了两个问题,
(1)-R可以放入adder.f文件当中吗?
(2)-y选项可以用-v选项替换吗?如果可以的话要怎么替换?
(1)首先第一问,我再adder.f文件里加入了-R并运行,立即出现了Warning
Warning-[ILLGO] Invalid option used
Invalid option '-R' must be ignored.
Please check vcs -help for supported options.
然后发现-f选项的官方解释是这样的:
-f <filename> Specifies a file that contains a list of pathnames to source files and compile-time options.
-R不属于source files 也不属于compile-time options(编译选项)自然就不能放到.f文件当中了。
(2)然后是第二问,-v选项的官方解释如下:
-v <filename> Specifies a Verilog library file to search for module definitions.
Specifies a Verilog library file. VCS looks in this file for definitions of the module and UDP instances that VCS found in your source code, but for which it did not find the corresponding module or UDP definitions in your source code.
注:指定一个库文件,VCS会来这个文件中找源代码中例化的但在源代码中找不到的模块和实例,这里一个文件可以里面包含很多module。
于是我在总文件夹下创建了~/vcs/libtest/addermod.v,把fa.v和add4.v的内容都复制到addermod.v文件当中。
然后回到partb文件夹中执行以下命令:
$ vcs addertb.v add8.v -v ../../libtest/addermod.v
编译成功执行。
-y和-v的区别在于:-y是指定一个目录搜索,每个模块是目录下独立的一个文件并且名字要和模块名一一对应;而-v命令是指定一个文件,所有的模块都放在这个文件里面,对文件名没有要求。
最后
以上就是留胡子母鸡为你收集整理的VCS 实验一的全部内容,希望文章能够帮你解决VCS 实验一所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复