【发布时间】:2016-05-04 23:11:02
【问题描述】:
我有一个关于在 FPGA 设计环境中编译 HDL 程序的问题。
1) 为什么编译过程需要这么长时间?真的是编译过程耗时长,还是个别逻辑门的编写耗时长?
2) 为什么编译后的文件通常称为“位文件”?这些位文件的格式是什么?我正在描绘一个二维矩阵的门,将根据位文件中的位打开或关闭。
感谢您的帮助!
【问题讨论】:
标签: vhdl verilog fpga system-verilog hdl
我有一个关于在 FPGA 设计环境中编译 HDL 程序的问题。
1) 为什么编译过程需要这么长时间?真的是编译过程耗时长,还是个别逻辑门的编写耗时长?
2) 为什么编译后的文件通常称为“位文件”?这些位文件的格式是什么?我正在描绘一个二维矩阵的门,将根据位文件中的位打开或关闭。
感谢您的帮助!
【问题讨论】:
标签: vhdl verilog fpga system-verilog hdl
1) 为什么编译过程需要这么长时间?真的是编译过程耗时长,还是个别逻辑门的编写耗时长?
首先,如果您想了解您的 FPGA 工具所做的所有辛勤工作,只需打开详细模式/详细报告,然后浏览/阅读它们。
我将以 Xilinx 的观点来回答,因为这是我所知道的。尽管流程可能有不同的名称/分组/顺序,但各个供应商的想法是相同的。
HDL->bytecode 过程与编译 Java 的方式略有不同。这不仅仅是将每一行转换为一些字节码,而是将整个设计转换为硬件实现的一个相关过程。您不是将程序转换为硬件,而是将硬件描述为硬件。当你在模拟器中运行测试台时,你只会把一堆 Verilog 或 VHDL 称为程序。
请记住,时序约束是一回事,因此优化时序/逻辑深度是重中之重。
在实践中,综合包括将行为 Verilog/VHDL 转换为 RTL 表示,包括 FSM 综合、布尔函数的提取、优化、解码器/编码器、多路复用器、ROM 等。此外,合成步骤将复制寄存器,其值是FPGA 上的多个区域都需要,从而将这些区域的布线延迟降至最低。一些合成器工具,例如 XST,将在此阶段提供对时序和设备利用率的粗略估计。
此外,请记住,综合涉及某种程度的推理。匹配某些主题/模式的 HDL 代码将被转换为硬件宏或某些原语的实例化。如果我编写的代码基于地址(可能还有写使能)同步访问大的reg[7:0] foo [2047:0],那么合成器工具会想要检测到它并放置一个块 RAM。它还将尝试优化不需要的逻辑,并可能在该优化中进行相当深入的逻辑分析。
翻译/映射还涉及大量复杂的硬件逻辑——在这个阶段,软件会尝试以最佳方式将您的逻辑函数填充到查找表中,将这些逻辑函数放入它们可能驱动的触发器旁边的切片中,然后再次优化.在这一步,优化遗留下来的冗余或多余的组件可能会被移除。
到目前为止,布局和布线是某些设计中较为密集的步骤之一。现在映射提供了由大量电线连接的大量查找表和寄存器,它们都需要使用有限的互连资源来放置。限制包括行/列中的行数、哪些位可以在特定距离连接到其他位,以及时钟分布。再次记住,存在时序约束。 PAR 可能能够快速放置设计,但要花很长时间尝试调整放置以适应这些限制。 布局和布线不是一个容易解决的问题,并且涉及大量的蛮力、基于成本表的随机布局和其他独特的方法。不用说,这可能需要很长时间。
想象一下,尝试组织下图所示的电路,每条导线的交叉点不超过两个,时序关键路径中的导线不超过 25 厘米,仅在 FPGA 的规模上:
2) 为什么编译后的文件通常称为“位文件”?这些位文件的格式是什么?我正在描绘一个二维矩阵的门,将根据位文件中的位打开或关闭。
你已经很接近了,虽然不完全是。比特流配置如下参数:
路由。什么信号在哪里,通过什么电线。这通常设置多路复用器和交叉连接。您提到的内容非常准确,尽管它们实际上不仅仅是门,而是连接(尽管完全缓冲以避免电容效应)
切片。每个切片包含一些用于函数生成器的查找表,以及更多的多路复用器等。比特流还指定了查找表的内容,它们是否应该被绕过或链接,输出是否应该直接进入路由或触发器,该触发器是否应该有异步复位,是否应该是 posedge 或 negedge , 等等。对于分布式内存片,与在外部控制下写入/移动 LUT 相关的配置。
其他功能块:应如何配置 DSP/乘法器块,时钟处理电路(如 DCM/PLL/MMCM/等)的参数/连接,块 RAM 的宽度/下降/初始内容,用于收发器,等等。
元数据。如果不应复制比特流,则可能阻止通过配置端口/JTAG 读回比特流。
【讨论】:
编译需要找到一组在布局中与编码逻辑匹配的门。这是一个难以解决的优化问题——我认为它可以被视为一个边缘交叉问题。
Bitfiles 是一组“熔断器”,用于配置片上门的网络。如果不查看特定芯片,我会猜测一个熔断器由一个具有芯片定义排序的位表示。
【讨论】: