什么是DUT?芯片验证,尤其是数字芯片需要围绕DUT做什么?当我复盘了整个芯片验证周期,答案也呼之欲出。面对复杂的设计代码,工程师们通常使用软件仿真、硬件仿真和原型验证等验证策略加速验证收敛。上回我们解释了软件仿真和硬件仿真是如何围绕DUT进行工作的。不清楚的小伙伴可以回看前两集。
今天我们来说说原型验证。原型验证将设计映射到FPGA阵列,通过模拟芯片的功能和应用环境,来验证芯片整体功能,并提供片上软件开发环境。相比硬件仿真,原型验证的运行速度更接近于真实芯片,可以配合软件工程师来进行底层软件的开发。这一流片前的软硬件协同开发,是其最不可替代的地方。再相比软件仿真,原型验证有更大的优势。软件仿真使用的激励源模型与真实数据存在一定差异,这导致它无法完全覆盖所有的Corner Case。这时,原型验证就显示出了其不可替代的重要性。
以下是DUT在原型验证流程中的关键步骤,包括设计分割、分割后的系统级时序分析、编程和下载、功能验证调试等。
设计分割:在开始阶段,需要对DUT进行分割,以适应FPGA的资源限制。因为单一的FPGA无法容纳超大规模的设计,我们利用特殊工具将设计逻辑分割成更小的部分,然后将每个部分映射到一个或多个FPGA上。这样做需要在保持设计整体性的同时,尽可能减少跨FPGA的信号数量,以降低路径延迟,提高系统性能。以思尔芯的芯神瞳原型验证解决方案为例,在芯神瞳RTL级的设计分割流程中,逻辑综合是将DUT转化为FPGA能理解的网表的过程。在分割后的设计中插入TDM(时分复用)是影响系统性能的关键步骤,其目的是通过时分复用来传输那些超过物理连接数量的互联信号。最后,映射和布局布线是将综合后的设计分配到FPGA的特定资源上,比如查找表、触发器、DSP模块等,然后进行布局布线。
时序分析:时序分析是确认设计在FPGA上运行时满足所有时序要求的步骤,包括单个FPGA和整体系统的时序要求。由于设计被分割,考虑到分割造成的路径延迟,主要由时分复用(TDM)和跨FPGA连线延迟构成。若存在不满足时序的路径,可通过优化时序约束、设计、流水线设计、调整分割边界和布局布线等提升时序性能,达到预期时钟频率,降低延迟。原型验证系统的运行频率是关键性能指标。提高频率可通过调整分割边界、优化分割后TDM、布局布线约束和使用时序驱动的分割算法,降低关键路径延迟,提升系统性能。
编程和下载:将映射和布局布线后的设计编译为FPGA的比特文件;搭建各个FPGA之间的互联组网结构,然后将比特文件下载到对应的各个FPGA上。下载完成后根据需要对全局时钟、全局复位以及其他外围IP进行配置。这确保了DUT可以在原型上正确地运行。
功能验证调试:这个阶段主要是测试DUT在FPGA上运行时的功能的正确性。我们可以通过实际的硬件接口或虚拟IO接口对DUT进行测试,以验证其是否符合预期。
芯神瞳就提供了基于时序驱动的RTL级分割算法,能够实现全自动的分割编译流程。其内置的增量编译算法功能可以帮助用户完成快速迭代的版本迭代,大大提高用户开发验证效率。
纵观软件仿真、硬件仿真、原型验证这三种方法通过各自的优点和功能,共同为芯片设计提供了一种全面而高效的验证手段,有助于加速整个芯片开发周期,同时确保设计的正确性。
欢迎点赞、关注加转发,为你带来更多EDA硬核科普。