老话说,隔行如隔山。非微电子专业没有做过芯片的朋友,是不晓得这个世界上还有效率更高的拿来对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建工程,之后开始仿真,看波形,对比生成的文件。用ModelSim新建工程,之后开始仿真,看波形,对比生成的文件。
或则把Vivado和ModelSim关联上去,联合仿真
常年以来,对于没有做过芯片设计的FPGA开发人员来讲,已经习惯了上述工具(ISE/Vivado/Quartus+Modelsim)的配合使用,找一个BUG也是依靠于前面的工具,费时又吃力。尤其是ModelSim,假如要做芯片,ModelSim的仿真结果是不被认可的。同样的工程,ModelSim仿真通过的testcase,再拿专业做芯片用的仿真工具VCS或则NCVerilog等再做仿真就不一定通过。但前面提及的VCS或则NCVerilog等软件是没有Windows版本的,只有Linux版本的工具,这对于习惯了Windows系统环境的FPGA开发人员来讲,为了一个软件,再去熟悉Linux系统的开发环境实在是太麻烦。
但是,对从芯片设计跨界到FPGA开发的人员来讲,上述调试手段太过分落后。本文就推荐一款做ASIC芯片的仿真工具,可以大幅度提升FPGA开发过程中的仿真调试效率。找了一下十几年前的联通硬碟,连到2019年WIN7系统的笔记本上,打开EDA工具文件夹,安装后发觉居然真的可以用!
[nLint]
NOVASnLint是一个广泛的HDL语言的设计规则检测工具,它整合于Verdi和Debussy调试平台。Verdi和Debussy系统帮助工程师加速了解复杂设计以提升设计、验证和调试的效率。nLint提供的功能在于帮助工程师完整的剖析HDL代码的句型和语义的正确性。nLint通过对源码的检测,以确保源代码的描述对于例如同步设计、可测试性设计,命名等设计规则保持一致。nLint帮助工程师在设计的早期提早的发觉问题,以减轻验证、综合和调试的时间。而且可以帮助工程师书写出便于阅读和维护的源代码程序,因而实现可以在不同的设计小组之间重复应用的设计描述。在nLint的环境中,可以很便捷的进行需测试的文件和规则的整理,工程师可以在nLint提供的图形界面手指定什么源代码文件须要检测,什么设计规则须要检测,但是可以针对不同的设计规则赋于不同的参数以符合自身的规则定义。
安装完成后,便可导出RTL代码。可以自己设定一些规则,对代码规范进行检查雨林木风linux,提早把一些问题剿灭在萌芽状态。本公众号之前一篇文章分享程序–VerilogHDL代码剖析及整理软件,也可以拿来对代码规范进行剖析,甚至进行整理。这种规范化的约定,在整个FPGA开发流程中,常常是最能达到事半功倍疗效的一个步骤。但常常对于FPGA开发人员而言,往往给忽视了。觉得等到前面发觉问题再更改也不迟,殊不知,不从一开始就重视代码规范,可能个别严重的问题甚至造成整个设计须要重做。
主要诱因还是由于做芯片承当的风险成本要远低于FPGA的开发。
有了前面的缘由,极少见做FPGA开发的人去做后仿真的。由于后仿真不但速率超慢,但是假如出现问题后也未能确切的定位到具体的代码中,只能通过FPGA网表中对应的位置去推测问题可能出现在RTL代码中的具体位置,还不如直接上板运行来的快,出问题了,大不了再重新添加ChipScope观测讯号或则SignalTAP观测讯号重新运行抓讯号判定就是了。
[debussy]
你们在用ModelSim做仿真时,经常碰到这样一个问题。为了追某个BUG的缘由,常常发觉,跑下来的波形讯号上面没有自己想看的变量讯号,因而,不得不重新把想看的讯号添加进波形中,重新跑一遍波形。对于大的设计而言,重新跑一遍波形也须要花费不少的时间。最坏的情况是,上述过程可能须要反复的做好多次就能找到BUG的形成源头。这么,有没有一种办法,只须要跑一次仿真,就可以把整个波形存储出来且不占太大的空间,之后在追踪BUG时,还可以便捷的把波形中出错的地方直接对应到代码中具体的某一行上cpu源代码分析与芯片设计及linux移植 pdf,还可以便捷的对某个变量进行后向或则前向的追踪呢?
答案是有!这款软件就是Debussy。如今也集成到了Verdi软件中。
1、Debussy软件简介
Debussy是NOVASSoftware,Inc(思源科技)开发的HDLDebug&Analysistool,这个软件主要不是拿来跑模拟或看波形,它最强悍的功能是能否在HDLsourcecode、schematicdiagram、waveform、statebubblediagram之间即时做trace,协助FPGA工程师debug。
Debussy是十分实用的Verilog或VHDL的调试工具,可以帮助设计者快速理解复杂的设计,尤其是初次接触别人写的代码的时侯,另外还能否查找和定位设计中存在的bug,提升效率。可能您会觉的只要有仿真器,如ModelSim,就可以做debug了,我不必再学习这个软件?实际上这个软件就能帮助设计者快速理解代码、波形和原理图之间的联系,致使调试显得非常地方便。
DebussyV5.0之后的版本,还提供了nLint检测工具(见本文后面介绍),它的检测规则非常苛刻,还能帮助checkcodingstyle&synthesizable,从个别方面可以协助工程师了解codingstyle,并养成好的编撰代码的习惯。其实良好的codingstyle也须要结合厂商的FPGA底层结构单元来具体剖析,而nLint工具并不会从这个方面对代码进行检测。所以,怎么提升codingstyle是一个综合性很高的话题,不是单从某一方面入手才能解决问题,这种都是后话了。
Debussy是支持Windows环境的,它的新版本更名为Verdilinux操作系统培训,降低了一些功能,而且新版本的Verdi只能支持Linux环境。
2、用modelsim形成fsdb文件与Debussy协同工作
第一步:挂PLI
在modelsim.ini中搜索Veriuser,找到相应行以后进行更改,将文档中
;Veriuser = veriuser.sl
一行更改为:
Veriuser=c:/novas/debussy/share/pli/modelsim_pli/winnt/novas.dll
要除去后面的分号。
第二步:新建两个环境变量
第一个新建环境变量:D_LIBRARY_PATH
变量值:
c:/novas/debussy/share/pli/modelsim_pli/winnt/novas.dll
第二个新建环境变量:PLIOBJS
变量值:
c:/novas/debussy/share/pli/modelsim_pli/winnt/novas.dll
第三步:在TestBench中添加句子
initial
begin
$fsdbDumpfile("filename_you_want.fsdb");
$fsdbDumpvars;
end
假如上述步骤未能正确完成,则用ModelSim仿真时会报出Warning,造成难以生成fsdb波形文件。
另外,笔者试了一下64位的ModelSim软件,根据上述方式难以正确形成fsdb文件,换回32位的ModelSim软件,如ModelsimSE6.5b,则才能顺利形成波形文件。如右图所示
3、Debussy软件使用方式
在使用Debussy软件过程中,软件并不能直接智能地辨识Verilog-2001代码,须要对软件进行一下设置,否则添加文件时软件都会报出好多错误告警,并且也看不到原理图,设置的方式如下:
【配置verilog-2001】
点击工具栏的File,选择ImportDesign,点击FromFile,再点击对话框左侧的Optionscpu源代码分析与芯片设计及linux移植 pdf,在弹出的ImportDesignOptions对话框中输入“-2001”,添加支持Verilog-2001标准的设置,如右图所示:
【导入源文件】
设置完成后,才能正常导出文件,进行仿真和调试了,导出方式是点击工具栏的File,选择ImportDesign…,在文件列表框中选中待观察的文件夹,接着全部选中出现的文件,再点击Add即可完成文件导出,如右图所示:
【代码模块剖析】
代码添加到Debussy以后,就可以点击查看各个模块的组成及调用关系了。还可以逐级的点进去查看到具体代码一级,包括状态机等。便捷你们进行代码的剖析及消化理解。
关键的内容来了!
【导入波形文件】
结合前面形成的fsdb文件,下一步就须要把波形文件test.fsdb导出到debussy中,这样就可以跟代码对应上!这一点很重要,可以双击波形中某个时刻的某个讯号的波形,直接跳转到对应的代码!
【重新添加讯号】
找到对应的代码后,还可以继续找该变量的前驱和后继,同时,随时可以添加进波形中进行查看(这要比ModelSim便捷多了,经常由于波形中没有提早添加某个讯号,而不得不重新跑一下仿真)。
其实,Windows版本的debussy还存在不少的问题,使用上去个别地方不如Linux下最新版的Verdi,所以还是建议你们最后自己装个虚拟机,体验一下Linux下代码调试的高效,相比笨拙的ModelSim而言,你会立即有猎枪换炮的觉得!
如下动图,是Linux下使用SimVision工具(跟Verdi类似)通过波形上状态机讯号对应到实际框图的反例,注意,框图中会实时显示出光标具体时刻对应的讯号数值,还可以跟踪到相关的其它讯号,彻底促使代码调试可视化!
FPGA调试不易,且行且珍视!也请对你身边做芯片或做FPGA开发的朋友好一点,她们的压力比较大。听说,海思近来疯狂立项,疯狂招人,人才严重欠缺,也希望朋友们多多选择FPGA开发或则芯片设计方向就业,为我们国家的芯片设计和集成电路产业尽快甩掉他人的禁锢作出自己的贡献!