俗话说,隔行如隔山。非微电子专业没有做过芯片的同学,是不知道这个世界上还有效率更高的用来对Verilog/VHDL代码进行仿真的工具的。具体来讲,对于做FPGA开发的同学而言,需要知道除了ModelSim、ISE/Vivado或Quartus以外的仿真调试工具。一般来说,拿FPGA综合工具如ISE/Vivado或Quartus做仿真纯粹是小孩子过家家瞎胡闹,ModelSim做仿真虽然是正道但也存在诸多问题(如ModelSim的仿真结果用来做芯片是不被认可的),用做ASIC芯片的EDA仿真工具来做FPGA的仿真调试,对于FPGA开发者而言才是真正的鸟枪换炮。本文就以较为古老的Windows版本的Verdi工具为例说明做ASIC仿真的EDA工具在做FPGA仿真调试时也非常有用,能够提高效率。

调试FPGA,大家常用的工具主要有以下几种:Quartus,ISE或Vivado ,而仿真工具则常用ModelSim,个别初学者甚至还拿ISE/Vivado或Quartus做过仿真。

用ModelSim建工程,然后开始仿真,看波形,对比生成的文件。

或者把Vivado和ModelSim关联起来,联合仿真。

长期以来,对于没有做过芯片设计的FPGA开发人员来讲,早已习惯了上述工具的配合使用,找一个BUG也是借助于上面的工具,费时又费力。

尤其是ModelSim,如果要做芯片,ModelSim的仿真结果是不被认可的。同样的工程,ModelSim仿真通过的testcase,再拿专业做芯片用的仿真工具VCS或者NCVerilog等再做仿真就不一定通过。但,上面提到的VCS或者NCVerilog等软件是没有Windows版本的,只有Linux版本的工具,这对于习惯了Windows系统环境的FPGA开发人员来讲,为了一个软件,再去熟悉Linux系统的开发环境实在是太麻烦

然而,对从芯片设计跨界到FPGA开发的人员来讲,上述调试手段太过于落后。本文就推荐一款做ASIC芯片的仿真工具,可以大幅度提高FPGA开发过程中的仿真调试效率。

最最重要的是,这些软件版本都是Windows的!!!并且,都是Windows绝版软件,此后再没有Windows版本的更新版。

找了一下十几年前的移动硬盘,连到2019年WIN7系统的电脑上,打开EDA工具文件夹,安装后发现竟然真的可以用!

nLint

NOVAS nLint 是一个广泛的HDL语言的设计规则检查工具,它整合于Verdi和Debussy调试平台。Verdi和Debussy系统帮助工程师加速了解复杂设计以提高设计、验证和调试的效率。nLint提供的功能在于帮助工程师完整的分析HDL代码的语法和语义的正确性。 nLint通过对源代码的检查,以确保源代码的描述对于诸如同步设计、可测试性设计,命名等设计规则保持一致。nLint帮助工程师在设计的初期尽早的发现问题,以减少验证、综合和调试的时间。并且可以帮助工程师书写出易于阅读和维护的源代码程序,从而实现可以在不同的设计小组之间重复应用的设计描述。在nLint的环境中,可以很方便的进行需测试的文件和规则的整理,工程师可以在nLint提供的图形界面中指定哪些源代码文件需要检查,哪些设计规则需要检查,并且可以针对不同的设计规则赋予不同的参数以符合自身的规则定义。

安装完成后,便可导入RTL代码。

可以自己设定一些规则,对代码规范进行检测,提前把一些问题消灭在萌芽状态。

本公众号之前一篇文章分享程序--Verilog HDL代码分析及整理软件,也可以用来对代码规范进行分析,甚至进行整理。这些规范化的约定,在整个FPGA开发流程中,往往是最能达到事半功倍效果的一个步骤。但往往对于FPGA开发人员而言,常常给忽略了。认为等到后面发现问题再修改也不迟,殊不知,不从一开始就注重代码规范,可能某些严重的问题甚至导致整个设计需要重做。

主要原因还是因为做芯片承担的风险成本要远高于FPGA的开发。

有了上面的原因,很少见做FPGA开发的人去做后仿真的。因为后仿真不但速度超慢,并且如果出现问题后也无法准确的定位到具体的代码中,只能通过FPGA网表中对应的位置去猜测问题可能出现在RTL代码中的具体位置,还不如直接上板运行来的快,出问题了,大不了再重新添加ChipScope观测信号或者SignalTAP观测信号重新运行抓信号判断就是了。

debussy

大家在用ModelSim做仿真时,常常遇到这样一个问题。为了追某个BUG的原因,经常发现,跑出来的波形信号里面没有自己想看的变量信号,因此,不得不重新把想看的信号添加进波形中,重新跑一遍波形。对于大的设计而言,重新跑一遍波形也需要耗费不少的时间。最坏的情况是,上述过程可能需要反复的做很多次才能找到BUG的产生源头。那么,有没有一种办法,只需要跑一次仿真,就可以把整个波形储存下来且不占太大的空间,然后在追踪BUG时,还可以方便的把波形中出错的地方直接对应到代码中具体的某一行上,还可以方便的对某个变量进行后向或者前向的追中?

