0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是FPGA的综合和约束的关系?

汽车电子技术 来源:OpenFPGA 作者: 碎碎思 2023-02-09 14:33 次阅读

数字硬件建模SystemVerilog(四)-综合

poYBAGPkk2CAKDG4AATFPoUR4qs282.png

综合编译器将实现细节添加到抽象RTL模型,合成编译器:

  • 将RTL功能转换为等效功能的通用逻辑门。
  • 将通用门映射到特定的ASICFPGA目标。
  • 执行逻辑优化以满足时钟速度要求。
  • 执行逻辑优化以满足面积和功率要求,
  • 执行逻辑优化以满足建立和保持时间。

图1-10说明了使用SystemVerilog进行数字综合的一般流程,

poYBAGPkk0-ANjBSAASfAnq0g9Y302.png

图1-10:SystemVerilog综合工具流程

综合编译器需要三种主要类型的输入信息

  • 系统Verilog RTL模型-这些模型由设计工程师编写,代表需要在ASIC或FPGA中实现的功能行为
  • 目标ASIC或FPGA的工艺库-该库由ASIC或FPGA供应商提供,包含可用于实现所需功能的标准单元(用于ASIC)或门阵列块(用于FPGA)的定义
  • 综合约束定义-这些约束由设计工程师定义,并提供RTL代码中不可用的综合编译器信息,例如需要在ASIC或FPGA中实现的所需时钟速度、面积和功率目标。

出于前端设计和验证目的,综合的主要输出是门级网表。网络列表是组件和将这些组件连接在一起的导线(称为网络)的列表。网络列表中引用的组件将是用于实现所需功能的ASIC标准单元或FPGA门阵列块。此网络列表可以有多种格式,包括EDIF、VHDL、Verilog2001或SystemVerilog。本系列文章仅使用SystemVerilog输出。

为了仿真SystemVerilog网络列表,需要每个组件的仿真模型。目标ASIC或FPGA供应商将提供用SystemVerilog编写的仿真库。通常,这些库只使用SystemVerilog的Verilog-2001子集。这些组件在门级建模,具有详细的传播延迟。这些模型与设计工程师编写的抽象RTL模型不同。

SV综合编译器

