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和后综合期间遇到,所以现在必须重新搭建电路单元约束以符合最初的设计规格,这将引起在芯片综合中增加了不必要的反复,这有可能会非常慢。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性(可直接在属性中设置)2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox(列表框) 1.WinForm文件结构 .sln文件 &am…

zabbix6.0 部署配置

架构 先简单介绍zabbix监控的最主要的两个组件: zabbix server zabbix agent server 用来部署 web console以及相关的数据存储,所以需要配合一些数据库来保存数据,比如mysql,pgsql, 又有前端的页面所以还需要配置 nginx 和getway 所以 serve…

Unity 文字显示动画(2)

针对第一版的优化,自动适配文字大小,TextMeshPro可以拓展各种语言。第一版字母类语言效果更好。 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI;public partial class TextBeat…

基于C#使用winform技术的游戏平台的实现【C#课程设计】

基于C#使用winform技术的游戏平台的实现【C#课程设计】 说明项目结构项目运行截图及实现的功能 部分代码一些说明(个人觉得一些难点的说明)一、ListView ,ImageList 的综合使用二、图片上传以及picturebox 图片的动态替换三、图表插件的使用四、SQL工具类封装五、高…

Mybatis 简介(一)

这里使用的是3.5.11版本 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(P…

【proteus】8086 写一个汇编程序并调试

参考书籍:微机原理与接口技术——基于8086和Proteus仿真(第3版)p103-105,p119-122. 参考程序是p70,例4-1 在上一篇的基础上: 创建项目和汇编文件 写一个汇编程序并编译 双击8086的元件图: …

ant design vue Message 用法以及内容为 html片段情况

ant design vue 的 Message 用法 全局展示操作反馈信息 何时使用 # 可提供成功、警告和错误等反馈信息。顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。 全局配置: // main.ts// 进行全局配置 message.config({top: 0.7rem,//高度…

05 MIT线性代数-转置,置换,向量空间Transposes, permutations, spaces

1. Permutations P: execute row exchanges becomes PA LU for any invertible A Permutations P identity matrix with reordered rows mn (n-1) ... (3) (2) (1) counts recordings, counts all nxn permuations 对于nxn矩阵存在着n!个置换矩阵 , 2. Transpose: 2.…

【数据结构】常见复杂度习题详解 ------ 习题篇

文章目录 📋前言一. ⛳️前篇回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5️⃣实例五6️⃣实例六7️⃣实例七8️⃣实例八 三. ⛳️常见空间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三 四. ⛳️总结 📋前言 …

高性能计算与多模态处理的探索之旅:英伟达GH200性能优化与GPT-4V的算力加速未来

★多模态大模型;GPU算力;LLMS;LLM;LMM;GPT-4V;GH200;图像识别;目标定位;图像描述;视觉问答;视觉对话;英伟达;Nvidia&#…

交换机控制在同一个网段内的终端,用hybrid接口实现不同的IP通和不通。

实验效果:pc1和pc2不能通,但pc1和pc2分别可以和pc3通。 通过这个实验可以彻底掌握数据包在交换机上的进去的类型状态。 sw1配置: [sw1]dis current-configuration sysname sw1 vlan batch 10 20 100 interface GigabitEthernet0/0/1 port h…

【Redis安装】Ubuntu和Centos

此处安装的是 Redis5 在 Ubuntu 系统上 切换到 root 用户下,su 命令切换使用 apt 可以搜索 redis 相关软件包 apt search redis使用 apt 命令安装 redis apt install redis手动修改配置文件 redis.conf cd /etc/redis/ vim redis.conf修改以下两处 重启服务器 …

chatGPT结构及商业级相似模型应用调研

GPT前言 说明 ChatGPT这项技术的历史可以追溯到2018年,当时由Facebook实验室的团队开发出该技术,以开发聊天机器人为目的。随后,ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文,其中提出了ChatGPT的技术框架…

计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

车辆跟踪及测距 该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv5目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和…

GDB常用指令与调试汇总

文章目录 前言一、基础二、例子三、用gdb调试多线程程序 前言 GDB(GNU Debugger)是一个强大的调试工具,用于调试C、C等编程语言的程序。本文将介绍一些常用的GDB指令,以及通过例子演示如何使用这些指令进行程序调试。 一、基础 …

【Web】| CSS Float (浮动)的使用方法

Float(浮动)概念 CSS的Float(浮动),会使得元素向左或者向右移动,其它周围元素也会重新排列。 Float浮动,往往是用于图像,但它的布局一样非常有效。 元素如何浮动 元素的水平方向…

小白必看,手把手教你安装Python

目录 一,Python介绍 二,安装 Python 三,各种疑难杂症: 一,Python介绍 Python 是这两年来比较流行的一门编程语言,主要卖点是其相对简单的语法以及丰富的第三方库,下面我来带大家安装、配置 P…

python免杀初探

文章目录 loader基础知识loader参数介绍 evilhiding项目地址免杀方式修改加载器花指令混淆loader源码修改签名加壳远程条件触发修改ico的md5加密 loader基础知识 loader import ctypes #(kali生成payload存放位置) shellcode bytearray(b"shellc…

外网nat+nat server,内网做路由过滤,以及ppp CHAR认证 企业网搭建

作业 网络拓扑图如下所示: 要求:做适当的截图,表示完成相应的操作。 按照网络拓扑要求搭建网络结构,按照个人学号配置每个节点的IP地址,其中X为班级号,Y为学号末尾2位;Y1为学号末尾2位1&#…

KekeBlog项目实战后台模块(二)(已完结)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…