芯片后端开发基础知识(一)

news/2024/11/14 12:11:35/

目录

1 概要

2 术语和定义

3 网表和系统划分

4 布局布线

4.1 布图规划

4.2 电源规划

4.3 布局

4.4 布线

5 时钟树综合

参考文献

1 概要

1、物理设计包含哪些流程和阶段?每个阶段的主要文件是什么?

(1)与物理设计相对应的是逻辑设计(前端),主要包括:

  • 需求制定
  • 功能架构设计:ALU模块、寄存器模块、数据通路模块、存储器模块、UART模块(Universal Asynchronous Receiver/Transmitter,通用异步收发器)
  • 逻辑综合(Logic Synthesis):用硬件描述语言(HDL,如Verilog、VHDL)定义芯片的功能和时序行为,将描述的功能映射为网表和电路单元
  • 电路设计:设计晶体管级的单元,如静态RAM模块、I/O、模拟电路、乘法器、静电放电(ESD,Electro-Static Discharge)保护电路

(2)物理设计(后端)是决定单元、元件和它们的连接在集成电路版图中几何布置,将电路网表转换成物理版图的过程,包含布局布线阶段:

  • 布图规划(Floor Plan):对芯片内部结构的完整规划与设计
  • 布局(Place):确定在每个模块中所有单元的空间位置
    • SPF(Standard Parasitic Format):标准寄生格式,芯片的寄生参数文件,定义了Cell之间互连线电阻、寄生电容等,用于SI(Signal Integrity,信号完整性)、STA分析
  • 时钟树综合(CTS,Clock Tree Synthesis):决定时钟信号的缓冲、门控和布线,以满足规定的偏移和延迟需求
    • SDC(Standard Design Constrains):标准设计约束,用于逻辑综合与物理实施的时序、面积、功耗约束文件,定义了时钟树的组成部分和属性
  • 布线(Route):分配布线资源用于连接,指定布线轨道,优化目标 = μ芯片面积 + λ总线长,μ + λ = 1d
    • DEF(Design Exchange Format):设计交换格式,是布局布线后的展平式的电路网表文件,覆盖了布图规划、布局、布线的所有内容,可用于芯片寄生参数提取,功耗分析,电压降分析
    • PDEF(Physical Design Exchange Format):与DEF内容类似
  • 静态时序分析(STA):验证设计可以安全运行在给定的时钟频率下且没有时序违例
    • SDF(Standard Delay Format):标准延时格式,描述布局布线后单元及互连线的延时和STA分析,SDF文件可直接用于电路前端仿真
    • SPEF(Standard Parasitic Exchange Format ) :标准寄生交换格式,从网表中提取出来的表示RC值信息,在提取工具与时序验证工具之间传递RC信息的文件格式。SPEF提供RC信息,延时计算相对更准确。

(3)物理设计后包含签核阶段,签核(Signoff)主要包括以下四个方面:

  • RC参数提取
  • 静态时序分析(STA):验证设计可以安全运行在给定的时钟频率下且没有时序违例
    • SDF(Standard Delay Format):标准延时格式,描述布局布线后单元及互连线的延时和STA分析,SDF文件可直接用于电路前端仿真
    • SPEF(Standard Parasitic Exchange Format ) :标准寄生交换格式,从网表中提取出来的表示RC值信息,在提取工具与时序验证工具之间传递RC信息的文件格式。SPEF提供RC信息,延时计算相对更准确。
  • 功耗分析、电源网络分析
  • 物理验证:检查版图设计的正确性,主要包括:
    • 设计规则检查(DRC,Design Rule Check):验证版图满足所有工艺方面的约束
    • 版图与原理图一致性检验(LVS,Layout Versus Schematic):验证网表设计功能,看在设计过程中是否将逻辑功能改变
    • 寄生参数提取:验证电路的电气特性
    • 天线规则检查:防止天线效应
    • 电气规则检查(ERC,Electrical Rule Check):验证电源、接地连接,信号转换时间,容性负载,扇出在合适边界,检查开路短路

2、每个阶段的常用算法是什么?

  • 采用启发式算法找出符合实际运行时间限制的近似最优解,构造阶段生成初始解,在迭代阶段改善

2 术语和定义

术语

描述

组件

有基本功能的电路元件,如晶体管、电阻、电容

模块

一个电路划分或是一部分组件的集合

具有形状的组件,是一个有固定尺寸的电路划分

单元

不同组件建立的逻辑或者功能单位

标准单元

预先决定功能的单元

宏单元

没有预先定义尺寸的单元,拥有完整功能的模块

网表

在设计中连接的所有信号网和构件的集合,或者是所有网和分段设计的连接引脚的列表。网表在逻辑综合中创建,是物理设计的关键输入

供电网

提供电流给单元的电源网(VDD)和接地线网(GND)

引脚