有几个SystemVerilog综合编译器支持SystemVerilog语言。CadenceMentor Graphics和Synopsys等电子设计自动化(EDA公司销售的商用综合编译器。一些FPGA供应商,如Xilinx和Intel(前身为Altera)提供了专用于该供应商技术的专用综合编译器。

SystemVerilog是一种两用语言。一个目的是对数字硬件的行为进行建模。第二个目的是编写验证程序来测试硬件模型。这两个目的有非常不同的语言要求。许多通用编程结构对于这两个目的都很有用,例如,if-else决策或for循环。其他语言特性只能用于验证,例如约束随机测试(random test)生成。这些验证结构并不表示硬件功能,综合编译器也不支持这些验证结构。

IEEE尚未确定SystemVerilog的正式可综合子集。标准的这一缺陷导致了每个综合编译器对可综合SystemVerilog语言子集的支持存在重大偏差。此外,由特定综合编译器标识的子集可以(几乎肯定会)将综合产品的一个版本更改为该产品的下一个版本。

综合编译Synthesis Compilation

综合编译器的目标与仿真编译器不同。这两种类型的编译器都需要检查SystemVerilog RTL源代码的语法正确性,但这就是相似性的终点。仿真是一个动态过程,涉及仿真时间、事件调度、应用刺激和验证输出。综合是一个静态转换和优化过程,不涉及任何这些仿真目标。综合编译器需要确保代码满足必要的语言限制,以便将RTL功能转换为ASIC和FPGA实现中支持的逻辑门类型。这些限制包括检查RTL代码是否具有明确定义的时钟周期活动、单驱动程序逻辑等,综合编译器只需要编译RTL模型。综合不需要编译带有激励生成和输出验证的测试台代码。

单文件和多文件编译

大型设计被划分为许多子块。通常,每个子块将存储在单独的文件中,为了仿真分区设计,仿真要求所有这些子块都被编译并连接在一起。另一方面,综合通常可以分别编译和处理每个子块。综合优化和技术映射是计算密集型过程。将太多的子块合成在一起可能会导致结果质量(QOR)不理想。

在综合设计的子块时,有两个重要的考虑因素。首先,来自定义包的子块中使用的任何定义都要求该包与子块一起编译,并以适当的方式按照顺序编译,如果多个子块使用同一个包,则需要使用与其他子块分开编译的每个子块重新编译包,第二个考虑因素是,在每个单独的编译中都不会看到任何全局声明,包括“定义编译器指令”。

约束条件

图1-10显示了综合的三个主要输入之一是约束。约束用于定义综合所需的信息,但这些信息既不在RTL模型中,也不在ASIC/FPGA供应商的技术库中。图1-11说明了一个简单的电路,其中综合所需的一些信息必须由设计工程师指定。

pYYBAGPkkzqAcFzQAAHTBqNDPI0072.png

图1-11:需要综合约束的简单电路图

将此功能数据流综合成逻辑门的过程包括:

  • 将综合的触发器FF1映射到目标ASIC或FPGA中的适当触发器。
  • logic_block_1中描述的功能映射到目标ASIC或FPGA的标准单元或逻辑块。
  • 优化logic_block_1的布局布线,以满足FF1建立时间和保持时间要求。
  • 将logic_block_2中描述的功能映射到目标ASIC或FPGA的标准单元或逻辑块。
  • 优化logic_block_2的布局布线,以满足建立时间和保持时间要求。

为了在目标ASIC或FPGA中实现图1-11所示的简单电路,综合编译器必须知道:

  • 用于实现logic_block_1和logic_block_2的标准单元或逻辑块的传播延迟、面积和功率要求。
  • FF1建立时间和保持时间。
  • clk的周期或频率,如100Mhz。
  • in1相对于CLK边沿的到达时间。
  • in1外部电源的驱动能力
  • 相对于clk边沿的out1的到达时间。
  • out1的输出驱动要求。

此信息不在RTL模型中。此列表中前两项的规范,传播延迟和建立/保持时间,将来自ASIC或FPGA供应商提供的技术库,其余细节必须由综合设计的设计工程师指定。这些规范被称为综合约束,更大、更复杂的设计将需要更多的综合约束,后续的RTL编码示例将在适当的情况下讨论适用的综合约束。还提供了简化必须指定的约束的指南。

指定综合约束的方式因不同的合成编译器而异。推荐读者阅读《综合和时序分析的约束设计Constmining Designs for Synthesis and Timing Analysis》文档了解此信息。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593242
  • asic
    +关注

    关注

    34

    文章

    1158

    浏览量

    119266
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109309
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59069
收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA案例学习之Vivado设计综合约束

    在 Flow Navigator 中点击设置, 然后选择Synthesis,或者 selectFlow Settings Synthesis Settings。 如图1所示: 1、综合约束 在设置
    的头像 发表于 11-23 14:16 4342次阅读
    Xilinx <b class='flag-5'>FPGA</b>案例学习之Vivado设计<b class='flag-5'>综合约束</b>

    FPGA时序约束之衍生时钟约束和时钟分组约束

    FPGA设计中,时序约束对于电路性能和可靠性非常重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的主时钟约束
    发表于 06-12 17:29 1444次阅读

    求16.5安装方法和约束设置

    求16.5安装方法和约束设置
    发表于 05-24 22:32

    ISE 生成的sdf文件和在综合前的约束关系么?

    对于一个rtl设计,ISE place & route 之后会生成sdf文件,那么,如果在综合之前对 rtl设计,添加一定的约束,所生成sdf文件是否有变化?sdf文件和在综合前的约束
    发表于 02-09 15:19

    介绍FPGA综合(转)

    、非门等组合逻辑和寄存器等时序逻辑之外,还包含FPGA特有的各种原语(Primitive)比如LUT,BRAM,DSP48,甚至PowerPC,PCIe等硬核模块,以及这些模块的属性和约束信息。4.
    发表于 08-08 10:31

    FPGA约束设计和时序分析

    在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写
    发表于 09-21 07:45

    FPGA上的引脚和区域约束语法介绍

    引脚和区域约束也就是LOC约束(location)。定义了模块端口和FPGA上的引脚的对应关系。 那么我们应该怎么写呢?
    的头像 发表于 07-14 02:49 1w次阅读

    FPGA设计约束技巧之XDC约束之I/O篇(下)

    XDC中的I/O约束虽然形式简单,但整体思路和约束方法却与UCF大相径庭。加之FPGA的应用特性决定了其在接口上有多种构建和实现方式,所以从UCF到XDC的转换过程中,最具挑战的可以说便是本文将要
    发表于 11-17 19:01 6761次阅读
    <b class='flag-5'>FPGA</b>设计<b class='flag-5'>约束</b>技巧之XDC<b class='flag-5'>约束</b>之I/O篇(下)

    FPGA约束的详细介绍

    介绍FPGA约束原理,理解约束的目的为设计服务,是为了保证设计满足时序要求,指导FPGA工具进行综合和实现,
    发表于 06-25 09:14 6434次阅读

    如何轻松管理PCB设计规则和约束

    目前,PCB 电气和制造约束的数量和复杂性不断激增。参加这次研讨会可了解如何轻松管理您的设计规则和约束。我们将详细介绍如何为网络、网络类和间距组合创建约束,如何建立规则层级构等。
    的头像 发表于 05-16 06:05 3169次阅读
    如何轻松管理PCB设计规则<b class='flag-5'>和约束</b>

    如何轻松地管理您的设计规则和约束

    参加这次研讨会,学习如何轻松地管理您的设计规则和约束。我们将研究如何创建约束网、网类、和间隙集,如何建立规则的层次结构,等等。
    的头像 发表于 10-12 07:10 2379次阅读

    浅谈PCB设计系统中的设计规则和约束

    PCB设计取决于一套规则和约束条件,这些规则和约束条件决定了电路板的布局方式。这些规则涵盖了各个方面,从组件之间的紧密程度到特定网络的布线厚度。但是,成功的唯一方法是为每个作业专门设计规则。以前可行
    的头像 发表于 01-13 13:32 3694次阅读

    FPGA综合和约束关系

    SystemVerilog是硬件设计和验证语言的IEEE行业标准。标准编号为IEEE 1800。SystemVerilog名称将替换旧版Verilog名称。SystemVerilog语言是原始Verilog硬件描述语言的完整超集。SystemVerilog是一种双用途语言,用于描述数字硬件功能以及验证测试台。
    的头像 发表于 07-04 11:01 874次阅读

    Xilinx FPGA时序约束设计和分析

    在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写
    的头像 发表于 04-27 10:08 863次阅读

    Xilinx FPGA约束设置基础

    LOC约束FPGA设计中最基本的布局约束综合约束,能够定义基本设计单元在FPGA芯片中的位置,可实现绝对定位、范围定位以及区域定位。
    发表于 04-26 17:05 46次阅读
    Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>约束</b>设置基础