引言
在第一次接触IC的时候,本人对VCS这些EDA的软件认识还不够深刻,也许,进入IC这个行业已经5个月,现在又重新来看VCS,虽然这个软件,我可能暂时还不需要,但是这个可以成为加分项,也是IC设计人员必备的软件,此外,我想后期会再开启ncverilog的专题进行学习。如果这些东西不去反复的try,可能永远就还是停留在原地。我的博客不仅仅是对视频笔记的记录,也有自己的想法和一些技巧在里面,如果有理解不正确的,欢迎指正。
作者:ciscomonkey
资料来源:VCS视频教程。
Verilog仿真事件队列
这里先提一个问题,Verilog是并行的,计算机是并行的,那么计算机是如何仿真的呢?
Verilog语言的仿真基于分层的事件队列
Verilog语言规范没有规定当多个时间被安排在同一个时刻来调度时,应该执行哪一个。
只要在同一层的事件,什么执行顺序都是可以的。
因此不同的软件,可能仿真出来的结果却不一样!
如下图所示:
VCS的option
VCS严格来分有两个大的步骤:
1、编译compile
2、simulaton仿真
注意下图VCS在编译过程中的中间文件转换过程
VCS的编译
VCS的编译格式非常简单
VCS+filename+【option】
这里需要注意的就是有哪些option
你输入vcs -help 出来太多,肯定不方便查看。
下面我准备了两种方法:
方法一:通过gvim打开后,然后搜索。
方法二; grep -A代表显示10行信息,-R 的前面记得加转意符号
-Mupdate
这个option代表增量编译,假设我有100个.v文件,如果编译完成后,我突然发现我有个.v文件需要小小的改动,全部重新编译是相当浪费时间的,这个时候我只需要做增量编译即可,然后与原来编译完成的文件做link
如下图所示,仅仅是更改了mem.v文件,那么就将mem.v文件转换为mem.o文件,然后和原来的CPU.o文件做link,即可,特别是对于大型的design设计,这种方式显得尤为重要。
VCS的仿真
前面是介绍的compile时候的开关选项,下面介绍的是VCS的仿真时候的开关选项。
使用designWare的库
实际操作
如上图所示,启动失败,为什么?
因为我没开启-debug_all
重来
如下图所示,加了debug_all之后,增加了几个文件,测试,删除这几个文件也可以启动。
如下图所示,正常开启:
选定信号后,右键add to wave
好,下面我们来关注一下这些产生的中间过程文件。
csrc文件:代表c语言的src文件,里面的文件夹包含了.o\.h\.c文件