Linux下VCS2014和Verdi2015的联合使用
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的联合使用的更多相关文章
- linux下可执行程序的装载和启动
张雨梅 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 1.c文件的编译 图中显示了c ...
- Linux下串口编制【转】
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...
- linux下的struct sigaction
工作中使用案例: struct sigaction act; act.sa_sigaction = handleSignal; act.sa_flags = SA_SIGINFO; sigemptys ...
- Linux下双网卡绑定(bonding技术)
Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...
- Linux下的”锁“事儿
原由 之所以写这篇文章当然还是在面试中涉及了对本文标题的相关问题-互斥锁和自旋锁的区别.听到这个问题的时候,我是比较忐忑的.互斥锁我还能简单说一些,但是对于自旋锁的了解几乎为零.为此,将总结Linux ...
- Linux下串口编程入门
简介: Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍. 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用 ...
- Linux下的定时器
以下摘自linux下的man文件:(man getitimer) #include <sys/time.h> int getitimer(int which, struct iti ...
- Windows下与Linux下编写socket程序的区别 《转载》
原文网址:http://blog.chinaunix.net/uid-2270658-id-308160.html [[Windows]] [Windows: 头文件的区别] #include< ...
- Socket程序从windows移植到linux下需要注意的
)头文件 windows下winsock.h或winsock2.h linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in. ...
随机推荐
- Docker 1.13.0 详细更新日志
本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...
- 我想solo自己一个人!
区域赛之后你就该走了,现在你告诉我,没精力不打了,我真谢谢你! 今年就TM的没有一点舒心的地方! 父母分居, 队友出走, 队伍解散, 白天家里两个外甥很吵, 鼻窦炎复发, 喜欢的妹子也追不到, 整夜失 ...
- Nmon 监控结果分析
一:CPU信息 SYS_SUMM图表: 1.折线图中蓝线为cpu占有率变化情况:粉线为磁盘IO的变化情况: 2.下面表各种左边的位磁盘的总体数据,包括如下几个: Avg tps during an i ...
- 07_CSS入门和高级技巧(5)
超级链接美化 1.伪类 同一个超级链接,根据用户的点击情况,有自己样式: 超级链接根据用户点选情况,有4种状态: a:link 没有访问的超级链接 a:visited 已经访问的超级链接 a:hove ...
- 【HBase】快速搞定HBase与Hive的对比、整合
目录 对比 整合 需求一 步骤 一.将HBase的五个jar包拷贝到Hive的lib目录下 二.修改hive的配置文件 三.在Hive中建表 四.创建hive管理表与HBase映射 五.在HBase中 ...
- 【Kafka】Flume整合Kafka
目录 需求 一.Flume下载地址 二.上传解压Flume 三.配置flume.conf 四.启动flume 五.测试整合 需求 实现flume监控某个目录下面的所有文件,然后将文件收集发送到kafk ...
- Autojs - 用 JavaScript 实现自己的安卓手机自动化工具脚本
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- .net core grpc单元测试 - 服务器端
前言 gRPC凭借其严谨的接口定义.高效的传输效率.多样的调用方式等优点,在微服务开发方面占据了一席之地.dotnet core正式支持gRPC也有一段时间了,官方文档也对如何使用gRPC进行了比较详 ...
- [hdu4598]二分图判定,差分约束
题意: 给一个图,问能否给每个点分配一个实数值,使得存在一个数实数T,所有点满足:|value(i)| < T 且 u,v之间有边<=> |value(u)-value(v)| &g ...
- CentOS8 右键打开后没有终端
最近研究CentOS8 发现右键打开后没有终端这一项: 1.经过查询发现是没有安装一个包 2.使用命令进行安装并重启: [root@base ~]# yum -y install nautilus- ...