数字后端——布局

        由于I / O单元和模块的布放已经在布图规划时完成,因此布局的剩余任务主要是对标准单元的布局。布局方案在布图规划时就已经做了决定,要么选择展平式布局,要么就是层次化布局。

一、布局目标

        布局的目标也即布局内容实施之后所要达到的预期值,可以归纳为以下3部分。

  1. 各模块的位置相对确定,每个标准单元都被放置在相应的位置,并具有自己的状态(attribute)。整个设计的拥塞程度相对均匀合理,基本满足布通的要求。
  2. 满足设计规则的要求,即除了时钟网络,其他的高扇出网络,如复位信号等都插入了相应的驱动单元,从而满足最大电容、最大扇出和最大信号转换时间等设计约束。时钟网络上的设计规则需要在时钟树综合阶段完成。
  3. 芯片的时序和供电较为良好。芯片的时序主要体现在建立(setup)时间的违例上,在布局完成后,可以根据标准单元位置的具体摆放,从而调用较为精确的延迟模型对设计进行延迟预估,此时芯片的工作主频基本上已经确定,不同的EDA工具布线之后的时序与布局之后的时序预估的差别各异,有时布线之后的延迟会比布局之后高出5%~10%。芯片保持(hold)时间的违例一般在时钟树综合之后完成。此时对芯片的电源进行分析与最终的分析也较为接近。

二、布局方式

1、展平式布局

        在芯片的布图规划阶段完成了芯片的整体规划,在布局阶段则是其细节的实施。布局是自动化的,如果采用展平式布局方案,它的主要内容有以下两个部分组成:

  1. 模块的摆放与布局。模块(block)的摆放一直是布局的重要组成部分。一直以来,集成电路后端设计者在完成布图规划阶段,需要半自动地将模块放置在芯片核内合理的区域之内,当发现结果不理想时,还可以重新调整它们的位置。随着更多基于模块设计(BBD)在SoC中的使用,大量模块位置设计则由布局工具自动完成。
  2. 标准单元的摆放和优化。当硬核模块的位置设定好后,需要将模块内的标准单元摆放到相应位置,这就是布局的主要工作。当标准单元的位置确定后,布线后互连线的寄生分布参数的数值具有实际意义,此时对芯片的时序进行分析,从而进行优化。

        大量标准单元的放置采用自动布局方法实现,用户也可以通过脚本或手动等辅助方法,将寄存器按照一定的阵列摆放,例如,对Datapath模块的摆放。时钟树中所用buffer属于标准单元,它们位置的摆放也可以通过手动实现。

2、层次化布局

        在层次化设计方案中,布局有三个过程:①先分配子模块,这是与展平式布局最大的不同之处;②作子模块级的布局,它的方法与展平式一样;③所有子模块完成后在顶层组装,其布局方法也与展平式一样。

1)子模块约束类型的制定

        层次化设计中子模块的约束类型一般有三种:向导约束(guide)区域约束(region)和限制约束(fence),其中

  • 向导约束为模块指定向导范围,属于该模块的标准单元,可以放置在该向导范围内,也可以放置在向导范围之外,不属于该模块的标准单元也可以放置在该向导范围内。
  • 区域约束中,属于该模块的标准单元只能放在指定的区域内,该区域还可以放置 其他的模块元。
  • 限制型约束中,属于该模块的标准单元只能放在该区域内,且不允许放置其他模块中的标准单元。限制型约束是强约束类型,多用于层次化设计中,而在展平式设计中,多采用较为宽松的约束。

        上述3种定义为Cadence公司的SoC Encounter中的名称,不同的EDA工具对于这三种的约束定义有所区别。例如,在Astro中,所有的模块都可以用PlanGroup来定义,其约束的程度可以通过定义其权重,从而确定各个区域的约束类型。

2)子模块大小位置的制定

        为各个模块指定约束后,耑要在芯片内部指定模块的大小和位置。模块大小的确定主要看面积利用率的大小,它是指标准单元总面积与模块在芯片内部所分布面积之比。当初始利用率低于70%时,较容易布通,而当利用率高于85%时,则会出现较大的拥塞,从而导致无法完成布线。

