首页 > 其他分享 >IC中的仿真

IC中的仿真

时间:2024-02-21 13:23:11浏览次数:28  
标签:仿真 FPGA 仿真器 硬件 Verilog 设计 IC

在IC设计的流程中,其仿真验证大致分为软件仿真(Simulation)、硬件仿真(Emulation)和原型验证(prototyping)三大块。

一、软件仿真(Simulation)

软件仿真会通过在计算机环境中模拟硬件行为,检验设计中的功能是否正确无误。

数字电路中常用的仿真器有:

  1. ModelSim/QuestaSim:ModelSim和QuestaSim是由Mentor Graphics开发的数字电路仿真器,支持Verilog、VHDL等硬件描述语言,提供全面的仿真和调试功能。

  2.  

    Xilinx ISE Simulator/Vivado Simulator:这是Xilinx公司提供的数字电路仿真器,支持Verilog和VHDL,适用于FPGA设计和验证。

  3.  

    Cadence Incisive Enterprise Simulator:Cadence公司的Incisive是一款功能强大的数字电路仿真器,支持Verilog、VHDL等硬件描述语言,广泛用于复杂数字电路设计的仿真和验证。

  4.  

    Synopsys VCS Simulator:Synopsys公司的VCS是一款高性能的数字电路仿真器,支持Verilog、VHDL等硬件描述语言,适用于大规模设计的仿真和验证。

  5.  

    Aldec Active-HDL:Active-HDL是Aldec公司开发的数字电路仿真器,支持Verilog、VHDL等硬件描述语言,提供仿真、调试和波形分析等功能。

  6.  

    Icarus Verilog,也称为iverilog,是一个开源的Verilog仿真器,支持Verilog-1995标准,广泛用于学术和个人项目中,iverilog提供了命令行接口,可以进行Verilog代码的编译和仿真,适用于小型项目和快速验证。

  7.  

    Verilog-X是一种商业Verilog仿真器,提供了更多的高级功能和技术支持,适用于大型项目和专业设计,通常集成在一些EDA工具套件中,提供了更全面的仿真、调试和分析功能。

  8.  

    NC-Verilog是Cadence公司的一款Verilog仿真器,集成在Cadence的Incisive仿真平台中,支持Verilog和SystemVerilog。提供了丰富的仿真、调试和分析功能,适用于复杂的数字电路设计和验证。

模拟集成电路(IC)设计时常用的仿真器通常包括以下几种:

  1. Spectre:Spectre是Cadence公司开发的一款基于SPICE的仿真器,主要用于模拟模拟电路和混合信号电路。

  2. HSPICE:HSPICE是Synopsys公司开发的一款高精度SPICE仿真器,广泛用于模拟模拟电路和混合信号电路。

  3. Eldo:Eldo是Mentor Graphics公司的一款仿真器,用于模拟模拟电路和混合信号电路,支持SPICE语言。

  4. SmartSpice:SmartSpice是Silvaco公司的一款仿真器,用于模拟模拟电路和混合信号电路。

  5. LTspice:LTspice是Linear Technology公司推出的一款免费的SPICE仿真器,广泛应用于模拟电路设计和验证。

软件仿真(Simulation)通常分为:

①RTL行为级仿真

