对verilog的 仿真和综合有啥区别,具体一点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对verilog的 仿真和综合有啥区别,具体一点相关的知识,希望对你有一定的参考价值。

╮(╯▽╰)╭为什么总是纠结在这些上面呢。
1。所谓功能仿真,就是你的code写完之后,你要实现的功能是否能work,比如你写一个计数器,让他计数到10,翻转,同时清零,重新计数,这就会是一个分频电路。那么功能仿真就是要验证你这个功能是否是正确的,别tmd计数到9就翻了,或者计数到10没有清0。功能仿真当然不考虑竞争冒险和门电路延迟,你只是看你的功能是否正确,你考虑延迟干嘛。
2。所谓综合后仿真,就是你刚才编出来的代码,第一个是否能被综合工具综合,如果可以综合,此时综合工具就会把相关的延迟信息加入进来,以判断你的代码是否会有什么问题,比如你要求的始终太快,cnt计数就会有问题了。此时的综合工具如synplify,xst,quatus(针对fpga,如果是ic,会用dc等别的),如果你用quatus去跑跑仿真,就会比较清晰的看到延迟信息已经加入进来了
3。时序仿真是在ic上的了,各种timing问题了。fpga就直接上板了,做那么多仿真毛用,直接上板,各种timing问题等着去解吧。
4。modesim一般只用来功能仿真,它不能综合。
参考技术A 软件发面:verilog提供的关键字用于仿真绝对没问题,但是能用于综合的很少,开发工具不同能综合的关键字语句也不同。能被综合的关键字语句也会因开发者的使用原因不被综合。 参考技术B 问题原因如下(不同布局布线造成时序不同):
这个reg位宽,或者你其他任意部分发生改变,你的程序就发生改变,即使变化很细微;
需要重新综合,重新布局布线;
每次布局布线
实际使用的器件和走线延时都会不同,都有可能对程序其他部分造成影响;
问题分析:
1、估计你改变其他不相关的部分,导致程序出错,一般也是程序的部分模块功能错误(或者就那一两个老是会错),其他均正常。
2、此种应该是你的出错部分对时序要求较高,或者原理本身就存在一定冲突的可能性;
问题解决:(逐个尝试)
1、如果是ISE进行综合,在smartguide前打钩,表示不改变大的布局前提下进行重新布局。
2、学会对程序进行布局布线后的时序仿真,仔细分析模块时序,判断具体的出错部分。
3、对出错部分尝试换一种原理实现,最好时序要求不要非常高。
注:这个问题,本人也遇到过,因为对时序分析不懂,后来只能重新换一种原理实现了。

明德扬至简设计法--verilog综合器和仿真器

技术分享图片
Verilg是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能。而我们最终是要在电路上实现该功能的。当Verilog描述出硬件功能后,我们需要综合器对Verilog代码进行解释,将代码转化成实际的电路来表示,最终实际的电路,我们称之为网表。这种将Verilog代码转成网表的工具,就是综合器。上图左上角是一份verilog代码,该代码描述了一个加法器功能。该代码经过综合器解释后,转化成一个加法器电路。QUARTUS、ISE和VIVADO都是综合器,集成电路常用的综合器是DC。

我们在FPGA设计的过程中,不可避免会出现各种BUG。如果我们编写好代码,综合成电路,烧写到FPGA后,才看到问题,此时去定位问题就会非常地困难了。在综合前,我们可以在电脑里对代码进行仿真测试一下,把BUG找出来解决,最后才烧写进FPGA。我们可以认为,没有经过仿真验证的代码,一定是存在BUG的。

为了模拟真实的情况,我们需要编写测试文件。该文件也是用verilog编写的,描述了仿真对象的输入激励情况。该激励力求模仿最真实的情况,产生最将近的激励信号,将该信号的波形输入给仿真对象,查看仿真对象的输出是否与预期一致。

为了做仿真验证,我们编写了测试文件。将测试文件和被测试对象加入到仿真器中。仿真器对测试文件和被测试对象的代码进行解释。根据测试文件,产生测试激励,输入给被测试对象;根据补测试对象的代码,产生被测试对象的输出。需要注意的是,在仿真过程中,没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该电路是否可转成电路,仿真器是不关心的。

常用的仿真器是MODELSIM和VCS等。

由此可见,verilog的代码不仅可以描述电路,还可以用于测试。事实上,Verilog定义的语法非常之多,但绝大部分都是为了仿真测试来使用的。只有少部分才是用于电路设计,详细可以参考本书的“可综合逻辑设计”一节。

Verilog中用于设计的语法,才是学习的重点。掌握好设计的语法,熟练应用于各种复杂的项目,这是技能的核心。其他测试用的语法,需要时查找和参考就已经足够了。

本书着重点,是用于本科、研究生的教学用途,因此将重点讲解设计用的语法。

在本章讲解Verilg时,将从综合器和仿真器角度,解释语法的用途,读者可以明白要学习的关键内容。

以上是关于对verilog的 仿真和综合有啥区别,具体一点的主要内容,如果未能解决你的问题,请参考以下文章

Verilog -- 阻塞与非阻塞的仿真与综合

明德扬至简设计法--verilog综合器和仿真器

verilog的timescale问题请教

verilog hdl中啥是综合?啥是模拟?

fpga后仿真怎么做

reg和wire的区别