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. Azkaban3.81.x部署+坑

    一.前提安装 1.1 Java1.8环境搭建 1) 下载jdk1.8并解压: # tar -zxvf jdk-8u201-linux-i586.tar.gz -C /usr/local 2) 添加Ja ...

  2. centos6.5宽带拨号上网

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

  3. 网络流--最大流--POJ 1459 Power Network

    #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #incl ...

  4. mysql的group by

    Group By 有几个规律: Group by的语法:"Group by <字段>“意为按照字段进行分类汇总.这里需要注意四点:        (1)按照你的分类要求Group ...

  5. 《C程序设计语言》 练习2-4

    问题描述 重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除. Write an alternate version of squeeze(s1,s2) t ...

  6. 【Hadoop离线基础总结】Apache Hadoop的三种运行环境介绍及standAlone环境搭建

    Apache Hadoop的三种运行环境介绍及standAlone环境搭建 三种运行环境 standAlone环境 单机版的hadoop运行环境 伪分布式环境 主节点都在一台机器上,从节点分开到其他机 ...

  7. Spring Boot Admin简介及实践

    问题 在若干年前的单体应用时代,我们可以相对轻松地对整个业务项目进行健康检查.指标监控.配置管理等等项目治理.如今随着微服务的发展,我们将大型单体应用按业务模型进行划分,以此形成众多小而自治的微服务, ...

  8. 初探numpy

    安装numpy 通过python pip安装numpy pip install numpy numpy ndarray对象 创建ndarray对象只需调用numpy的array函数即可 numpy.a ...

  9. [hdu1533]二分图最大权匹配 || 最小费用最大流

    题意:给一个n*m的地图,'m'表示人,'H'表示房子,求所有人都回到房子所走的距离之和的最小值(距离为曼哈顿距离). 思路:比较明显的二分图最大权匹配模型,将每个人向房子连一条边,边权为曼哈顿距离的 ...

  10. 透过面试题掌握HashMap【持续更新中】

    本文主要是自己阅读了HashMap和ConcurrentHashMap源码及一些Java容器类相关的博客后,找了一些很多面经中涉及到的Java容器相关的面试题,自己全部手写的解答,也花了一些流程图,之 ...