三、布局目标预估

        芯片的物理设计需要在不同阶段对芯片需要实现的目标进行评估,从而尽早发现问题,并减少设计的迭代。在布局完成后需要评估的目标主要有:拥塞(congestion)程度的评估、延迟和时序预估供电预估。一般情况下层次化设计在布图规划后,进行目标预估,并分解到各个模块。当然在很多情况下是在虚拟原型设计完成,即布局优化、粗布线完成后对设计目标进行预估。

1、拥塞预估

        在布局完成之后,标准单元的位置相对确定,即可以较准确地对布线的拥塞程度进行预估。EDA工具将整个布线空间划分为多个小的布线格,每个布线格划分为横向通道和纵向通道,在每个布线格内,估算并统计所需要的纵向通道和横向通道数量,当实际需要的通道超过现有的通道的5%时,表明拥塞程度比较大。由EDA工具分析拥塞和显示拥塞程度的菜单,可以得出拥塞的数据和分布,从而决定布局优化的方案。当全局拥塞很小,但是存在局部拥塞较大的情况时,则需要对设计进行优化。当报告全局的拥塞非常小,但是在局部区域存在着较大的拥塞,会造成布线无法布通时,则需要对标准单元布局进行优化。

2、时序预估

        标准单元布局完成后,其位置都相对确定,此时对芯片的延迟计算和时序较接近于芯片最终的时序。在布局完成后, 一般只需要做建立时间(setup time)预估,不需要做保持时间(hold time)预估,因为此时还没有进行时钟树综合,而保持时间的违例通常是在时钟树综合之后进行优化。这时还可以对噪声的影响进行预估,在0. 18pm及以上工艺,一般不需要太多地考虑噪声,而在0. 13um及以下的工艺中,则需要考虑噪声的影响,在标准单元布局阶段即可以考虑噪声。

3、供电预估

        标准单元布局后,将标准单元的供电端口连接到电源网格中(followpins),此时可以引用VCD文件,对芯片的功耗、电压降及EM进行评估。由于时钟树还没有综合,功耗值会偏小,在预估时应当注意。

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

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

相关文章

python基础 函数 (四)

一 函数基本 def func1():print("hello world")return 1, "hello", ("wo", "ai"), ["ni", "da"], {"you": "xi"} # return 可以返回任意# 结果: (1, hello, (wo, ai), [ni, da…

c#注释

c#的注释分为:这里不能不说一下什么是注释。 注释本身不会执行,只是说明性文字,只供程序员阅读。 注释又分为:单行注释,多行注释,文档注释。 单行注释://开始 多行注释:/*开始&#…

嵌入式linux字符设备驱动

1. 我们需要先调用register_chrdev_region()或 alloc_chrdev_region()来向系统申请设备号int register_chrdev_region( dev_t first, unsigned int count, char *name ); //函数通过已知的设备号first来注册字符设备区域。 int alloc_chrdev_region( dev_t *dev, unsigned int…

数字后端——时钟树综合

在数字集成电路设计中,时钟信号是数据传输的基准,它对于同步数字系统的功能、性能和稳定性起决定性作用,所以时钟信号的特性及其分配网络尤被人们关注。时钟信号通常是整个芯片中有最大扇出、通过最长距离、以最高速度运行的信号。时钟信号必…

52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

MySQL创建用户以及授权 默认用户是root用户,不可能所有人员都用root用户,创建用户防止误删除,因为mysql里边有多个库每个库里有很多表,所以需要给单独的用户做一些授权我只需要它对某一个数据库有权限,或者说对某个数据…

线程池的种类,区别和使用场景

