数字设计流程分析

核心流程概述:
这是一个典型的数字集成电路(IC)设计流程,从高层级的行为描述(RTL)开始,逐步将其转化为可制造的物理版图(GDSII)。每个阶段都以前一阶段的结果为基础,进行更接近物理实现的转换和优化。静态时序分析(STA) 作为验证时序性能的核心手段,贯穿整个流程,其分析的模型 越来越精确 (从不理想时钟到真实时钟,从无布线到真实布线)。


节点详解

1. RTL 约束 (SDC)

  • 工作内容:

    • RTL (Register Transfer Level): 使用硬件描述语言(如Verilog, VHDL)描述电路的功能行为。它定义了寄存器之间的数据传输和逻辑操作(组合逻辑),但不指定具体的门电路实现

    • 约束 (SDC - Synopsys Design Constraints): 定义芯片设计必须满足的目标和规则。这包括:

      • 时钟定义: 时钟源、频率、波形(周期、占空比)、不确定性(create_clockset_clock_uncertainty)。

      • 输入/输出延迟: 相对于时钟,信号到达输入端口或离开输出端口的时间约束(set_input_delayset_output_delay)。

      • 时序例外: 如多周期路径(set_multicycle_path)、虚假路径(set_false_path)、最大/最小延迟约束(set_max_delayset_min_delay)。

      • 工作条件: 工艺、电压、温度(PVT)组合,用于分析不同场景下的时序(set_operating_conditions)。

      • 驱动强度/负载电容: 输入端口驱动能力和输出端口负载电容的建模(set_driveset_load)。

    • 关键输出: 约束文件(.sdc)和RTL代码文件(.v.vhdl)。

  • 与前驱节点的联系: 这是流程的起点。RTL是设计的功能规范,SDC是设计的性能(时序)和物理(负载、驱动)规范。

  • STA在此节点的工作内容: 通常不进行STA。 此时只有功能描述和约束,没有具体的门级电路实现,无法进行有意义的时序分析。STA工具需要门级网表才能工作。

