1、基础知识
编译流程:
-Mupdate :增量编译,作用是将需要修改的某个文件修改后重新编译,其.o文件再与其他文件相链接。
-R :编译后立马执行。
-gui :打开DVE的实时GUI。
-l :把编译过程中产生的一些信息写入日志文件中,便于日后调试、错误定位等。
-sverilog:表示支持SystemVerilog语言。
+v2k:编译支持Verilog 2001标准
1)厂商提供的工艺库调用
-v :找哪个工艺库文件
-y :从哪个路径搜索需要的工艺库文件或文件夹等
+libext+lib_ext:
+incdir+inc_dir:
2)-f :把多个文件整合到一个文件中
3)-o foo:修改默认生成的二进制执行文件,将原来的simv替换为foo文件
4)+define+<macro_name>=<value>:定义一个宏的值是多少
-s:从什么时候开始仿真,什么时候结束仿真
$plusargs():
-userswitch :怎么动态的从键盘或者脚本中接收参数。
-l logfile :将真个编译仿真过程中产生的参数等等信息全部写入文件中,工程中经常使用。通常是通过logfile文件+wave文件结合完成功能验证。
仿真案例:
怎么调用一个库?实例:调用软件自带的DesignWare Library这个库
这个文件存在于VCS的安装目录中,是自带的库,其内部是一些RTL级别的代码,与厂商等提供的工艺库不相关,可以在代码中直接例化使用。
编译流程:
非增量编译:
make clean:清除后产生的一些文件
vcs ./tb/fsm_top.v ./rtl/fsm_moore.v +v2k -debug_all:编译指令,下面是编译产生的文件的文件夹。
编译结束:
csrc:编译过程中产生的c文件,文件夹内部的Makefile是用来维护增量编译的。
simv:二进制可执行文件
simv_daidir:
增量编译:命令末尾加 -Mupdate
再次运行带增量维护的编译指令:
编译结束:
通过检测文件状态后,如果没有修改则提示不需要再编译。
由于本身产生的文件,记录的信息有限,使用log记录更过的信息。
使用log文件记录信息:
编译结束,产生一个.log文件:
使用gvim打开.log文件,进行查看。
编译仿真同时进行 -R , 启动gui -gui
自定义二进制执行文件名字
定义在.v文件中的一些变量存放在其他文件中时,需要添加划线指令,
定义一个宏的方式:三种
1)原文件中进行定义
2)头文件中定义,并链接头文件查找
3)在头文件中定义宏后,然后在命令行中加 +define+宏名