newCachedThreadPool: 底层:返回ThreadPoolExecutor实例,corePoolSize为0;maximumPoolSize为Integer.MAX_VALUE;keepAliveTime为60L;unit为TimeUnit.SECONDS;workQueue为SynchronousQueue(同步队…

20145225 《信息安全系统设计基础》第14周学习总结

第九章 虚拟存储器 虚拟存储器是计算机系统最重要的概念之一,它是对主存的一个抽象 三个重要能力: 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据&#xf…

数字后端——布线

布线是继布局和时钟树综合之后的重要物理实施任务,其内容是将分布在芯片核内的模块、标准单元和输入输出接口单元( I /O pad)按逻辑关系进行互连,其要求是百分之百地完成它们之间的所有逻辑信号的互连,并为满足各种约束条件进行优…

动态加载和静态加载及其编译步骤

在类unix操作系统中,驱动加载方式一般分为:动态加载和静态加载,下面分别对其详细论述。 一、动态加载 动态加载是将驱动模块加载到内核中,而不能放入/lib/modules/下。 在2.4内核中,加载驱动命令为:ins…

streamsets 集成 minio s3测试

具体streamsets crate 集成可以参考 streamsets crate 以下文档只关注minio 集成的配置 minio 服务 搭建 具体搭建参考: https://www.cnblogs.com/rongfengliang/p/9197315.html 创建bucket (crate 集成使用) 测试的csv 文件从https://www.s…

sqlite性能优化

1、数据库性能上 1.1 批量事务插入,提升数据插入的性能 由于sqlite默认每次插入都是事务,需要对文件进行读写,那么减少事务次数就能简书磁盘读写次数从而获得性能提升。 1.2 单条sql优于多条sql 实测发现,对于几十条sql插入当你替…

【codecombat】 试玩全攻略 第十四关 已知敌人

第十四关 已知敌人 在这一关里,我们的英雄获得了一副可以看见敌人的眼镜,所以他很强势的学会了“发现敌人”的技能。 hero.findNearestEnemy()命令,单词多了,首字母都要大写了,不然分不出来。玩过wow的小伙伴用过 宏命…

数字后端——信号完整性分析

随着光刻和集成电路制造工艺的不断进步,以及芯片的特征尺寸从深亚微米到纳米的迅速采用,人们一方面因为芯片的功能极大提高而受益,另一方面,当逻辑门的沟道长度减小时,门的开关时间会减小,这意味着输出驱动…

新浪前端面试

1、什么是Html语义化? 语义化 div > section,div > nav(语言自己能解释), input/(关闭符号) br/相对于样式标记,如 i(样式)/ em(语义);b(样式&#xff…

poj3278 【BFS】

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 97240 Accepted: 30519Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a num…

表单高级

● 表单高级 ○ 表单字段集<fieldset></fieldset> ■ 功能&#xff1a;相当于一个方框&#xff0c;在字段集中可以包含文本和其他元素。该元素用于对表单中的元素进行分组并在文档中区别标出文本。fieldset元素可以嵌套&#xff0c;在其内部可以在设置多个fieldset…

CMOS图像传感器——TDI CIS

一、面阵与线阵图像传感器 人们在日常生活中见到的相机大多基于普通的面阵图像传感器,这种相机多用来拍摄静止的物体。即使用它们來拍摄运动的物体,也仅仅是缩短了相邻两次拍摄的时间间隔,无需对所拍摄图像进行额外操作,对物体的运动方向和速度也没有限定条件。 除此之外,…

gpio_request 原形代码

其原型为 int gpio_request(unsigned gpio, const char *label) 先说说其参数&#xff0c;gpio则为你要申请的哪一个管脚&#xff0c;label则是为其取一个名字。其具体实现如下&#xff1a; [cpp] view plaincopyprint?int gpio_request(unsigned gpio, const char *label) …

【noip模拟】德充符

时间限制&#xff1a;2s 内存限制&#xff1a;512MB 【题目描述】 申徒嘉和郑子产都是伯昏无人的学生&#xff0c;子产因为申徒嘉是残疾人&#xff0c;非常看不起他&#xff0c;于是想要刁难他。 子产给了申徒嘉 n个数 a1,a2...an。 现在他要求申徒嘉重新排列这些数&#xff0c…

做好数据挖掘模型的9条经验总结

爱数据学习社 welcome数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程&#xff0c;这种知识是以自然或者人工形式创造的新知识。当前的数据挖掘形式&#xff0c;是在20世纪90年代实践领域诞生的&#xff0c;是在集成数据挖掘算法平台发展的支撑下适合商业分析…