答案是有!这款软件就是Debussy。现在也集成到了Verdi软件中。

1、Debussy 软件简介

Debussy 是 NOVAS Software, Inc(思源科技)开发的 HDL Debug & Analysistool,这个软件主要不是用来跑模拟或看波形,它最强大的功能是能够在 HDLsource code、schematic diagram、waveform、state bubble diagram 之间,即时做 trace,协助 FPGA 工程师 debug。

Debussy 是非常实用的 Verilog 或 VHDL 的调试工具,可以帮助设计者快速理解复杂的设计,尤其是初次接触他人写的代码的时候,另外还能够查找和定位设计中存在的 bug,提高效率。

可能您会觉的只要有仿真器,如 ModelSim,就可以做 debug 了,我何必再学习这个软件?实际上这个软件能够帮助设计者快速理解代码、波形和原理图之间的联系,使得调试变得十分地便捷。

Debussy V5.0 以后的版本,还提供了 nLint 检查工具(见本文前面介绍),它的检查规则十分严苛,能够帮助 check coding style & synthesizable,从某些方面可以协助工程师了解 coding style,并养成好的编写代码的习惯。 当然良好的 coding style 也需要结合厂商的 FPGA 底层结构单元来具体分析,而 nLint 工具并不会从这个方面对代码进行检查。所以,如何提高 coding style 是一个综合性很高的话题,不是单从某一方面入手就能解决问题,这些都是后话了。

Debussy 是支持 Windows 环境的,它的新版本改名为 Verdi,增加了一些功能,但是新版本的 Verdi 只能支持 Linux 环境。

2、用modelsim产生fsdb文件与Debussy协同工作

第一步:挂 PLI

在 modelsim.ini中搜索Veriuser,找到相应行之后进行修改,将文档中

;Veriuser = veriuser.sl

一行修改为:

Veriuser=c:ovasdebussyshareplimodelsim_pliwinntovas.dll

去掉前面的分号。

第二步:新建两个环境变量

第一个新建环境变量:D_LIBRARY_PATH

变量值:

C:ovasdebussyshareplimodelsim_pliwinntovas.dl

第二个新建环境变量:PLIOBJS

变量值:

C:ovasdebussyshareplimodelsim_pliwinntovas.dl

第三步:在 TestBench 中添加语句

initialbegin $fsdbDumpfile("filename_you_want.fsdb"); $fsdbDumpvars;end

如果上述步骤无法正确完成,则用ModelSim仿真时会报出Warning,导致无法生成fsdb波形文件。

另外,笔者试了一下64位的ModelSim软件,按照上述方法无法正确产生fsdb文件,换回32位的ModelSim软件,如Modelsim SE 6.5b,则能够顺利产生波形文件。如下图所示

3、Debussy软件使用方法

在使用 Debussy 软件过程中,软件并不能直接智能地识别 Verilog-2001 代码,需要对软件进行一下设置,否则添加文件时软件就会报出很多错误告警,而且也看不到原理图,设置的方法如下:

点击工具栏的 File,选择 Import Design,点击From File,再点击对话框右侧的 Options,在弹出的 Import Design Options 对话框中输入“-2001”,如下图所示:

添加支持 Verilog-2001 标准的设置

设置完成后,就能正常导入文件,进行仿真和调试了,导入方法是点击工具栏的 File,选择 Import Design…,在文件列表框中选中待观察的文件夹,接着全部选中出现的文件,再点击 Add 即可完成文件导入,如下图 所示:

代码添加到Debussy之后,就可以点击查看各个模块的组成及调用关系了。还可以逐级的点进去查看到具体代码一级,包括状态机等。方便大家进行代码的分析及消化理解。

关键的内容来了!

结合上面产生的fsdb文件,下一步就需要把波形文件test.fsdb导入到debussy中,这样就可以跟代码对应上!这一点很重要,可以双击波形中某个时刻的某个信号的波形,直接跳转到对应的代码!

找到对应的代码后,还可以继续找该变量的前驱和后继,同时,随时可以添加进波形中进行查看(这要比ModelSim方便多了,常常因为波形中没有提前添加某个信号,而不得不重新跑一下仿真)。

当然,Windows版本的debussy还存在不少的问题,使用起来某些地方不如Linux下最新版的Verdi,所以还是建议大家最后自己装个虚拟机,体验一下Linux下代码调试的高效,相比笨拙的ModelSim而言,你会立刻有鸟枪换炮的感觉!

如下动图,是Linux下使用SimVision工具(跟Verdi类似)通过波形上状态机信号对应到实际框图的例子,注意,框图中会实时显示出光标具体时刻对应的信号数值,还可以跟踪到相关的其它信号,彻底使得代码调试可视化!

如需上述软件的安装包,或安装使用过程中遇到了问题可留言联系。

FPGA调试不易,且行且珍惜!也请对你身边做芯片或做FPGA开发的同学好一点,他们的压力比较大。据说,海思最近疯狂立项,疯狂招人,人才严重缺乏,也希望同学们多多选择FPGA开发或者芯片设计方向就业,为我们国家的芯片设计和集成电路产业早日摆脱别人的束缚做出自己的贡献!

