FPGA时序分析与约束(6)——综合的基础知识

        在使用时序约束的设计过程中,综合(synthesis)是第一步。

一、综合的解释

        在电子设计中,综合是指完成特定功能的门级网表的实现。除了特定功能,综合的过程可能还要满足某种其他要求,如功率、操作频率等。

        有时,针对特定种类或者电路有专门的综合工具。如:

  • 时钟树综合——创建时钟树
  • 数据路径综合——在数据路径中创建重复的结构
  • 逻辑综合——用于实现各种逻辑电路

        通常,单词“综合”本身仅仅代表逻辑综合。

二、时序约束在综合中的作用

        设计过程中包含很多的步骤,这些步骤可以分成不同的种类,如:

  • 明确目的
  • 验证设计是否符合我们的期望
  • 评估某些特性
  • 真正实现设计

        最后的一系列步骤也成为实现步骤(implementation step),综合是这些实现步骤中的第一步。

2.1 优化

        对于实现网表的综合工具,它需要一些信息。第一个信息就是所实现网表需要完成的功能,该信息来自RTL描述。

        对于一个设备而言,显然功能是最重要的因素。但是,设计者还必须对一下问题敏感:

  • 面积:我们希望在同一单位面积上实现尽可能多的功能。
  • 功率:我们希望节省电池电量,并减少结点发热。
  • 性能:我们希望在设备上获得尽可能高的速度。

        然而,上述目标的每一个可能影响其他目标,大部分时候这样的影响都是我们不期望看到的。所以我们经常可以听到这样一句话,没有最好的设计,只有最合适的设计。

        设计者可以通过约束来将他对面积、功率、性能的要求传达给综合工具。一旦综合工具能够满足这些目标的电路,则该工具不需要进一步努力来实现“更好”的电路。进一步尝试改善任何一方面都有可能使其他方面恶化。

        因此,约束是用来告诉综合工具——在实现相同功能的许多可能的实现方式中,应该选择哪个以同时满足其对面积、功率和性能的要求。

2.2 输入重排序 

        我们考虑对于4个输入a,b,c,d进行“与”操作,一个该电路最简单的实现方式如图所示:

然而,现在想象输入d比其他输入来得晚,该电路取值必须等到d到达并通过两个与门。另一方面,相同功能还有另一种可替代的实现,如下图:

        在该电路中,等到d到达的时候,其他三个信号已经被使用,而d只需要通过一个与门。

        虽然这两个设计实现的是完全相同的功能并且占用了相似的面积(3个与门),但是对于不同的设计需求来说设计者就会有各自的倾向性。

        因此,根据进入相同组合逻辑中不同的相对到达时间,综合工具可能需要在可用的选择中决定使用哪种设计,使得最后到达的信号必须通过最少的逻辑电路。

        设计者使用约束来向综合工具传达各种输入信号的到达时间。

2.3 输入缓冲

        驱动可以理解成载流能力。因此,更高的驱动意味着输出将切换得更快,并且可以连接更多的负载。例如,某个特定的输入必须驱动一个巨大的扇出锥(fanout cone)。该特定输入是否可以驱动这种巨大得锥体取决于输入信号的驱动能力。如果驱动输入的信号不能驱动整个扇出锥的负载,那么该信号在被输送到此巨大的锥体之前就需要进行缓冲。

        设计者需要告诉综合工具驱动外部输入信号的驱动能力,以便综合工具决定是否放置额外的缓冲器。而约束用于传达外部输入驱动能力的信息。

2.4 输出缓冲

        与输入缓冲类似,如果输出端口预计要驱动外部的大负载,则可能需要设计使输出端具有额外的驱动能力。

        因此,设计者需要向综合工具传达端口必须驱动外部负载的信息。然后综合工具将选择适当的元器件或者缓冲器,使其具有合适的可驱动负载的能力。而使用约束可以传达输出端口需要驱动外部负载的信息。

三、综合中面临的普遍问题

