首页 » 互联网 » 摆脱Vivado零丁建仿真情形的最终解决筹划_情况_剧本

摆脱Vivado零丁建仿真情形的最终解决筹划_情况_剧本

落叶飘零 2024-11-11 01:13:36 0

扫一扫用手机浏览

文章目录 [+]

在本"大众年夜众号上一篇文章(【干货】推举一款FPGA仿真调试鸟枪换炮的工具!
)中就曾提到,隔行如隔山,做芯片的人永久无法理解只做FPGA样机的人在某些情形下不做仿真就直接上板的做法,非芯片设计出身只做FPGA样机的人也不知道这个天下上还存在更为高效的Verilog或VHDL措辞的仿真工具和仿真方法,也不理解为了把一个芯片做到极致,必须严格哀求代码规范的做法。
为了能够利用上一篇文章中高效的Verdi或者SimVision仿真调试工具,分开Vivado等仿真工具单独搭建仿真环境的就成为比较急迫的需求了。

本"大众年夜众号之前也曾经发布过一篇干系的文章,用Modelsim独立仿真带Vivado IP核的仿真工程,也是实现采取ModelSim单独搭建仿真环境的一种方法,但文中所述方法仍未彻底摆脱Vivado的环境,适用的场景也受到限定,某些工程中还会出错。
因此,本文从最原始文件搭建仿真环境的思路出发,考试测验着研究分开Vivado单独建仿真环境的过程中都会碰着什么问题,采取什么样的方法比较随意马虎办理,笔者试了好几个工程,总结出一套相对完善的办理思路,来分享给大家。

摆脱Vivado零丁建仿真情形的最终解决筹划_情况_剧本 互联网

FPGA开拓最不理解的芯片设计中的操作1、做芯片的仿真末了都不用图形界面

与刚开始做FPGA开拓时都在图形界面下操作的仿真方法不同,做大规模芯片设计时的仿真常常不调用图形界面,都是采取命令行的形式做的仿真。

上图便是采取大略的windows下的批处理调用modelsim进行的一个仿真过程,这个大略的批处理,便是脚本。
也是本文终极要实现的目标。

set PROJECT_PATH=%cd%::vsim -do sim.dovsim -c -do sim.do

脚本,是芯片设计职员必须要节制的基本技能。
在芯片设计的各个阶段,脚本的浸染是非常巨大的。
代码仿真,可以利用脚本来进行仿真环境的搭建,综合的约束文件,必须采取脚本来提前对综合过程中的各种哀求进行解释,后端就更不用说了。
由于全体芯片的设计流程,每个流程的所有中间信息都是靠文本来储存的,RTL代码,netlist,后真个颜色文件,流片用的GDSII等等,对文本进行随意的操作处理便是一名IC设计职员的基本技能。

如下图便是一个大略的采取NCVerilog进行仿真的脚本。

#!/bin/shecho \"大众\`include \\"大众../testcase166/$1.v\\公众\公众 > testcase.vsed \"大众s/\/wave.shm/\/wave$1.shm/g\公众 ../testbench/testbench.v > testbench.tmpcp ../testbench/testbench.v ../testbench/testbench.bakcp testbench.tmp ../testbench/testbench.vrm -f testbench.tmpncverilog -f ../filelist/filelist.v +access+rwc -l ../log/log/$1.logmv ../testbench/testbench.bak ../testbench/testbench.vrm -f testcase~

而下图则是一个采取TCL措辞描述的Design Complier综合脚本的开头部分。

sh dateremove_design -designs ###########################set library ###########################set search_path [list /tools/lib/smic25/feview_s/version1/STD/Synopsys \ /tools/lib/smic25/feview_s/version1/STD/Symbol/synopsys]set target_library { smic25_tt.db }set link_library { smic25_tt.db }set symbol_library { smic25.sdb }###########################Paths variables ########################### set main_dir ../.. set RTL_ROOT_PATH $main_dir/hdl set NETLIST_PATH $main_dir/sim/syn/netlist set RPT_PATH $main_dir/sim/syn/log set DB_PATH $main_dir/sim/syn/db set SDF_PATH $main_dir/sim/syn/sdf###########################void warning Info ###########################suppress_message VER-130suppress_message VER-129suppress_message VER-318suppress_message ELAB-311suppress_message VER-936#################################read&link&Check design#################################

