FPGA(Emulator)系统在芯片设计验证领域发挥着重要作用。Emulator 可以理解为介于 simulator 和 FPGA prototyping 间的产物,同时拥有二者的优点。例如,方便 debug 波形、可使用 force/release 命令、检查覆盖率、打印 display 信息等。
从速度方面来看,FPGA 在速度上相比 emulator 有显著优势。fpga 原型验证平台典型的运行速度是 50mhz 左右,而 emulator 典型的运行频率是 1mhz 左右。此外,大规模使用 emulator 来做 verification 的一大好处就是快,速度大概是 VCS 的 1000 - 10000 倍左右。同样的时间内,使用 emulator 就可以跑更多的测试用例。
Emulator 的主要应用场景是“芯片设计过程中对完整封闭的设计进行加速仿真并调试”。它能对全芯片进行和芯片时序行为一致的硬件仿真,包括全芯片信号的提取,对全芯片的功能、性能、功耗进行系统级的验证与调试。例如,依托自研综合工具的信号综合后全保留,以及完整、长时间的信号追踪(达数百亿周期)信号的高级触发模式态探针插入/离线虚拟调试。拥有不限量的时钟域,它们可以从核心时钟资源中无限衍生。全系统范围可见的 Debug 调试追踪。System Verilog/UVM Simulation/C++/Python 等测试加速支持。软硬件的协同验证、测试接口的虚拟化支持。系统功耗预估/分析等。
FPGA 仿真器能够在设计早期阶段就进行功能验证。工程师可以在设计实现之前,通过 FPGA 仿真器对硬件描述语言的代码进行验证。而对于 FPGA 上的任天堂娱乐系统模拟器 fpga_nes,采用 Verilog 语言编写,利用 FPGA 的硬件加速能力来模拟 NES 的运行环境,为开发者提供了一个强大的调试工具,同时也是一个教育工具,适合电子工程和计算机科学的学生学习 FPGA 编程和硬件设计,对于游戏开发者和复古游戏爱好者,提供了重温经典游戏的机会。
FPGA(Emulator)的优点FPGA(现场可编程门阵列)和 Emulator(仿真器)具有众多优点。
对于 FPGA 来说,其优点主要包括:设计灵活,属于硬件可重构的芯片结构,内部具有丰富的可编程输入输出单元引脚及触发器,可根据不同需求进行编程以实现各种功能;适用便捷,是专用电路中开发周期最短、应用风险最低的器件之一,部分客户无需投资研发即可获得适用的 FPGA 芯片;并行处理能力强,内部由众多可编程的逻辑块组成,这些逻辑块可以并行工作,大大提高了处理速度;可重配置,硬件结构可根据需要进行重配置,用户可以根据需求更改设备的功能,提高了设备的适用性;功耗低,在工作时,只有实际参与计算的部分才会消耗电力,其余部分则处于待机状态,整体功耗低于一般的微处理器;定制化开发,提供了丰富的开发工具和硬件描述语言,使得开发者可以进行定制化开发,以满足特定的应用需求。
Emulator(仿真器)的优点有:能够在设计早期阶段就进行功能验证,工程师在只有硬件描述语言的代码而没有实际硬件时,就可以通过仿真器对代码进行仿真,验证其逻辑功能的正确性,及早发现和修复潜在的设计错误;提供高度逼真的模拟环境,能够模拟硬件的实时运行过程,包括信号的时序、传输延迟和接口行为等,让工程师在接近实际硬件的条件下对设计进行验证,更加准确地评估设计的性能和可靠性;具有强大的调试功能,支持断点设置、波形观察、变量跟踪等调试手段,帮助工程师快速定位和解决设计中的问题;具备高度的灵活性和可扩展性,支持多种硬件描述语言和接口标准,可以与各种开发工具和软件无缝集成,工程师可根据需求进行定制化的配置和扩展。
FPGA 和 Emulator 的速度对比从搜索结果来看,不同的场景下 FPGA 和 Emulator 的速度表现有所不同。一般来说,FPGA 原型验证系统相对软件仿真以及 Emulator 而言,速度更快,比较适合一些耗时较多的场景。例如在芯片设计过程中,FPGA 可以为软件团队提供调试驱动软件的平台,加速芯片上市时间。而 emulator 的速度大概是 VCS 的 1000 - 10000 倍左右,在同样的时间内,可以跑更多的测试用例,或者跑更长的测试用例。但具体的速度对比还需要根据实际的应用场景和需求来确定,不同的项目可能会有不同的表现。
Emulator 的应用场景Emulator 具有广泛的应用场景。在云计算领域,Emulator 可以用于模拟摄像头设备,实现桌面视频录制的功能。这在教学、演示、游戏直播等场景中非常常见,方便地捕捉桌面上的动作,并将其转化为视频文件。具有方便快捷、灵活性高、跨平台等优势,无需实际摄像头硬件,节省了成本和资源,可以模拟不同的摄像头设备参数,满足不同录制需求,并且可以在不同操作系统上运行。在硅前的验证方法中,专用的模拟器(emulator)可以将仿真速度提升成千上百倍,面向更大、更复杂的 SoC 设计,为了硬件和软件开发提供了强大的验证工具。此外,在 FPGA 原型验证系统中,Emulator 可以作为芯片仿真验证的一个补充,因为在 FPGA 内部可以生成真实电路,并且可以对接真实的硬件子卡,相较仿真使用的软件模型有一定差别,能够发现更多隐蔽的 bug。
FPGA 仿真器的功能FPGA 仿真器是一种用于模拟 FPGA 硬件行为的软件工具。它能够在设计早期阶段进行功能验证,在工程师只有硬件描述语言代码而没有实际硬件时,对代码进行仿真,验证其逻辑功能的正确性,及早发现潜在的设计错误。提供高度逼真的模拟环境,模拟 FPGA 的实时运行过程,包括信号的时序、传输延迟和接口行为等,让工程师在接近实际硬件的条件下对设计进行验证,准确评估设计的性能和可靠性。具有强大的调试功能,支持断点设置、波形观察、变量跟踪等调试手段,帮助工程师快速定位和解决设计中的问题。同时,FPGA 仿真器具备高度的灵活性和可扩展性,支持多种硬件描述语言和接口标准,可以与各种 FPGA 开发工具和软件无缝集成,工程师可根据自己的需求和项目特点选择合适的仿真器,并进行定制化的配置和扩展。
FPGA 上的任天堂娱乐系统模拟器FPGA 上的任天堂娱乐系统模拟器有多个项目,如 fpga_nes、NESTang 等。这些模拟器通常采用 Verilog 等硬件描述语言编写,利用 FPGA 的硬件加速能力来模拟 NES 的运行环境。例如 fpga_nes 是一个针对 FPGA 开发的任天堂娱乐系统模拟器,虽然目前该项目仍在开发中,缺少对映射器和 DMC 声音通道的支持,但它已经能够流畅运行大多数 NROM 游戏,如《超级马里奥兄弟》和《越野摩托》。项目还包含一个名为 NesDbg 的 C++ Windows 应用程序,通过 USB UART 与 FPGA 通信,实现 ROM 加载、单元测试、内存读写等功能。NESTang 则是一个开源项目,旨在使用 Sipeed Tang FPGA 板来重新创建任天堂娱乐系统,具有 720p HDMI 输出、从 MicroSD 卡加载 ROM、广泛的映射器支持等特点。这些模拟器不仅是技术挑战,也是教育工具,适合电子工程和计算机科学的学生学习 FPGA 编程和硬件设计,同时也为游戏开发者和复古游戏爱好者提供了在现代硬件上重温经典游戏的机会。
FPGA(Emulator)系统在现代电子技术领域中发挥着重要的作用。FPGA 的灵活性、可重配置性以及并行处理能力使其在各种应用场景中具有独特的优势。Emulator 则为设计验证提供了强大的工具,能够在早期发现设计错误,提高设计的准确性和可靠性。而 FPGA 上的任天堂娱乐系统模拟器不仅满足了复古游戏爱好者的需求,也为学习和研究 FPGA 技术提供了实际的项目案例。无论是在芯片设计、软件开发还是娱乐领域,FPGA(Emulator)系统都有着广阔的应用前景。