什么是DUT?芯片验证,尤其是数字芯片需要围绕DUT做什么?面对复杂的设计代码,工程师们通常使用软件仿真、硬件仿真和原型验证等验证策略加速验证收敛。上回我们解释了软件仿真是如何围绕DUT进行工作的。不清楚的小伙伴可以回看上集。
上次说了软件仿真,今天我们来说说硬件仿真。虽然软件仿真易于使用,成本效益高,并且具有方便的调试能力,但一旦碰到大规模数字电路设计,结构越是复杂,仿真所需要的时间就越长,软件仿真的效益得到了限制。所以通过专门的设备在硬件上调试芯片设计,如硬件仿真和原型验证,是其重要的解决方案。
硬件仿真的运行速度和调试效率比软件仿真可要高很多,因为它可以对完整的芯片设计进行自动化的加速仿真并调试,同时提供信号全可视,多应用于大规模SoC设计前期的RTL功能验证。硬件仿真首先将硬件设计(通常以HDL,例如Verilog或VHDL编写)编译,然后加载编译后的设计。在一些系统中,设计可能被加载到专门的硬件中(例如FPGA)。一旦设计被加载,硬件仿真就可以运行设计,并观察其行为。硬件仿真通常会提供观察和调试设计内部状态的工具。最后,工程师可以根据结果分析设计的正确性,查找并解决问题,以优化设计。
硬件仿真可以提供比软件仿真更快的仿真速度,同时还能模拟出硬件在实际运行中的实际行为。这使得它们在硬件设计和验证过程中,尤其是在处理复杂和大规模硬件系统时,非常有用。硬件仿真系统主要由硬件和软件两部分构成。以思尔芯的芯神鼎硬件仿真系统为例,其中硬件部分是由众多的FPGA搭成。软件部分由编译(Compile)、运行(Runtime)、调试(Debug)组成。
编译:编译阶段通过完全自动化软件将待测设计(DUT)映射到硬件仿真系统上,便可以进行高速仿真。
运行:运行时Runtime软件控制整个硬件仿真的运行过程,它可以控制硬件仿真以支持不同的用户模式,它的核心组成部分是运行数据库、运行库、软硬件接口以及用户交互接口,例如ICE(In-circuit Emulation)、TBA(Transaction-based Acceleration)以及QEMU模式等。还可支持多用户同时进行使用设备。
调试:硬件仿真有着接近软件仿真的调试能力。可以通过静态探针(static probe),动态探针(dynamic probe)及内置逻辑分析仪(ILA)可以观测信号的数据,以及实现信号全可视(Full Visibility)。同时,通过ReadBack/WriteBack功能可以实现对信号进行赋值或恢复。
此外,硬件仿真还会配备专门的验证核(VIP),以思尔芯的芯神鼎为例,就支持APB、AHB、AXI4、DDR、Ethernet等,基本覆盖了常用的接口协议,可以满足绝大部分验证应用需求。
总之,硬件仿真通常集成了专门的电路和逻辑,以加速仿真过程。其速度通常可以达到几百kHz甚至MHz级别,软件仿真中的功能仿真通常运行速度通常在几十至几百Hz,相比之下,硬件仿真比软件仿真快几千倍至几十万倍。因此,硬件仿真在验证复杂设计时非常有用。它们能够以更高的速度执行仿真,更快地提供反馈和结果,这对于设计的验证和调试,尤其是SoC至关重要。