HDL是HardwareDescriptionLanguage(硬件描述语言)。设计FPGA时,就是通过HDL来搭建底层硬件电路,最终实现不同功能的电路。即FPGA设计是设计一个完成某种需求的电路。

 

而对FPGA验证时,是对FPGA硬件电路输入各种数据,经过电路处理数据后,得到输出数据与参考数据进行比较。在这里,数据输入、处理、输出、比较的过程一般由PC机的CPU软件模拟来完成。即FPGA验证是通过CPU模拟电路的数据输入、处理、输出、比较的过程,软件模拟器设计的过程。

 

我们可以初略理解为:FPGA设计是电路设计,FPGA验证是软件设计。电路设计是基于时钟脉冲的并行设计,软件设计是基于CPU指令集的串行设计。也就有了2种思维的冲突:硬件与软件的思维冲突、并行与串行的思维冲突。

 

因为这种思维冲突,在FPGA验证初期编写testbench仿真HDL代码时,就会遇到各种困惑和调试困难,这种初期FPGA验证手写TB验证的方式效率极低,在量级大的代码面前效果也不好,自然需要更好的方案。

 

SV的仿真调度机制能很好地解决这种冲突,它利用时间片time slot的思想,将硬件并行运行的各个任务抽象为独立运行的线程,留给用户上层的应用接口来开发验证工作,再随后,有了UVM等验证框架的加入,让验证开发更便利和高效。整个过程的技术发展都被抽象后封装,用户不用关心,但同时带来FPGA设计到验证入门和理解比较困难的问题。

 

如果我们能够多一些去理解SV的仿真调度机制到UVM的抽象过程,就自然能够很好的理解FPGA设计和仿真之间思维的冲突。