前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >FPGA的综合和约束的关系

FPGA的综合和约束的关系

作者头像
碎碎思
发布于 2022-06-06 00:10:46
发布于 2022-06-06 00:10:46
9450
举报
文章被收录于专栏:OpenFPGAOpenFPGA

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

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

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

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

图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语言。Cadence、Mentor 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说明了一个简单的电路,其中综合所需的一些信息必须由设计工程师指定。

图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》文档了解此信息。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SystemVerilog(二)-ASIC和FPGA区别及建模概念
SystemVerilog既是一种硬件设计语言,也是一种硬件验证语言。IEEE SystemVerilog官方标准没有区分这两个目标,也没有指定完整SystemVerilog语言的可综合子集。相反,IEEE让提供RTL综合编译器的公司来定义特定产品支持哪些SystemVerilog语言结构。
碎碎思
2022/04/14
1.1K0
SystemVerilog(二)-ASIC和FPGA区别及建模概念
SystemVerilog(一)-RTL和门级建模
接下来系列文章会有很多在Verilog中知识点有被提及,关于这两者关系,请查看《谈谈Verilog和SystemVerilog简史,FPGA设计是否需要学习SystemVerilog》。
碎碎思
2022/04/14
2.1K0
SystemVerilog(一)-RTL和门级建模
SystemVerilog(七)-网络
System Verilog提供两组通用的数据类型:网络和变量(nets 和 variables)。网络和变量同时具有类型和数据类型特性。类型表示信号为网络或变量,数据类型表示网络或变量的值系统,即2态或4态。为简单起见,使用术语data type来表示信号的类型和数据类型。
碎碎思
2022/06/06
1.6K0
SystemVerilog(七)-网络
SystemVerilog(六)-变量
System Verilog提供两组通用的数据类型:网络和变量(nets 和 variables)。网络和变量同时具有类型和数据类型特性。类型表示信号为网络或变量,数据类型表示网络或变量的值系统,即2态或4态。为简单起见,使用术语data type来表示信号的类型和数据类型。
碎碎思
2022/06/06
2.3K0
SystemVerilog(六)-变量
数字硬件建模SystemVerilog-组合逻辑建模(2)always和always_comb
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。
碎碎思
2023/02/14
2.8K0
数字硬件建模SystemVerilog-组合逻辑建模(2)always和always_comb
数字IC设计 | 入门到放弃指南
Verilog语言与软件语言最大的区别就是,因为它是用于描述电路的,因此它的写法是非常固定的,因为电路的变化是非常有限的。学习Verilog的时候,很多时候我们并不是在学习这门语言本身,而是学习其对应的电路特征,以及如何对这个电路进行描述。如果心中没有电路,那么你是不可能写好Verilog的。
数字芯片社区
2022/04/06
2.6K0
数字IC设计 | 入门到放弃指南
SystemVerilog-决策语句-case语句
经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。
碎碎思
2022/11/14
4K0
SystemVerilog-决策语句-case语句
数字硬件建模SystemVerilog-组合逻辑建模(4)组合逻辑决策优先级
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。
碎碎思
2023/02/14
1.2K0
数字硬件建模SystemVerilog-组合逻辑建模(4)组合逻辑决策优先级
数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。
碎碎思
2023/02/14
6890
数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑
数字硬件建模SystemVerilog-时序逻辑建模(1)RTL时序逻辑的综合要求
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。
碎碎思
2023/02/14
7860
数字硬件建模SystemVerilog-时序逻辑建模(1)RTL时序逻辑的综合要求
谈谈Verilog和SystemVerilog简史,FPGA设计是否需要学习SystemVerilog
Verilog和System Verilog是同一硬件描述语言(HDL)的同义名称。SystemVerilog是IEEE官方语言标准的较新名称,它取代了原来的Verilog名称。Verilog HDL语言最初是于1 9 8 3年由Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。专有的Verilog HDL于1989年逐渐向公众开放,并于1995年由IEEE标准化为国际标准,即IEEE Std 1364-1995TM(通常称为“Verilog-95”)。IEEE于2001年将Verilog标准更新为1364-2001 TM标准,称为“Verilog-2001”。Verilog名称下的最后一个官方版本是IEEE Std 1364-2005TM。同年,IEEE发布了一系列对Verilog HDL的增强功能。这些增强功能最初以不同的标准编号和名称记录,即IEEE Std 1800-2005TM SystemVerilog标准。2009年,IEEE终止了IEEE-1364标准,并将Verilog-2005合并到SystemVerilog标准中,标准编号为IEEE Std 1800-2009TM标准。2012年增加了其他设计和验证增强功能,如IEEE标准1800-2012TM标准,称为SystemVerilog-2012。在撰写本书时,IEEE已接近完成拟定的IEEE标准1800-2017TM或SystemVerilog-2017。本版本仅修正了2012版标准中的勘误表,并增加了对语言语法和语义规则的澄清。
碎碎思
2022/03/07
3.3K0
谈谈Verilog和SystemVerilog简史,FPGA设计是否需要学习SystemVerilog
能耗换取灵活性,今天的 FPGA 走错路了?
定义 1:FPGA 是一堆晶体管,你可以把它们连接(wire up)起来做出任何你想要的电路。它就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。
机器之心
2019/07/31
5670
FPGA的设计艺术(11)FPGA的构建过程
本文讨论FPGA的构建过程,由于FPGA的过程太多了,恐怕会有歧义,这个过程,不是开发过程,不是开发流程,而是实实在在的FPGA编译的过程,使用编译恐怕不是太合适,但是大家都叫习惯了,也知道FPGA的编译过程就是指的是FPGA实现的中间一系列过程,例如综合,实现以及最后生成比特流编程文件。
Reborn Lee
2021/10/20
1K0
FPGA的设计艺术(11)FPGA的构建过程
全面解析FPGA的基础知识
一、FPGA的简介 FPGA(Field- Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展出来的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA 普遍用于实现数字电路模块,用户可对 FPGA 内部的逻辑模块和 I/O模块重新配置,以实现用户的需求。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通
芯动大师
2022/11/15
1.5K0
全面解析FPGA的基础知识
1数字电路设计流程与SOC芯片架构图
产品要解决什么问题,预测未来3-5年的走势和趋向,确保芯片是有卖点和前瞻性,面向未来。
全栈程序员站长
2022/10/04
1.1K0
1数字电路设计流程与SOC芯片架构图
SystemVerilog(五)-文本值
System Verilog 扩展了 Verilog 的 教据类型 , 增强了指定文本值的方法。在介绍文本值之前我们先简单回忆一下HDL中的四个状态数据值。
碎碎思
2022/04/14
1.3K0
SystemVerilog(五)-文本值
数字硬件建模SystemVerilog-循环语句
经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。
碎碎思
2022/11/14
3K0
数字硬件建模SystemVerilog-循环语句
基于FPGA的电子计算器设计(上)
今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,话不多说,上货。
FPGA技术江湖
2020/12/30
1.3K0
FPGA学习笔记
FPGA(Field-Programmable Gate Array,现场可编程门阵列)作为数字系统设计领域的明星,以其灵活性和高性能受到广泛青睐。本文旨在深入浅出地介绍FPGA的核心理论概念、学习过程中常见的问题及易错点,并提供实用建议帮助你避免这些陷阱。同时,我们还将通过代码示例让你对FPGA编程有更直观的理解。
Jimaks
2024/05/13
2810
FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题
本文其实就是整合了一下去年秋招时总结的笔试题或者各大平台的练习题,只不过去年由于边笔试面试边总结,比较粗糙,这里再次整理润色一下,前人栽树,方便后人乘凉!注:个人微信公众号、简书、知乎也正在不断发布文章哦!
Reborn Lee
2020/06/29
2.2K0
相关推荐
SystemVerilog(二)-ASIC和FPGA区别及建模概念
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档