电子终端,用于连接给定的构件到它的外部环境

过孔

金属层之间的连接,通常用于连接不同层的布线结构

线网

必须在相同电势下连接的引脚或终端的集合

线宽

集成电路内部电路导线的宽度,是衡量集成电路技术先进程度的标志之一

割边

连接不同划分之间的节点i∈A、j∈B,(i, j)∈E,则i、j间的边称为割边。所有割边的集合称为割集

扇出

逻辑门正常工作状态下,所能驱动同类型的门电路的最大个数

天线

在两次工艺之间连接到栅极多晶硅(Poly)和金属线处于悬空不接地的状态而形成的天线结构

通孔

连接相邻两层互连线的一个柱状物体

3 网表和系统划分

1、为什么要划分?

  • 降低大规模集成电路的设计复杂度,实现模块化

2、划分要依赖哪些约束?

  • 划分间连接数最小化(减少划分间耦合)、最大划分尺寸、最大时延路径、外部连接引脚数量限制等

3、用什么办法划分?

(1)KL算法(Kernighan-Lin)

  • 输入:2n个节点,所有节点权重相同,每条边都有非负权重
  • 输出:2n个节点划分成两个节点数为n的、不相交的、割数最小的子集
  • 运行时间:取决于增益更新和交换点的选择,其中增益是对任意两个割集中的节点交换前后所引起的割边代价的变化,时间复杂度:O(n^3)

(2)FM算法(Fiduccia-Mattheyses)

  • 计算每个独立元胞移动的增益
  • 解的质量和运行时间之间的折中

(3)模拟退火算法:解决部分困难的划分规划问题

4 布局布线

物理实施过程可称为布局布线(P&R,Place-and-Route),从数据输入到时间树综合之前,主要分为:布图规划、电源规划、布局、布线

4.1 布图规划

1、布图规划(Floor Plan):类似于图纸设计,生成了一个用于放置标准单元的芯片的基底,是对芯片内部结构的完整规划与设计。根据模块的面积和长宽比来优化芯片大小、降低互连线长度和改善时延,包含对芯片大小(Die Size)、芯片设计输入输出(I/O)单元、大量硬核(Hard Core)或模块(Block)的规划

  • 布图:块的位置和分布
  • 布图规划阶段确定了每个模块的外部特征(固定尺寸和外部引脚位置)

2、一个布图规划实例通常包含:

  • 每个模块的面积
  • 每个模块可能的长宽比
  • 与模块相关的网表

3、布图规划(F)优化目标:

  • 全局边界框的长宽比接近给定的目标值
  • 面积最小化。记为area(F)
  • 缩短互连线长度,总线长记为L(F),要考虑可布性(某区域的线不能太稠密)和可制造性
    • 如何计算:可以将所有的线网连接到所有块的中心
    • 面积和总线长的组合,优化目标为:α x area(F) + (1 - α) x L(F),同时全局边界框的面积作为约束
  • 降低信号时延,长互连线延迟对布图规划中块的位置和形状敏感
    • 通过静态时序分析来确定关键路径上的互连
  • 引脚分配:输出信号线连接到块引脚
    • 块之间的连接通过内部引脚来实现,引脚确定焊盘的位置,通常在芯片边缘
    • 优化目标:块内外的最大化线网可布性和最小化电寄生参数

4、I/O单元布局:

  • 综合考虑印制板走线、封装形式、供电情况以及内部模块结构
  • I/O单元供电:经验做法是给I/O单元供电的单元数量与给输出信号端口的数量为1:(5~10),给I/O单元供电的单元数量与给内核供电的I/O单元的数量为1:2

5、晕道:已放置的宏单元周围设置晕道,它所涵盖的区域不允许存在标准单元或其他宏单元。模块布放时,当芯片局部拥塞,用布线晕道来预留底层布线通道

6、布图规划步骤:

(1)层次化设计:

  • 芯片顶层设计规划
  • 子模块分割(Partition)和实现
  • 芯片顶层组装实现

(2)展平式设计:实验多种布图规划,采用静态时序分析方法,估算延迟,用时序违例来评估布图是否合理

4.2 电源规划

1、电源规划:建立电源供电网,即提供电流给单元的电源网(VDD)和接地线网(GND),确保给每个模块提供合适电压

  • 布局时针对标准单元会设置专门供电的电源轨道,负责供应电源信号的VDD电源条线和负责供应接地信号的VSS电源条线交替摆放

2、供电网络设计主要包括:

  • 全局电源网络连接(Global Net Connect):定义在Verilog网表和LEF文件中,把相应端口和网络连接到合适的电源和接地网络
  • 电源环线(Power Ring):包围在标准单元周围的环形供电金属
  • 电源条线(Power Stripes):通常不规则或不均匀分布,根据LEF规定,纵向必须用偶数层布线,横向必须用奇数层布线
  • 数模信号模块中的电源网格:高层金属完成布线,在集成度高、布线密度大、运行和处理速度高的高频区域,电源网格较为密集,在低频区域电源网格较为稀疏

