如何确保 FPGA 中生成的硬件对于该特定代码段是正确的?

How to make sure that the hardware generated in the FPGA is correct for that particular piece of code?

我在面试中被问到这个问题。面试官问这样的问题“假设你已经用verilog编写了一个生成250MHz时钟的代码并对其进行了综合。现在你如何确保生成的硬件在仿真之前能够工作在250MHz?” 我已经在互联网上搜索过这方面的信息,但找不到任何答案。

运行 您的时钟在模拟器上生成 Verilog 代码。

FPGA 供应商通常会提供带有综合工具的模拟器;或者您可以使用免费模拟器,或来自 EDA 供应商的商业模拟器。

仿真器让您可以查看设计中随时间变化的所有信号值,这些值显示在直观的图形用户界面中,使您能够在将代码部署到 FPGA 之前发现并修复许多问题。

  • 一些工具包具有 post-PAR(布局布线)模拟,不仅可以模拟逻辑行为,还可以模拟时序。使用 post-PAR 仿真,您可以验证电路是否符合时序约束。
  • 另一种验证时序的方法是使用时序约束。您的软件可能有一些约束编辑器,您可以为所需的输出信号设置约束。一旦定义,软件将在 mapping/place-and-route 阶段检查时间并报告是否满足。

很抱歉张贴为答案,没有评论的声誉。

我想也许面试官想要的答案是使用时序分析仪。

在类似 SDC 的文件中定义您的约束,并使用供应商时序分析器检查 250MHz 时钟是否确实可以在给定的硬件中工作。

通过综合或PAR工具创建的网表,应通过以下主要步骤(不限于此)进行验证。 FPGA 工具可以选择写出门级网表和导出技术库,因此第三方工具也可以用于这些步骤。

1) 静态时序分析 (STA)

根据用户定义的时序约束验证网表的时序。 Xilinx 和 Intel(以前称为 Altera)在他们的设计套件中有内置工具。

2) Formal/Logic 等价性检查

比较 RTL 和网表的功能。由于这是一个正式的过程,因此无需提供输入向量(例如测试平台)。

3) 门级仿真

验证功能和时间。通常,SDF(标准延迟格式)文件用于网表的时序数据。 SDF 可以通过综合、STA 或 PAR 工具创建。