3.1 设计划分

        虽然综合技术使设计者的生产力得到了重大飞跃,但是综合工具的最大瓶颈是它可综合设计的规模。与综合工具可以综合的设计规模相比,当今的设计规模是巨大的。

        因此,一个完整的设计必须被拆分成更小的单元,称之为电路单元(block)。在综合阶段,基于设计的逻辑视图可以创建电路单元,即将相关的功能放入一个电路单元中,这种划分称为逻辑划分(logical partition)。综合工具将一个电路单元综合为一个单位,因此,综合工具在任何给定时间仅能查看一个电路单元,并且它看不到电路单元如何与设计的其余部分进行交互。下图展示了设计是如何由逻辑单元组合的。

        最外面的矩形边框代表完整的设计,通常它满足整个设计的所有要求。因为综合工具无法综合整个设计,所以设计被划分为较小的电路单元(B1~B6),它们由内部较小的矩形表示。
        在任何时刻,综合工具都可以查看一个电路单元,同时它对完整设计的要求是已知的,因此完整设计的顶层约束必须分解为各个电路单元的约束。对于各个电路单元,这些约束必须基于这个电路单元与其他所有电路单元的交互来创建。例如,对于电路单元B1,必须指定约束以定义其与设计的主要输入之间的交互关系和它与其他电路单元B2和B4之间的交互。

        所以,本应只在顶层的约束现在被转换成在每个接口定义的更多约束。而随着约束数的增加,错误概率也随之增加。在上图中,划分表示为规则的矩形块。实际上,所有电路单元与多个电路单元交互,这就增加了整个约束集的复杂度。

        让我们来考虑电路单元B1和B2之间的交互。基于该交互,将存在一些用于电路单元B1的约束和用于电路单元B2对应的约束。很多时候,在这些电路单元上工作的人员和团队是不同的。在很多情况下,为接口单元电路编写的约束也是不一致的。例如,B1的设计者可能假设他将获得该电路单元总路径时间(total path time)的50%,而剩下的50%用于路径的其他部分。类似地,B2的设计者可能也假设可用该电路单元总路径时间的50%。因此,在这两个电路单元之间,它们可能消耗掉整个路径时间,而没给连接这两个电路单元的顶层布线留下时间。

3.2 更新约束

        这种不一致可能发生在同一设计的不同电路单元之间,这看起来有点奇怪。然而,由于某些电路单元没有满足其初始要求,所以各电路单元不断受到影响,这种不一致通常会逐渐蠕变。
        我们假设电路单元B1不满足它的一些时序要求,这些时序会影响B2。电路单元B2的设计者现在可能必须更新其约束,并且可能影响B2/B3和B2/B5 的接口。但是,在这个阶段,B3 或B5的约束可能与B2更新的约束不同步,而且在许多情况下,这些改变的约束可能干扰面积、性能和功率之间的微妙平衡。因此,电路单元级约束可能必须根据电路单元如何集成在子系统或芯片中来更新。

3.3 多时钟设计

        目前大多数设计具有多个处理器核(multiple processing cores),运行在不同的时钟频率。这些核可能有不同的外设。这些核是由多个设计组同时开发的,在集成它们的过程中。在初步实现期间可能会忽略用低频约束来约束高频核的无意错误。这些错误可能最终会在全芯片STA和后综合期间遇到,所以现在必须重新搭建电路单元约束以符合最初的设计规格,这将引起在芯片综合中增加了不必要的反复,这有可能会非常慢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/130439.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核有什么之内存管理子系统有什么第六回 —— 小内存分配(4)

接前一篇文章:Linux内核有什么之内存管理子系统有什么第五回 —— 小内存分配(3) 本文内容参考: linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇:第四部分 内存管理—— 刘超》 特此致谢! 二、小…

Ps:选区的基本操作

在 Photoshop 中,选区是为处理局部图像而自行定义的一个区域。 定义选区后,操作被限制在选区之内。选区周围显示的虚线边框,俗称“蚂蚁线”。 全选 Select All Ps菜单:选择/全部 Select/All 快捷键:Ctrl A 提示&#…

NI USRP软件无线设备的特点

NI USRP软件无线设备 NI的USRP(Universal Software Radio Peripheral)设备是RF应用中使用的软件无线(SDR)。NI的USRP收发器可以在多个频段发送和接收RF信号,因此可用于通信工程教育和研究。通过与LabVIEW开发环境相结合,USRP可以实现使用无线信号验证无…

C/C++内存管理——“C++”

各位CSDN的uu们你们好呀,好久没有更新小雅兰的C专栏啦,下面,小雅兰继续开始更新C专栏的内容!!!今天,小雅兰的内容是C和C的内存管理,下面,让我们进入C的世界吧&#xff01…

【uniapp】仿微信通讯录列表实现

效果图 代码实现 <view class"main-container"><!-- 成员列表 --><scroll-viewclass"member-list":style"computedHeight":scroll-y"true":enable-back-to-top"true":scroll-with-animation"true"…

vue2+elementui使用MessageBox 弹框$msgbox自定义VNode内容:实现radio

