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. ...
随机推荐
- JSbridge 在Vue的封装与交互
原文转自: 点我 写在 JSbridge.js let isAndroid = navigator.userAgent.indexOf('Android') > -1 || navigator. ...
- Leetcode 1. 两数之和 (Python版)
有粉丝说我一个学算法的不去做Leetcode是不是浪费,于是今天闲来没事想尝试一下Leetcode,结果果断翻车,第一题没看懂,一直当我看到所有答案的开头都一样的时候,我意识到了我是个铁憨憨,人家是让 ...
- 数制转换itoa atoi int转字符串 字符串转int string转int int转string
在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...
- git的下载与安装
Git的下载地址:https://git-scm.com/download/win 第一步:根据自己电脑的位数下载Git 第二步:下载安装包,放到指定的文件夹 第三步:更换路径安装Git(也可以放在C ...
- Python爬虫(三)爬淘宝MM图片
直接上代码: # python2 # -*- coding: utf-8 -*- import urllib2 import re import string import os import shu ...
- schedule定时任务出现问题 (大坑已填)!!
因为python每次运行完,并不清除内存,nowtime一直不变,这导致了一个致命问题,使我的脚本一直运行失败,具体如下: 我设置的是每隔30分钟登陆一次,代码如下 if __name__ == &q ...
- M - 昂贵的聘礼 最短路 dij
http://poj.org/problem?id=1062 这个题目有一点点特别,因为数据很小也可以用Floyd跑,但是个人比较钟爱dij. 这个dij是怎么走的呢,首先就是普通的建图,然后就是带上 ...
- lambda表达式入门详解
转自 2018-03-02 Sevenvidia 码农翻身 1.什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个"值". 如果你想把"一块代码 ...
- Linux 面试最常问的十个问题
如果你要去面试一个Linux系统运维工程师的职位,下面这十个最常见的问题一定要会,否则你的面试可能就危险了.这些都是比较基本的问题,大家要理解,不能光死记硬背. 1.如何查看系统内核的版本 这里有两种 ...
- js日期格式与时间戳相互转换
本文转自:https://blog.csdn.net/Lc_style/article/details/80626748 1.将日期格式转化为时间戳: var date = new Date('201 ...