2、做芯片的仿真末了都不看波形

在做芯片仿真时,无论是采取自己搭建的大略仿真环境还是UVM的仿真环境,末了的形式常常是把所有的testcase都集中到仿真环境中,只需敲一个命令,回车,所有的testcase就能够全部运行下去。
而仿真过程的缺点,也都被记录到log文件中,无论是运行的对与错,都可以在log文件中看到。
如下图便是所有的testcase截图,每个case运行的结果也会保存到其余一个log目录下。

而FPGA开拓职员,则不会去建立如此完善的仿真环境,每每是大略的搭建一个某种功能模式下的仿真环境仿一下过了,就上板了。

采取ModelSim单独仿真

1、整理RTL代码及仿真代码

如果要用ModelSim单独仿真,并且须要搭建类似于上面描述的采取脚本形式来仿真的仿真环境,那么第一步就须要从Vivado工程中把相应的Verilog代码整理出来。

Vivado跟Quartus在仿真时采取的思路是不一样的,对付Quartus而言,你可以很随意马虎就能分开开Quartus单独搭建一个ModelSim或者VCS的仿真环境,由于Quartus所有的IP核或者原语库之类的内容全部都因此verilog或者VHDL文件存储的,建仿真环境时,只须要到Quartus的安装路径下找一个叫EDA的目录下找sim_lib的子目录下找相应的.v文件添加到仿真工程里就可以了,常见的库文件紧张有三个,220model.v,altera_mf.v和cyclone_atoms.v(或者是别的FPGA型号)。
见本公众年夜众号之前的文章有详细描述:用Quartus II和ModelSim做后仿真(时序仿真)。

在Vivado中也有类似于Quartus中的库文件,在Vivado工程目录下,如下图所示。

然后,整体拷贝ip文件夹到自己想搭建的modesim仿真环境目录下:

上图中rtl文件夹便是自己原来的设计文件,tb则是一些仿真用的.v文件。

2、编写脚本sim.do文件

一个比较大略的modelsim脚本文件如下。

vlib workvlog -f ./rtl.fvsim -novopt work.tb_crossbar_topdo wave.dorun 10us

上面的脚本的详细含义,大家都可以百度搜索找到。
须要解释的是所有工程中的文件的路径是须要写到一个rtl.f的文件夹下的,详细源代码可以参考本"大众年夜众号之前的文章:如何快速天生Verilog代码文件列表?(内附开源C代码),须要把稳的是,天生的文件路径地址中的斜杠与modelsim脚本中哀求的斜杠刚好相反,可以直接采取文本编辑器更换掉,也可以添加以下子函数到C代码中大略修正一下。