在大部分设计中执行的第一个仿真将是RTL行为级仿真。这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。(绝大部分设计人员将这个阶段的仿真叫功能仿真!

②综合后门级功能仿真 (前仿真)

一般在设计流程中的第二个仿真是综合后门级功能仿真。绝大多数的综合工具除了可以输出一个标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来做仿真使用,而输出的Verilog或者VHDL网表可以用来仿真。之所以叫门级仿真是因为综合工具给出的仿真网表已经是与生产厂家的器件的底层门级元件模型对应起来了,所以为了进行综合后仿真必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,不然仿真器并不认识其中的底层元件,无法进行仿真。

③时序仿真 (后仿真)

在设计流程中的最后一个仿真是时序仿真。在设计布局布线完成以后可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件(Standard Delay format Timing Anotation)。

在FPGA中的仿真,Xilinx Vivado足足有五种之多:

1、run behavioral simulation-----行为级仿真,RTL行为级别的仿真通常也说功能仿真。

2、post-synthesis function simulation-----综合后的功能仿真。

3、post-synthesis timing simulation-----综合后带时序信息的仿真,综合后带时序信息的仿真比较接近于真实的时序。

4、post-implementation function simulation-----布局布线后的功能仿真。

5、post-implementation timing simulation-----布局布线后的时序仿真

而Quartus中只有:RTL Simulation(功能仿真)和Gate level Simulation(时序仿真)两种。

其实关于前仿和后仿的定义,是有点迷的,网上也有大牛说前仿就是功能仿真即RTL行为仿真,后仿分为综合后仿(无时序信息)和P&R后仿(有时序信息),以后为了避免歧义,我就分开说,尽量避免说前仿和后仿,只说RTL行为仿真、综合后仿真以及布局布线后仿真。大牛还说做FPGA一般只需要前仿,即RTL行为仿真,不需要后仿(很花时间,有时hdl代码一两分钟能仿真完的做网表仿真要半小时),因为FPGA可以快速地出版本(相比ASIC而言),上板不正确的话可以回溯跟踪问题的源头,然后再出一版。其中上板不同case测试、使用chipscope/signaltab查看板上信号、查看综合后的网表、P&R后的图、时序报告等就足矣了。很多大牛都说无数大公司做FPGA都是RTL行为仿真(功能仿真)+STA,几乎很少有做后仿真的,因为太费时间。

还需要注意的是STA不是仿真,它是一种对时序进行分析的方法,常用工具是Synopsys的PrimeTime,看网上介绍,各个阶段都能做STA,看需求吧,等后续有项目了再来补坑。

二、硬件仿真(Emulation)

可视为Simulator的补充(不是替代),软件仿真的硬件化,极大提高了仿真效率。硬件仿真的运行速度和调试效率比软件仿真可要高很多,因为它可以对完整的芯片设计进行自动化的加速仿真并调试,多应用于大规模SoC设计前期的RTL功能验证。硬件仿真首先将硬件设计(通常以HDL,例如Verilog或VHDL编写)编译,然后加载编译后的设计。在一些系统中,设计可能被加载到专门的硬件中(例如FPGA)。一旦设计被加载,硬件仿真就可以运行设计,并观察其行为。硬件仿真通常会提供观察和调试设计内部状态的工具。最后,工程师可以根据结果分析设计的正确性,查找并解决问题,以优化设计。硬件仿真可以提供比软件仿真更快的仿真速度,同时还能模拟出硬件在实际运行中的实际行为。这使得它们在硬件设计和验证过程中,尤其是在处理复杂和大规模硬件系统时,非常有用。https://www.zhihu.com/question/47732296/answer/107633792知乎上有个专门做emulator的顶级厂商的AE说的就很到位。可认为是软件simulator的硬件化,是虚拟世界;FPGA prototype是物理芯片流片前的原型化,是真实世界。emulator理解为介于simulator和FPGA prototyping间的产物,同时拥有二者的优点。但是这种东西太贵,大公司才玩得起,一般公司还是软件仿真+FPGA原型验证。https://blog.csdn.net/renzaiS2C/article/details/131193585

三、原型验证(prototyping

一般是用FPGA做,用FPGA芯片自己设计单板,加一些外设接口外围电路,可以进行验证。或者FPGA公司现成的平台套件,然后再做单板扩展板,通过平台套件的接口进行连接,然后进行验证demo。一般需要移植ASIC RTL到FPGA上,然后搭建工程,使用各种IP,一系列流程打通后进行调试。

 

 

标签:仿真,FPGA,仿真器,硬件,Verilog,设计,IC
From: https://www.cnblogs.com/millionyh/p/18024971

相关文章

  • SciTech-Mathmatics-Multiplication Properties
    https://byjus.com/maths/multiplication/Inmathematics,multiplicationisamethodoffindingtheproductoftwoormorenumbers.Itisoneofthebasicarithmeticoperations,thatweuseineverydaylife.Themajorapplicationwecanseeinmultiplicatio......
  • 在WPF的RichTextBox富文本中加入一个可点击的按钮
    <RichTextBox><local:MyFlowDocument><Paragraph><InlineUIContainer><ButtonContent="ClickMe!"Click="Button_Click"/>......
  • static相关
    1.代码块publicclassStaticDemo{{System.out.println("匿名代码块");}static{System.out.println("静态代码块");}publicStaticDemo(){System.out.println("构造函数");}publicstaticv......
  • 多个@RestControllerAdvice全局异常捕获器的顺序问题
    影响一多个捕获器按照加载顺序执行,可以通过@Order注解控制加载顺序,值越小的越先加载,如@Order(Ordered.HIGHEST_PRECEDENCE)最先执行。同时可以在捕获器中加入静态代码块打印日志判断加载顺序,如:static{log.info("GlobalExceptionHandlerclasshasbeenloaded.");......
  • Linux中service文件
    Linux中service文件Linux服务依靠初始化系统systemd,有两种管理服务的方式:service文件和systemctl命令。systemctl命令systemctlstart服务名开启服务systemctlstop服务名关闭服务systemctlstatus服务名显示状态systemctlrestart......
  • Invicti Enterprise v24.1.0 for Windows - 企业应用安全测试
    InvictiEnterprisev24.1.0forWindows-企业应用安全测试InvictiEnterpriseOn-Premises09Jan2024v24.1.0请访问原文链接:InvictiEnterprisev24.1.0forWindows-企业应用安全测试,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgInvicti是一种自动化但......
  • 点阵LED数码管显示驱动IC VK16K33 A/B/C/BA/AA 驱动电流大 质量稳定 适用于计量插座,数
    概述VK16K33是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、键盘扫描、LED驱动模块等电路。数据通过I2C通讯接口与MCU通信。SEG脚接LED阳极,GRID脚接LED阴极,可支持16SEGx8GRID的点阵LED显示面板。最大支持13×3的按键。内置上电复位电路,整体闪烁频......
  • [转帖]一次搞定 Unicode、字节序、UTF-*
    茫茫人海中与你相遇相信未来的你不会很差作者:Tomson                                      来源:https://segmentfault.com/a/1190000038171151什么是字符集顾名思义,字符集就是字符的......
  • PHPMailer发送邮件报SMTP Error: Could not authenticate.SMTP server error: QUIT co
    在使用PHPMailer开发发送邮件功能时报错SMTPError:Couldnotauthenticate.SMTPservererror:QUITcommandfailed起初这个授权码以为是邮箱登陆密码,填了qq密码验证不通过 以下qq邮箱为例配置授权码下面按步骤操作就可以开通,得到一个授权码  ......
  • SciTech-Mathmatics-LinearAlgebra-特征值和特征向量
    1基本定义将\(n\)阶方阵\(M\)分解出如下式的非零n维向量\(v\)作为特征向量和\(\lambda\)作为特征向量;$\largeMv=\lambdav,\v\neq0$上式不仅可以分解出,甚至还可以分解出多个特征向量与特征值;实例:对物体施加作用力F产生运动,运动可以分解到3D空间......