2. 逻辑设计 / 综合 (Synthesis)

  • 工作内容:

    • 综合: 使用综合工具(如Design Compiler, Genus)将RTL描述SDC约束作为输入,映射到目标工艺库(.lib - 包含标准单元/门电路的时序、功耗、面积信息)中的具体门级电路(标准单元如AND, OR, Flip-Flop等)。这是一个自动化的转换过程。

    • 逻辑优化: 在满足SDC时序约束的前提下,综合工具对生成的初步门级网表进行优化,目标通常是:

      • 时序优化: 减少关键路径延迟(插入缓冲器、调整单元尺寸、逻辑重组)。

      • 面积优化: 减少使用的门电路数量。

      • 功耗优化: 降低动态和静态功耗(选低功耗单元、门控时钟插入)。

    • 关键输入: RTL文件(.v.vhdl), SDC约束文件(.sdc), 工艺库文件(.lib)。

    • 关键输出: 门级网表(.v - 描述电路由哪些具体门电路(来自工艺库)组成以及它们之间的连接关系。这是未优化的初步网表。同时会生成初步的时序报告。

  • 与前驱节点的联系: 直接依赖RTL(功能)和SDC(约束)生成初步的物理实现(门级网表)。这是第一次将抽象描述转化为具体电路。

  • STA在此节点的工作内容:

    • 分析对象: 综合后生成的门级网表

    • 模型假设:

      • 理想时钟树: 假设时钟信号瞬间同时到达所有寄存器时钟端(set_ideal_network)。零时钟偏斜(Skew)和零时钟延迟(Latency)。

      • 没有布线: 假设单元之间的互连线没有电阻、电容(RC)寄生效应,即连线延迟为零。使用线负载模型(Wire Load Model, WLM)或简单的单位负载电容(set_wire_load_modelset_load)来粗略估算连线延迟。

    • 工作内容: 计算所有寄存器到寄存器路径(Reg-to-Reg)、输入端口到寄存器路径(Input-to-Reg)、寄存器到输出端口路径(Reg-to-Output)、输入端口到输出端口路径(Input-to-Output)的建立时间(Setup) 和保持时间(Hold) 是否满足SDC约束。

    • 目的: 验证综合后的逻辑结构在理想互联和理想时钟条件下是否能满足时序要求。识别关键路径,指导综合工具进行优化。这是第一次正式的时序签核点(Sign-off),目标是清除所有Setup违例(Hold违例通常在物理设计阶段更容易修复)。

    • 输出: 详细的时序报告(.rpt), 标注违例路径。

3. 物理实现:布局 (Placement)

  • 工作内容:

    • 布局: 使用布局工具(如ICC2, Innovus)将综合后的门级网表中的标准单元、宏单元(如RAM, PLL)放置在芯片版图(Die)上的具体物理位置。也可以说是决定每个标准单元在芯片版图上的具体物理位置

    • 目标:

      • 最小化布线拥塞: 避免走线过于集中导致无法完成布线。

      • 优化时序: 将时序关键路径上的单元放得近一些,减少连线长度(从而减少延迟)。

      • 优化功耗: 考虑电源网络和信号翻转。

      • 满足物理规则: 满足单元间距、布局密度等制造规则(Design Rules)。

    • 关键输入: 综合后的门级网表(.v), SDC约束(.sdc), 工艺信息文件(.tf.lef - 包含物理层规则、单元抽象形状)。

    • 关键输出: 布局后的门级网表(.v + 布局信息文件(.def.oa - 记录每个单元、端口、宏的具体坐标位置。网表本身结构未变,但增加了物理位置信息。此时网表是优化过的(经过综合优化)。

  • 与前驱节点的联系: 基于综合优化后的网表和SDC约束,给电路元件赋予物理位置。布局的好坏直接影响后续布线的可行性和时序性能。

  • STA在此节点的工作内容:

    • 分析对象: 布局后的门级网表 + 布局位置信息

    • 模型假设:

      • 理想时钟树: 仍然假设时钟是理想的(未构建真实的时钟树)。

      • 估算的布线: 不再假设连线延迟为零! 布局工具会根据单元间的物理距离,利用更精确的线负载模型虚拟布线(Global Route) 来估算连线长度和RC寄生参数,从而估算连线延迟(比综合阶段的WLM估算更准确)。

    • 工作内容: 再次进行STA,计算路径延迟。此时延迟包括:

      • 单元延迟: 由单元类型、输入转换时间(Slew)、输出负载决定(查.lib表)。

      • 估算的连线延迟: 基于物理距离和模型估算。

    • 目的: 在考虑物理位置影响(距离导致连线延迟)后,评估时序是否仍然满足约束。识别因布局导致的新时序问题(如长连线引入的延迟)。指导布局工具进行优化(调整关键单元位置)。清除Setup违例仍然是重点。

    • 输出: 更新的时序报告。

4. 物理实现:时钟树综合 (Clock Tree Synthesis - CTS)

  • 工作内容:

    • 时钟树综合: 使用CTS工具(通常是布局布线工具的一部分)构建真实的时钟分布网络。在布局确定的单元位置上,插入缓冲器(Clock Buffer)和反相器(有时),形成树状结构(H-tree, X-tree等),将时钟源(Clock Source)的信号分发到所有需要时钟的寄存器(Clock Sink)。

    • 目标:

      • 最小化时钟偏斜(Skew): 使时钟信号尽可能同时到达所有寄存器时钟端。

      • 控制时钟延迟(Latency): 平衡从源到各寄存器的总延迟。

      • 满足时钟转换时间(Slew)要求: 保证时钟信号边沿陡峭。

      • 优化功耗和面积: 使用合适的缓冲器,避免过度插入。

    • 关键输入: 布局后的门级网表(.v)和布局信息(.def), SDC约束(.sdc - 尤其是时钟定义和不确定性), 时钟树约束文件(.ctstch - 定义目标Skew/Latency/Slew, 缓冲器类型等)。

    • 关键输出: 插入时钟树后的门级网表(.v + 更新的布局信息(.def)。网表结构发生重大变化(新增了大量时钟缓冲器)。

  • 与前驱节点的联系: 基于布局完成后的物理位置,构建实际的时钟网络。这是第一次引入真实的时钟传播延迟和偏斜

  • STA在此节点的工作内容:

    • 分析对象: 插入真实时钟树后的门级网表 + 布局信息

    • 模型假设:

      • 真实时钟树: 不再假设理想时钟! 使用CTS工具计算出的每个寄存器的实际时钟到达时间(Arrival Time),考虑了时钟路径上的缓冲器延迟和连线延迟。时钟偏斜(Skew)成为关键因素。

      • 估算的布线: 时钟网络的布线通常是实际完成的(或高精度估算),但数据路径的布线仍使用布局阶段的估算(虚拟布线/全局布线)

    • 工作内容: 进行极其重要的STA。计算路径延迟时:

      • 数据路径延迟:单元延迟 + 估算的连线延迟

      • 时钟路径延迟:真实的时钟树延迟(包括缓冲器和连线)。

    • 目的: 评估在真实时钟树(存在Skew和Latency)和估算的数据路径连线条件下,时序(Setup/Hold)是否满足约束。重点检查Hold时间违例,因为时钟树插入缓冲器会增加延迟,容易导致Hold违例(数据太快到达)。Setup时间也需要重新验证。指导CTS工具优化(调整缓冲器位置/类型)。这是关键的时序签核点。

    • 输出: 包含真实时钟树信息的详细时序报告,尤其关注Hold违例。

5. 物理实现:绕线 (Routing)

  • 工作内容:

    • 绕线: 使用布线工具(同布局布线工具)根据布局位置和单元连接关系(网表),在芯片版图的多层金属层上实际绘制连接各单元端口(Pin)的金属导线(Wire)

    • 步骤:

      • 全局布线 (Global Routing): 将整个版图划分成网格(G-Cell),规划每条线网(Net)通过哪些网格区域,避免拥塞。不画实际导线。

      • 详细布线 (Detailed Routing): 在全局布线的指导下,在指定的金属层和轨道(Track)上实际绘制每条导线的几何形状(Width, Spacing),并插入必要的通孔(Via)连接不同层。

    • 目标:

      • 100%布通率: 连接所有需要连接的端口。

      • 满足设计规则: 导线宽度、间距、通孔规则等(DRC - Design Rule Checking)。

      • 优化时序: 优先缩短关键路径的连线长度或使用更高层金属(电阻更小)。

      • 优化信号完整性: 减少串扰(Crosstalk)和噪声(Noise)。

      • 优化功耗和面积。

    • 关键输入: CTS后的门级网表(.v)和布局信息(.def), SDC约束(.sdc), 工艺信息(.tf.lef)。

    • 关键输出:

      • 全局布线后: 门级网表(结构不变) + 布线拥塞和预估RC信息

      • 详细布线后: 门级网表(结构不变) + 完整的版图几何信息(通常用GDSII格式 .gds 存储)+ 包含精确寄生参数(RC)的网表文件.spef - Standard Parasitic Exchange Format)。

  • 与前驱节点的联系: 基于CTS完成后的网表和布局位置,用真实的金属线连接所有单元。这是物理实现的最后一步,引入了最精确的连线RC寄生参数。

  • STA在此节点的工作内容:

    • 全局布线后STA:

      • 分析对象: 全局布线后的信息(估算的连线长度/拥塞)。

      • 模型假设: 真实时钟树 + 更精确的估算布线RC(基于全局布线路径)。

      • 目的: 在更精确的连线RC估算下,快速检查是否存在重大时序问题(特别是Setup),防止在详细布线完成后才发现无法修复的问题。指导详细布线优先处理关键路径。

    • 详细布线后STA:

      • 分析对象: 详细布线后的门级网表 + 精确的寄生RC参数(.spef

      • 模型假设:

        • 真实时钟树: 使用CTS结果。

        • 真实布线: 不再使用估算! 使用从版图提取的精确互连线电阻(R)和电容(C)值(.spef文件)来计算真实的连线延迟

        • 优化过的网表: 最终网表结构。

      • 工作内容: 进行最终的、最精确的STA。计算路径延迟:

        • 单元延迟:查.lib表(考虑输入Slew,输出负载 - 负载由真实布线电容决定)。

        • 连线延迟:由精确的RC寄生参数(.spef)计算。

        • 时钟路径延迟:真实时钟树延迟。

      • 目的: 最终签核(Sign-off)。验证在考虑了所有真实效应(真实时钟偏斜、真实连线RC寄生、单元负载)后,设计在所有指定工作条件下(PVT)是否满足Setup和Hold时间要求。这是交付制造前的最终确认。

      • 输出: 最终的、最详细的时序报告,作为签核依据。

6. 静态时序分析,包括噪声和串扰 (STA with Noise and Crosstalk)

  • 工作内容:

    • 这不是一个独立的设计步骤,而是在详细布线后STA的基础上进行的增强分析

    • 噪声 (Noise) / 串扰 (Crosstalk): 当相邻导线(Aggressor)上的信号跳变时,会通过耦合电容(Coupling Capacitance)干扰另一条导线(Victim)上的信号,导致Victim信号出现非预期的电压毛刺(Glitch)或延迟变化(Delta Delay)。

    • 分析内容:

      • 信号完整性 (Signal Integrity - SI) 分析: 检测Victim网络上是否因Aggressor的跳变产生了足够大的电压毛刺(Glitch),可能导致寄存器误采样(捕获错误数据)或组合逻辑产生错误输出。

      • 串扰引起的延迟变化 (Crosstalk Delta Delay): 检测Aggressor的跳变是否导致Victim路径的实际传播延迟显著增加(恶化Setup)或减少(恶化Hold)。

    • 关键输入: 详细布线后的门级网表(.v), 精确寄生RC参数(.spef - 包含耦合电容信息), SDC约束(.sdc), 单元噪声特性(通常在.lib中)。

  • 与前驱节点的联系: 完全依赖于详细布线后产生的精确寄生参数文件(.spef),该文件包含了导线间耦合电容的信息,这是分析噪声和串扰的基础。

  • STA在此节点的工作内容:

    • 在详细布线后STA流程中集成SI分析:

      • 读取包含耦合电容的.spef文件。

      • 识别潜在的Aggressor-Victim网络对。

      • 模拟Aggressor跳变时对Victim的影响:

        • 计算毛刺高度(Glitch Height)和宽度(Glitch Width),判断是否超过Victim接收单元(寄存器或门)的噪声容限(Noise Immunity)。

        • 计算Victim路径延迟的变化量(Delta Delay)。

      • 将计算出的Delta Delay反标(Back-annotate)到相应的路径延迟上。

      • 使用更新后的路径延迟(原延迟 +/- Delta Delay)重新进行STA,检查是否引入新的Setup/Hold违例。

      • 检查毛刺是否可能导致功能错误。

    • 目的: 确保设计在真实的物理环境下(导线紧密相邻),不仅满足基本的时序要求(Setup/Hold),还能抵抗信号完整性问题(噪声、串扰)带来的影响,保证功能的正确性和可靠性。这是最终签核的重要组成部分。

    • 输出: 包含噪声/串扰分析结果的增强型时序和信号完整性报告。


总结与流程递进关系

  1. 起点: RTL (功能) + SDC (约束)。

  2. 逻辑实现: 综合将RTL+SDC转换为初步门级网表(理想互联/时钟STA)。

  3. 物理位置: 布局赋予门位置(引入估算连线延迟,理想时钟STA)。

  4. 时钟网络: CTS构建真实时钟树(引入真实时钟延迟/Skew,估算数据连线STA,重点Hold)。

  5. 物理连接:

    • 全局布线规划路径(更精确估算连线STA)。

    • 详细布线绘制真实导线(提取精确RC寄生,真实互联+真实时钟STA)。

  6. 最终验证: 在精确RC和真实时钟基础上,加入噪声/串扰分析(最终签核STA/SI)。

每个节点都以前一节点的输出作为核心输入,并在其基础上增加更精确的物理信息(位置->时钟树->真实连线->精确寄生)或进行结构优化(综合优化->CTS插入缓冲器)。STA模型也随之演进,从不考虑物理效应(理想),到逐步加入估算效应(布局估算),最终使用真实效应(CTS时钟、布线RC、耦合电容)进行最精确的签核分析。 门级网表本身也经历了从初步结构->优化结构->增加时钟树结构的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值