FPGA设计中时序约束的重要性
Posted 06/07/2021 by Eugen Krassin
LEC2 Workbench是莱迪思推出的一系列技术博客文章,重点关注使用莱迪思产品的应用开发。这些文章由莱迪思教育能力中心(LEC2)的 FPGA 设计专家撰写,LEC2是与莱迪思半导体密切合作推出的完整培训和教育计划。该计划将包含莱迪思半导全部的FPGA产品、解决方案集合、设计工具和方法。
在芯片设计的前期,低功耗FPGA平均由几千个查找表(LUT)组成。然而,随着深亚微米制造技术的进步,如今的低功耗FPGA可以支持多达100K LUT或更多。这些更为复杂的FPGA还结合了处理器、存储器模块和其他IP模块。FPGA日益复杂,因而需要结构更加优化的设计流程,不仅需要有扩展性,还要为FPGA设计人员提供足够的灵活性来定义无缝的设计方法。
FPGA开发的主要目标是设计符合应用性能要求的安全可靠的电路。因此,FPGA设计过程中最重要的一个步骤就是合理地说明和验证设计的时序约束,确保它们针对模块的时序和性能要求进行了优化。这同样也适用于未约束的路径,因为未能对其进行验证意味着它们不仅不会被优化,而且也不会被报告。莱迪思Radiant®设计软件包括了FPGA开发人员满足这两种要求所需的工具。
时序约束
时序参数约束和验证的基本路径类型是以钟控单元开始和结束的路径。这种类型的路径可能存在于典型FPGA设计的不同位置。我们来看一些例子。
FPGA输入路径(示例1)
在上面的示例中,FPGA的输入信号由外部组件生成。一般来说,CLKA和CLKB时钟是不同的。
Radiant时序约束编辑器为用户提供了合适的模板,可显著减少输入参数所需的工作量。
FPGA内部路径(示例2)
这种常见的路径类型如下图所示。
与示例1不同的是,源触发器和目标触发器都在FPGA内部。这里的区别在于,除了时钟约束之外,无需明确其他时序参数,因为Radiant软件已经知道内部时序参数值。下列约束通常就足够了。
但也有例外。在最简单的情况下,时序约束定义了要开发的系统中时钟(或多个时钟)的工作频率。然而,设计中并非所有时钟的时序关系都可以详细分析。异步时钟就是这样一个例子,因为无法准确地确定它们的相位。
- 同步时钟具有可预测的时序/相位关系。主时钟及其衍生时钟通常都是如此,因为两者同源(根)并有着共同的周期。
- 异步时钟没有可预测的时序/相位关系。异步时钟基于不同的根。
你可以借助约束文件和周期组声明来设置周期路径之间的关系。 例如,如果在FPGA中使用两个异步时钟(CLKB1和CKKB2),则可以使用以下约束。
在一个典型的FPGA设计中,我们还必须处理所谓的时序例外(也称为多周期路径)。时序例外是每隔一个时钟周期才需要的结果。例如,在下图中,EN信号每隔一个周期才会出现一次。
时序例外的另一个例子是当两个时钟同步时,数据从较慢的时钟系统传输到较快的时钟系统(反之亦然)。最后,错误路径也被认为是一种时序例外。
通过提前识别时序例外,时序引擎可以集中资源优化更关键的路径,提供更高质量的结果。
FPGA输出路径(示例3)
在上面的示例中,FPGA的输出信号从外部组件接收额外的处理。一般而言,时钟CLKB和CLKC是不同的,但也可以相同。
在本示例中,Radiant时序约束编辑器为用户提供了合适的模板,显著减少了输入参数所需的工作量。
时序约束分析
Radiant软件包括了一个时序分析器,用于检查指定的时序参数。该分析器可以创建报告,显示所有已明确的和未约束的时序路径的结果和分析。时序约束编辑器和时序分析器相结合,简化了FPGA的优化。
Eugen Krassin是莱迪思教育能力中心的总裁兼创始人。