VCS和Verdi是IC设计中常用的两款开发工具。VCS是Synopsys公司的产品,和大家所熟知的ModeSim一样的都是EDA仿真工具。Verdi是Nocas公司(已经被Synopsys公司收购)的产品,早前的版本叫Debussy,是一款十分优秀的Debug工具。虽然VCS中的DVE也能查看波形和Debug,但是Verdi则显得更专业一些。唯一让很多初学者感到不舒服的就是他们都需要在Linux环境中才能使用,这对于习惯了Windows环境下操作的人来说非常不友好,但在公司开发项目时常常都是Linux环境,方便大型项目开发时的管理和团队协作,即便是FPGA的开发也是如此,学会了这两款工具后我们也同样可以用于FPGA开发。

值得庆幸的是网上已经有很多朋友做好了一套IC学习的开源镜像,如图1所示为我使用的其中一个开源镜像介绍,我们下载镜像包后只需要用虚拟机(我所安装的虚拟机版本为VMware14)打开“.vmxf”文件即可使用已经安装好的全套IC开发工具(如需资料请加群:450843130)。即便是这样免去了众多软件安装繁琐易出错的过程,而在使用中依然还会遇到很多麻烦,下面我就要给大家讲一下我最近遇到的关于VCS2014和Verdi2015联合仿真遇到的困难,也在此感谢帮助我解决该问题的所有朋友。

图1

因为VCS和Verdi这两个工具的开发者最初并不是一家公司,所以他们之间的联合使用并不友好,VCS所产生的“.vpd”文件Verdi并不能直接使用,而是需要转化为Verdi可识别的“.fsdb”文件才行,所以我们要先生成“.fsdb”文件,就是这个过程折腾了我很久。
我是用一个简单状态机的例子来进行的验证,先写好四个所需的文件,名为“simple_fsm.v”的RTL代码,名为“tb_simple_fsm.v”的Testbench,一个包含各种命令的“Makefile”文件和一个“file_list.f”设计列表文件。在此之前已经在VCS上的DVE进行了Debug,也可以单独打开Verdi,现在需要将他们通过“.fsdb”文件联合起来Debug。经查阅资料知道,要生成“.fsdb”文件需要在Testbench中加入图2所示的几行用于产生“.fsdb”文件代码。

图2

然后运行如图3所示的Makefile文件中的“com”编译命令。

图3

在“Terminal”中输入“make com”后出现如图4所示的错误,阅读错误信息可以知道大概的意思,大概意思是系统没有找到在Testbench文件中新添加的系统函数。

图4

如图5所示,经查阅资料在Makefile中添加了“-fsdb”。

图5

然后继续在Terminal中输入“make com”命令,如图6所示又报出来新的错误,意思大概是没有在环境变量中“NOVAS_HOME”。

图6

我们用GVIM打开环境变量设置文件进行设置,如图7所示在Terminal中输入“gvim ~/.bashrc”命令打开环境变量设置文件指定“NOVAS_HOME”的路径。

图7

如图8所示,我们找到Verdi2015的安装路径,然后在图9中相应的位置进行更改。

图8

图9

继续在Terminal中输入“make com”命令,发现还是报出和图6一样的错误,说明我们设置的环境变量没有起作用,一直怀疑了很久自己是不是在环境变量的设置上出了问题,终于在朋友的帮助下经过多次尝试发现每次设置完环境变量后需要重新启动虚拟机,否则环境变量的设置将无效,一定要记住。
       重启虚拟机后,如图10所示再次输入“make com”命令发现果然有变化了,但又是一个新的错误,大概意思是说版本不支持相关的问题,还提到了库路径,真让人头大。

图10

然后赶紧查阅网上的资料,其中有说到,只需要添加如图11所示的两个文件就可以了。

图11

但是令人失望的是报出了如图12所示的错误,意思大概是我装的VCS是32位的,和64位的Verdi不兼容,天呢,这错误太离谱了,我又到处开始找答案,最终证实我使用的VCS是64位的,没问题。

图12

经过朋友的指点,删除了网上查找的内容(可能也是对的但是不能解决我遇到的这种情况),然后改成如图13所示的内容,即在原来“-fsdb”命令的基础上再添加一个“-full64”,表示在64-bit模式下编译,生成64-bit模式仿真的可执行文件,然后继续输入“make com”命令。

图13

这次真的是出现了奇迹,没有任何报错,我赶紧输入“ls”命令如图14所示有编译后的文件生成,OK,编译正确,然后继续输入“make sim”命令生成“.fsdb”文件,这才是最关键的一步。

图14