4.3 布局

1、布局定义:标准单元放置,包括对IO单元的排序放置、大模块(Block)放置和标准单元放置的规划,目标是将所有标准单元正确地接入到电源网络上,并保证单元之间不重叠

2、布局步骤:

  • 全局布局:把单元扩散到版图中合适的位置,此时忽略单元重叠
  • 合法化:消除单元重叠,进行版图中行与列位置的对齐
  • 详细布局:局部修正结果

3、展平式布局和层次化布局:

  • 展平式布局:模块和标准单元的摆放与优化
  • 层次化布局:
  • 分配子模块,为各子模块指定约束(如向导约束、区域约束、限制约束)
  • 作子模块的布局,当模块中标准单元面积领用率高于85%时,则会出现较大拥塞,无法完成布线
  • 所有子模块完成后在顶层组装

4、在布局完成后需要评估目标:拥塞评估、时序评估、供电评估

5、Filter单元:填满标准单元中的空隙,避免生产制造规则的违例

4.4 布线

1、全局布线(Global Routing):对整个芯片的走线做全局规划,将芯片核区分为若干大块,每个方块纵横方向走多条线。其主要目标为:

  • 使总连接线最短
  • 解决布线分散不均引起的局部拥塞
  • 使关键路径延时最小,遵守时序规则
  • 遵循信号完整性要求,避免串扰
  • 保持将BUS总线聚集相连

2、详细布线(Detail Routing):物理实施的最后步骤,在多层金属间进行连线,能够自动进行布线修正,实现的结果将用作参数提取和时序分析。其主要设计规则为:

  • 标准逻辑单元布线遵循最小间距规则
  • 通孔时的通孔叠砌(Via Stacking)规则
  • 采用化学机械打平(CMP)处理每层金属以满足密度要求
  • 用布线器预防和修复串扰(Crosstalk),主要方法包括:
    • 增加走线间隔
    • 屏蔽关键信号线
    • 缩短平行走线长度
    • 转换到另一层连线
    • 加入缓冲器
  • 纳米设计规则,主要包括:
    • 平行重叠间隔规则(Parallel Overlap Cut Spacing)
    • 线端规则EOL(End of Line Spacing)
    • 最小分级最大边缘规则(Minimum Step Maximum Edge)
    • 最大悬浮面积规则(Maximum Floating Area)

附注:布线修正(Search and Repair):自动搜索在详细布线中没有完全消除的DRC违例,并纠正错误

3、实验布线(Trial Routing):为了尽早了解设计的初步结果,其根据布局结果,建立实际的连接线路,但它不去仔细遵循物理设计规则

5 时钟树综合

1、时钟树综合(CTS,Clock Tree Synthesis)的目标:减小偏差,保证从时钟源到各个单元的时延是一致的,并且通过缓冲器来保证每个单元接收道德时钟信号强度是有效的。因为过长的互连线会使得接收的信号强度低于有效信号长度,可以通过在互连线中间加上类似于“泵”的标准单元,可以增强时钟信号,称为缓冲器(Buffer)

  • 偏差(Skew):同一时钟到达该时钟域内的不同寄存器之间的时间偏差
  • 在时钟树综合时,要权衡功耗和时钟偏差,选择合适的延迟
  • 时钟树综合从标准单元布局开始,先计算从时钟根节点到每一个叶节点的延时,再插入Buffer(或Inverter),减小并平衡所有叶节点的延时,使得它们之间的最大差值小于或等于最大偏差,同时还需要满足其他约束参数条件

2、时钟信号:由时钟周期(频率)、时钟延迟和时钟信号的不确定性组成

  • 时钟周期(Period):时钟从低电平到高电平,回到低电平直至下一个高电平上升前的时间
  • 时钟延迟(Latency):包括时钟源插入延迟和时钟网络插入延迟
    • 时钟源插入延迟(Clock Source):来自系统到当前模块时钟根节点之间的延迟
    • 时钟网络插入延迟(Clock Network):时钟树的延迟
  • 时钟信号的不确定性(Uncertainty):由于时钟发生器将电荷泵的信号传到VCO存在不稳定,即时钟信号存在抖动