虽说实现下面的效果&#xff0c;用el-dialog很轻松就能搞定。但是这种简单的交互&#xff0c;我更喜欢使用MessageBox。 话不多说&#xff0c;直接上代码~ <el-button type"primary" size"mini" click"handleApply()" >处理申请</el-b…

Python爬虫爬取家纺数据并分析

因为时间的原因&#xff0c;没法写一个详细的教程&#xff0c;但是我可以提供一个基本的框架。你需要根据实际情况进行修改和扩展。以下是使用Python的requests库和BeautifulSoup库来爬取网页内容的基本步骤&#xff1a; # 导入所需的库 import requests from bs4 import Beaut…

k8s二进制(ETCD的部署安装)

角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …

Linux:权限篇 (彻底理清权限逻辑!)

shell命令以及运行原理&#xff1a; Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来…

故障诊断模型 | Maltab实现RF随机森林的故障诊断

效果一览 文章概述 故障诊断模型 | Maltab实现RF随机森林的故障诊断 模型描述 RF善于处理高维数据,特征遗失数据,和不平衡数据 (1)训练可以并行化,速度快 (2)对高维数据集的处理能力强,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降…

【论文阅读】NeROIC:在线图像集合中对象的神经渲染

论文连接&#xff1a; NeROIC: Neural Rendering of Objects from Online Image Collections introduction 从在线图像集合中获取对象表示的新颖方法&#xff0c;从具有不同相机、照明和背景的照片中捕获任意对象的高质量几何形状和材料属性。这使得各种以对象为中心的渲染应…

Mysql数据库 14.SQL语言 视图

一、视图的概念 视图&#xff1a;就是由数据库中一张或多张表根据特定的条件查询出的数据狗造成的虚拟表 二、视图的作用 安全性&#xff0c;简单性 三、视图的语法 语法 create view 视图表 as select_statement; 代码实现 #创建视图 将查询结果创建称为视图&#x…

聊聊测试左移到需求阶段

这是鼎叔的第七十九篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》​​​​​​​已出版&#xff08;机械工业出版…

JAVA集合学习和源码分析

一、结构 List和Set继承了Collection接口&#xff0c;Collection继承了Iterable Object类是所有类的根类&#xff0c;包括集合类&#xff0c;集合类中的元素通常是对象&#xff0c;继承了Object类中的一些基本方法&#xff0c;例如toString()、equals()、hashCode()。 Collect…

云计算、大数据技术的智慧工地,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式

智慧工地是利用物联网、云计算、大数据等技术&#xff0c;实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式。 智慧工地架构&#xff1a; 1、终端层&#xff1a; 充分利用物联网技术、移动应用、智能硬件设备提高现场管控能力。通过RFID、传感器、摄像头、手机等终…

Sectigo SSL

Sectigo&#xff08;前身为ComodoCA&#xff09;是全球在线安全解决方案提供商和全球最大的证书颁发机构。为了强调其在SSL产品之外的扩张&#xff0c;Comodo在2018年更名为Sectigo。新名称减少了市场混乱&#xff0c;标志着公司向创新的全方位网络安全解决方案提供商过渡。 S…

RVS—面向目标硬件的软件性能测试工具

产品概述 Rapita Verification Suite&#xff08;简称&#xff1a;RVS&#xff09;&#xff0c;为美国Danlaw公司提供的一款嵌入式系统在板测试套件&#xff0c;主要应用于汽车领域。其产品符合ISO-26262、DO178B/C、IEC-61508等行业标准&#xff0c;兼容Vxworks、Linux、SYSBI…

Windows 安装 JDK 8 和 JDK 17 和多版本JDK切换

下载 JDK JDK 8 下载地址&#xff1a;https://www.aliyundrive.com/s/koYe1SVRg76 JDK 17 下载地址&#xff1a; https://www.aliyundrive.com/s/tBcbUtAHTbg 安装 JDK 点击可执行文件 jdk-8u291-windows-x64.exe 进行安装 如果需要更改JDK安装目录&#xff0c;根据个人偏好…

从零开始搭建React+TypeScript+webpack开发环境-基于lerna的webpack项目工程化改造

项目背景 在实际项目中&#xff0c;我们的前端项目往往是一个大型的Webpack项目&#xff0c;结构较为复杂。项目根目录下包含了各种配置文件、源代码、以及静态资源&#xff0c;整体布局相对扁平。Webpack的配置文件分散在不同的部分&#xff0c;包括入口文件、输出目录、加载…

无需公网IP!部署Apache服务器与内网穿透实现公网访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…