依然没有报错,如图15所示还出现了我在Testbench中写的打印信息,然后我满怀期待的输入“ls”,果然这次没有让我失望,生成了“.fsdb”文件,非常激动,我赶紧输入“make run_verdi”启动Verdi软件。

图15

图16为在Makefile中用Verdi软件打开“.fsdb”文件的命令。

图16

如图17所示,惊喜的一幕出现了,Verid软件打开了,折腾了几天终于实现了VCS和Verdi的联合。(有朋友说Verdi2016开始可以直接使用kdb,就像在VCS中直接使用DVE一样方便,大家可以尝试一下)。

图17

这虽然是一个很小的问题,但是如果对于没有经验的新手来说可能会困扰很久,而对于经历过的人来说可能就是一分钟的事儿。遇到问题一定不能轻易放弃,要耐心、虚心请教,感谢帮我解决这个问题的很多热心朋友,我也会用同样的热情帮助更多的人!
       欢迎加入FPGA技术学习交流群,本群致力于为广大FPGAer提供良好的学习交流环境,不定期提供各种本行业相关资料!QQ交流群号:450843130

Linux下VCS2014和Verdi2015的联合使用的更多相关文章

  1. linux下可执行程序的装载和启动

    张雨梅   原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 1.c文件的编译 图中显示了c ...

  2. Linux下串口编制【转】

    串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...

  3. linux下的struct sigaction

    工作中使用案例: struct sigaction act; act.sa_sigaction = handleSignal; act.sa_flags = SA_SIGINFO; sigemptys ...

  4. Linux下双网卡绑定(bonding技术)

    Linux网卡绑定探析   2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...

  5. Linux下的”锁“事儿

    原由 之所以写这篇文章当然还是在面试中涉及了对本文标题的相关问题-互斥锁和自旋锁的区别.听到这个问题的时候,我是比较忐忑的.互斥锁我还能简单说一些,但是对于自旋锁的了解几乎为零.为此,将总结Linux ...

  6. Linux下串口编程入门

    简介: Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍. 串口简介  串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用 ...

  7. Linux下的定时器

    以下摘自linux下的man文件:(man  getitimer) #include  <sys/time.h> int  getitimer(int which,  struct iti ...

  8. Windows下与Linux下编写socket程序的区别 《转载》

     原文网址:http://blog.chinaunix.net/uid-2270658-id-308160.html [[Windows]] [Windows: 头文件的区别] #include< ...

  9. Socket程序从windows移植到linux下需要注意的

    )头文件 windows下winsock.h或winsock2.h linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in. ...

随机推荐

  1. TCP连接过程及报文解析

    可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的. 那么具体的握手挥手的过程是怎么样的呢? 这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程. 实验方法: 写一段简单的代 ...

  2. JavaScript实现折半查找(二分查找)

    一.问题描述: 在一个升序数组中,使用折半查找得到要查询的值的索引位置.如: var a=[1,2,3,4,5,6,7,8,9]; search(a,3);//返回2 search(a,1);//左边 ...

  3. centos6.5宽带拨号上网

    CentOS6以后要安装rp-pppoe这个软件,centos之前的版本是adsl-setup命令安装. (1)查看是否安装 #rpm -qa|grep rp-pppoe 没有内容输出则没安装,若可以 ...

  4. 洛谷P1122 最大子树和 树形DP初步

    小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明就向老师提 ...

  5. RF(常用关键字)

    一.常用关键字 Open Browser    [url | browser | alias]    打开浏览器 Close Browser     关闭当前浏览器(不是窗口) Close All B ...

  6. socket编程之并发回射服务器2

    承接上文:socket编程之并发回射服务器 为了让服务器进程的终止一经发生,客户端就能检测到,客户端需要能够同时处理两个描述符:套接字和用户输入. 可以使用select达到这一目的: void str ...

  7. 关于MySQL数据库的卸载

    首先对于MySQL这款数据库来讲,不能简单的卸载就草草了事,我们首先在mysql的文件下面找到my.ini这个文件, 在其中找到mysql数据库所产生的data文件,这个文件一般在c盘的一个隐藏目录下 ...

  8. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...

  9. J - Super Mario HDU - 4417 线段树 离线处理 区间排序

    J - Super Mario HDU - 4417 这个题目我开始直接暴力,然后就超时了,不知道该怎么做,直接看了题解,这个习惯其实不太好. 不过网上的思路真的很厉害,看完之后有点伤心,感觉自己应该 ...

  10. java基础篇 之 再探内部类跟final

    之前写过一篇文章:从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题,经过这两天的学习,发现有些不对,必须再来捋一捋 先看之前的例子: /** * @a ...