全文完。

ise仿真添加信号_「干货」推荐一款FPGA仿真调试鸟枪换炮的工具相关推荐

  1. ise仿真添加信号_西门子TIA+PLCSIM+MCD,构建自动化仿真系统

    写在前面(文中超链接仅在微信公众号"智能制造之家"有效) 前面我们介绍了西门子.达索.罗克韦尔等诸多数字化工厂仿真软件: 一文了解西门子.达索.施耐德.罗克韦尔等巨头数字化工厂仿真 ...

  2. python 开发工具_「干货」推荐一整套 Python 开发工具

    文 | Brendan Maginnis 译 | EarlGrey 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项目,将节省大量时间并带来更快乐的编 ...

  3. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  4. 110配线架打法图解_「干货」图文并茂教会你110语音配线架线缆打法

    原标题:「干货」图文并茂教会你110语音配线架线缆打法 110语音配线架是机房工程中常用的语音配线工具,下面我们就来看下110配线架是如何安装的,以安装25对大对数为例. 110语音配线架 (1)将配 ...

  5. 请求失败或服务未及时响应 有关详细信息_「干货」从零开始的微服务搭建之路...

    随着公司的业务发展,有幸经历了从单体应用迁移到分布式应用,又从分布式应用开始准备搭建微服务应用,以下是公司从零开始搭建微服务的过程,记录并分享出来,希望对大家有所帮助,我们先使用Spring Clou ...

  6. vivado中bit文件怎么没有生成_「干货」FPGA设计中深度约束技巧及调试经验总结...

    今天跟大家分享的内容很重要,也是我们调试FPGA经验的总结.随着FPGA对时序和性能的要求越来越高,高频率.大位宽的设计越来越多.在调试这些FPGA样机时,需要从写代码时就要小心谨慎,否则写出来的代码 ...

  7. sql 查询重复数据大于2条以上的_「干货」关于SQL书写建议 索引优化的总结,你值得拥有...

    前言 平时写sql写的比较多,一直没把优化相关的知识整理记录下来,本文章记录对SQL优化的一些技巧: 我将结合demo(一个百万级数据表),去实践验证这些优化技巧. 测试用例 接下来,我们创建一个测试 ...

  8. flutter git 拉不起来_「干货」Flutter开发环境配置备忘录

    为什么要用Flutter? 嗯,本篇文章不会讲,因为我认为想看这篇文章的应该已经下定决心要学习Flutter. Flutter开发环境支持安装在Windows.Mac OS和Linux下,区别在于Wi ...

  9. 输入快捷键显示未知命令_「干货」华为VRP基础和常用命令了解一下

    华为VRP系统的理解 手机里面是安卓系统,电脑里面windows系统 在我们路由器.交换机.防护墙等网络设备中 他们当中的系统就是VRP系统(通用路由平台) 可以理解为华为的类型交换机,华为类型路由器 ...

最新文章

  1. 经典不过时,回顾DeepCompression神经网络压缩
  2. 一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源
  3. java使用Calendar类获取常用简单工具类
  4. qq计算机丢失msvcp100,打开会声会影提示msvcr100.dll丢失怎么办?
  5. LeetCode 915. 分割数组
  6. web前端 到底怎么学?掌握什么可以拿到高薪?
  7. GIT 学习笔记 - 20181201
  8. QT5实现摄像头预览与扑捉图像
  9. Illustrator 教程,如何在 Illustrator 中保存项目?
  10. 实现option上下移动_jQuery操作Select的Option上下移动及移除添加等等
  11. 计算机打印中 纸张不出来,菜鸟发货平台打印机不出纸怎么办?打印机纸张尺寸如何设置?...
  12. 中兴软件笔试 c语言,【中兴通讯员工笔试试题及答案】 - 面试网
  13. 《梦想新大陆》美术研发手札
  14. 欢迎关注异贝!今天与您一起分享服装行业异贝引客方案设计!
  15. 关于 PHP 的框架 phalcon 学习(一) url 路由过程。
  16. jsp输出金字塔_倒金字塔加码操作技巧及案例解析
  17. 基于机器学习的天气数据分析与预测系统
  18. 车用计算机内部结构图,汽车电脑的基本结构和工作原理
  19. Tyvj 1004 滑雪~
  20. C语言 1999年标准

热门文章

  1. 链表冒泡排序java_055-冒泡排序算法代码实现
  2. php青茶什么时候拆,茶叶保质期多长时间 黑绿红白黄青茶的保质期为多久
  3. java里有没有 0的使用_请问有没有人有零基础Java基础习题?
  4. thinkphp3.2.3漏洞_Chrome新版本修复CVE202015999 0 day漏洞
  5. c++层次遍历_数据结构与算法,弄懂图的两种遍历方式
  6. jieba库词频统计_运用jieba库进行词频统计
  7. printf 重新实现put_Go 实现海量日志收集系统(四)
  8. oracle表数据如何恢复,ORACLE如何恢复被delete的表数据
  9. 计算机网络基础代码,计算机网络基础知识(示例代码)
  10. 2019死磕java面试题_死磕 java同步系列之开篇