3、标准设计约束SDC文件:规定到达同步寄存器的数据与时钟之间满足设计要求的一种时序关系。是系统工程师与逻辑设计、物理设计、验证设计的接口文件,决定了芯片最终的性能。主要包括:

  • 时钟定义:定义了时钟信号,create_clock、set_clock_latency、set_clock_uncertainty
    • 源头(Source):时钟的起点,一般为锁相环或专门的时钟处理模块的输出器
    • 周期(Period):时钟从低电平到高电平,回到低电平直到下一个高电平上升前的时间
    • 波形(Waveform):定义时钟的高电平时间,利用波形可以定义复杂的时钟
  • 输入延迟:数据到达输入端口的延迟,set_input_delay
  • 输出延迟:数据离开输出端口的延迟,set_output_delay
    • 输入延迟和输出延迟是模块之间的时序接口,也是芯片和板级设计之间的时序接口
    • 数据到达输入端口的延迟(set_input_delay)、数据离开输出端口的延迟(set_output_delay)、最大延迟(set_max_delay)、最小延迟(set_min_delay)
    • 在CPU时钟域内,数据总线是双向的,既要定义输入延迟,也要定义输出延迟

4、时钟树结构:

  • 时钟树:时钟信号在物理设计中的实现结果
  • 根节点(Root Pin):时钟信号的起点
  • 叶节点:时钟信号经过一系列分布节点最终到达寄存器时钟输入端或其他时钟终点
  • 时钟树综合:时钟网络从根节点逐级插入驱动器(Buffer、Inverter),从而到达叶节点,按照芯片时钟网络的约束要求产生时钟树的过程。
  • 时钟树约束文件:可由SDC文件自动产生,定义了每一个将要综合的时钟树。主要定义内容:时钟根节点(root_iopin)、最大插入延迟(max_delay)、最小插入延迟(min_delay)、最大偏差(max_skew)、最大信号转换时间(max_transition)、时钟缓冲器单元(buffers)

5、一些时钟设计技术:

  • 同步电路:电路结构简单,具有较好的鲁棒性,验证简单,但封装电感和电源电阻会在同步时钟跳变的瞬间产生很大的噪声
  • 异步电路:电路不规则,速度快,功耗第低,将全局时钟变为多个局部时钟
  • 锁存器时钟树:数据在有效电平区间内传输,而不是在时钟边沿传输
  • 门控时钟:用一个控制信号控制时钟开启,模块工作时才打开时钟,从而通过降低触发器的总翻转率达到降低功耗的目的

参考文献

[1]Andrew B. Kahng, Jens Lienig, Igor L.Markov, 胡谨. 超大规模集成电路物理设计:从图分割到时序收敛,[M]北京:机械工业出版社,2014.06;

[2]李兴权, 芯片设计流程;

[3]陈春章,艾霞,王国雄. 数字集成电路物理设计,[M]北京:科学出版社,2008.08;


http://www.ppmy.cn/news/21544.html

相关文章

SpringBoot Log4j2日志

Log4j2日志 Spring Boot 默认使用 Logback 作为日志记录框架,常见的日志记录框架有 log4j、Logback、Log4j2。 其中 Log4j2 是建立在 Log4j 和 Logback 的基础上的增强版,性能最好,所以选用 Log4j2。 SLF4J 是对所有日志框架制定的一种规范、…

那些你必须知道的CMMI认证知识!

CMMI认证的概述 CMMI认证,即“能力成熟度模型集成(也有称为:软件能力成熟度集成模型)”,是专门针对软件企业的一个专项认证。CMMI认证是鉴定企业在开发流程化和质量管理上的国际通行标准,全球软件生产标准大…

一文了解websocket和socket(论点:概念、流程、区别)

文章目录概念WebsocketSocket通信流程WebsocketSocket区别🌞websocket和socket,字面意思的差别就是一个web,那么他俩之间到底有什么关系呢,以及区别是啥,接下来带大家详细了解一下 概念 Websocket 🍊Web…

面试官问 ,Mybatis SELECT 查询, 集合或者单个对象,如果数据库不存在数据,需要判空吗?

前言 于昨日下班时段,本人正在与生活作斗争,收到了金三银四一线作战小队成员紧急反应的战况问题。 不熟悉的或者是不知道怎么去看源码的看官,上车了。 正文 这面试题问的, 考察的是什么? ① mybatis框架的应用掌握情…

多位大厂专家鼎力推荐,44个微服务架构设计模式pdf,程序员福利

前言 本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。 本文不仅讨论了微服务架构的好处,还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。 谁应该阅读本文? 本文的重点是架构和开发&#…

【C++】C++入门 命名空间 及输入与输出

前言 C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助。 C补充C语言语法的不足,以及对C语言设计不合理的地方进行优化,比如&#x…

Python数塔dp -A

Python——动态规划——数塔dp -A n数塔dp -A 问题引入 【问题描述】 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点, 则经过的结点的数字之和最小是多少? 已经告诉你了,这是个…

筑基四层 —— 详解三子棋和扫雷

目录 一.修炼必备 二.三子棋详解 三.扫雷详解 四.三子棋和扫雷的完整代码 !!!恭喜你,成功突破至筑基四层!!! 一.修炼必备 1.入门必备:VS2019社区版,下载地址&#xff…