void xiegang(char s){ int i,j,k; char buf[800]=\公众 \"大众; char buf1[800]=\"大众 \"大众; memset(buf,0,800); memset(buf1,0,800); strcpy(buf,s); strcpy(buf1,s); for(i=0;i<strlen(buf);i++) { if(buf[i]=='\\') { buf1[i]='/'; } } strcpy(s,buf1); }

上面的C代码实现文件列表的程序,实在也是脚本。

3、把稳事变

在实现的过程中,创造Vivado并没有把所有用到的库文件都写成.v的形式,而因此编译库的形式存在。
这样就须要在仿真时把对应的库文件包含进去。
上面的脚本须要修正为:

vlib workvlog -f ./rtl.f#vsim -novopt work.tb_crossbar_topvsim -gui work.tb_crossbar_top -voptargs=\"大众+acc\"大众 -L C:/modeltech64_10.5/vivado_17_2/simprims_ver -L C:/modeltech64_10.5/vivado_17_2/unisims_ver do wave.dorun 10us

C:/modeltech64_10.5/vivado_17_2/simprims_ver

C:/modeltech64_10.5/vivado_17_2/unisims_ver

两个库都是Vivado与ModelSim联合仿真时ModelSim预先编译好的仿真库,这里面很多都是FPGA上用到的BUFG、PLL等内容。
但添加完这些库文件后,还是有缺点,详细如下:

经由上网查找缘故原由,创造这是xilinx全局复位的模块。
该模块在C:\Xilinx\Vivado\2015.1\data\verilog\src路径其实在上面Error提示的一部分。

于是,自己copy一份glbl.v到当前工程,进行编译。

但还是弹出相同的缺点提示。

末了,在tb.v中添加该模块的调用才终极办理问题。

在笔者考试测验多个工程之后,创造找Vivado 对应的库实在是太麻烦了,那么多的编译出来的库,每个库也找不到详细阐明含义的解释文档。
无奈之下,想到了彻底摆脱Vivado的终极办理方案。

涌现了找不到某个模块定义的缺点之后,就须要考试测验着去添加上图中不知道含义的库看能不能办理问题,一个一个的试,一个一个的试,试到疑惑人生。

终极方案

这个终极办理方案便是采取ASIC的思路来更换掉所有的IP。
如果考虑末了要做ASIC,那么就须要把设计代码中所有的FGPA IP核或者原语之类的内容全部更换掉,比如FIFO都要修正成掌握逻辑加RAM的形式,一些BUFG之类的改进时序或驱动的原语也全部删掉。
如果只考虑做仿真,则只须要自己手写一个RAM的行为逻辑,定义一个数组类型,根据输出的时候是否打拍随意的调度。
一些FIFO也可以很随意马虎的在网上找到源代码,同步的,异步的,首字置出的FIFO都有。
更换干净之后,就跟Vivado没有任何关系了!
乃至也跟ModelSim也没有任何关系了,可以随意的改换仿真工具,比如VCS和NC等,彻底的办理问题。

写到此处,想起了一个有趣的事情。
听说有一种永久不让代码中涌现BUG的终极办理方案。
猜猜看是什么。

答案是:不要写一行代码!

这个跟摆脱Vivado单独建仿真环境的终极办理思路竟然高度同等!
彻底摆脱Vivado建仿真环境的方法也是,仿真代码中不要用到Vivado中的任何一个IP核!


4、覆盖率剖析

有了脚本的支持,也分开掉了Vivado的束缚,就可以做很多自己想做的事情,把仿真环境做成可回归的形式之后就可以做覆盖率剖析。
这时的脚本就修正成如下的样子。

vlib workvlog -f ../filelist/filelist_sim.vvlog -f ../filelist/filelist_hdl.v -cover bcesxfvsim -novopt -coverage work.TESTBENCH -L C:/modeltech64_10.5/vivado_17_2/simprims_ver -L C:/modeltech64_10.5/vivado_17_2/unisims_ver run -all

大家可能把稳到,上面脚本中把filelist分成了两种,一种是仿真的,不用看覆盖率,其余一种则是可综合代码部分,须要看覆盖率,单独写到了filelist_hdl.v的文件里面。

运行结束后,就可以在图形界面上看到覆盖率剖析的结果。

随着测试例的运行,上面设计代码的覆盖率也会逐渐提高,末了可以通过选择达不到覆盖率哀求的模块进行详细的剖析,查看测试例没有运行到的语句。
有了充分的仿真验证后,再上板就顺利的多了。
至少99%的逻辑BUG都被办理掉了,剩余的便是一些时序方面的问题,这样就可以大大节约FPGA调试的韶光。

用做芯片的思路去做FPGA,不是杀鸡用牛刀,而是一种精确的思路。
搭建一个完善的仿真验证环境固然麻烦,但一旦做好之后,事半功倍,效率会大幅度的提升。
本文中提到的仿真环境仅仅是一种最大略的只有Verilog代码的仿真环境,在验证繁芜度和便捷性等方面都差的很远远。
公司里面孔前采取的办法,每每是大牛们用SV搭建好一个UVM框架后,下面做详细实现的人只须要往对应框里面填数字就可以了。

工欲善其事,必先利其器!
做FPGA,仿真验证便是器!

本文在写作工程中还参考了以下网址上的内容,也办理了问题,特此感谢。

https://www.cnblogs.com/demosaic/p/5529870.html

全文完。

标签:

相关文章

加币5,数字货币时代的革新力量

随着互联网技术的飞速发展,数字货币逐渐成为金融行业的一股新生力量。在这个时代背景下,加币5作为一种新兴的数字货币,以其独特的优势吸...

互联网 2025-01-08 阅读0 评论0

北斗数据协议,引领时空信息新纪元的基石

在当今科技飞速发展的时代,时空信息已成为国家战略资源和重要基础设施。北斗卫星导航系统作为中国自主研发的全球卫星导航系统,其数据协议...

互联网 2025-01-08 阅读0 评论0