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,一系列流程打通后进行调试。

 

 


posted @ 2024-02-21 13:10  million_yh  阅读(368)  评论(0编辑  收藏  举报