22

LJgibbs · 9月10日 · 北京

DDR 学习时间 (Part A - 5):DDR IP 硬化 - 概览和建议

本期我们学习一篇关于 DDR IP 硬化(Hardening)的文章,讲述了在 DDR IP 后端实现中的一些建议。笔者在 AI 翻译的基础上对译文进行修正润色,并添加了部分个人见解。

原文链接:DDR IP Hardening - Overview & Advance Tips

申明:本文可能含有一些 AI 辅助创作。

作者: Maulik Patel, Darshan Bhuva and Pooja Bhadaniy from eInfochips

什么是 DDR?

正如其名,双倍数据速率(DDR)是一种在时钟信号的上升沿和下降沿都传输数据的内存,通过双边沿传输在不增加时钟频率的情况下将数据速率翻倍。它使用 PLL(锁相环)和自校准电路来达到所需的时序精度。

DDR 是系统级芯片(SoC)最关键的 IP 之一,因为 SoC 中的处理器大部分时钟周期都在读写 DDR 内存。自校准逻辑精确测量 DDR 时钟和系统时钟之间的延迟和相位差异,并将 DDR 数据捕获与时序窗口对齐。时序校准逻辑还保持 DDR 内存在系统运行期间温度和供电电压波动时的性能。

DDR 实现的复杂性:

深亚微米 SoC 设计集成了在超过 1GHz 时钟速率下运行的 DDR 内存子系统,高速时钟导致读写时序裕量以皮秒为计。这使设计师担心 DDR 内存系统的时序裕量由于工艺产生静态变化,以及其由于系统运行条件(如温度和电压)波动引起的动态变化,导致系统无法工作。

  1. DDR I/O 时序要求更严格,因为数据在时钟的两个边缘传输,所以有效数据持续时间只有半个周期。DDR 中的逻辑通常涉及正边沿触发的触发器、负边沿触发的触发器甚至锁存器。
  2. 随着数据速率的增加,与内存接口的时序和信号完整性相关的复杂性变得越来越困难。
  3. 对于 DDR 信号,随着频率的增加,单个比特的传输时间减少,导致由传输时间均分得到的 Setup 和 Hold 时序预算也随之减少。

DDR IP 硬化:

DDR 内存接口 IP 解决方案包括 DDR 控制器、PHY 与 IO 接口。本文所谓的 DDR 内存子系统,指的是控制和访问 DDR 内存的 SoC、 SoC 与 DDR 内存器件之间的接口和互连(通常也就是 PCB),以及 DDR SDRAM 器件本身。

译注:这里作者的 DDR 内存子系统包括 PCB 以及 DDR 器件本身,是宏观的概念。需要区别于 SoC 中狭义的 DDR 子系统,这往往只包括 DDR 控制器,DDR PHY,以及 SoC 访问 DDR 的接口(通常是 NoC)。

image.png

一些关键参数,如 DDR 模式、频率比和内存数据宽度,必须在 DDR PHY 和 DDR 控制器之间保持一致。

DDR PHY 模块概述

DDR PHY 实现分为内部模块化实现和顶层实现两种方式。一般来说 DDR PHY 有以下五类子模块。根据 DDR 配置的不同,这些模块的具体逻辑可以进行相应更改。

  • 数据控制模块:它控制数据读写操作。它将 DQ、以及相关的 DM 和 DQS 信号连接到 DRAM。可以复制多个数据模块,提供需要的 DRAM 接口数据宽度。
  • 地址控制模块:它生成 DRAM 控制信号,片选(CS)、地址选择(AS)和其他控制信号的数量可以根据需求配置。
  • 内存时钟模块:它为 DRAM 提供 DDR 时钟。
  • 地址控制主模块:是所有地址控制模块的主控制模块。
  • 加法器生成模块:用于生成需要通过加法计算得到的 DRAM 地址。(译注:加法器不是必须的,实际实现中一般尽量通过移位等运算生成 DRAM 地址)
  • PLL:DDR 顶层模块中包括两个 PLL,一个 PLL 生成 PHY 所需要的工作时钟(译注:PHY 时钟频率可能和 DDR IO 时钟相同,或者是 DDR IO 时钟的二分之一或者两倍 ),另一个 PLL 用于内存时钟模块生成提供给 DRAM 的 DDR IO 时钟。

image.png

DDR PHY 中主要负责保持 DQ-DQS 以及 CA-CLK 这两对时序关系,以满足 DDR 协议。具体来说,读写数据宏模块负责 DQ-DQS 时序关系。而控制地址-时钟(CA-CLK)时序关系则由控制地址-命令接口(control-address-command)负责。

具体来说,DQS 信号相对于信号 DQ 的相位取决于当前是读操作还是写操作。在读操作中, DRAM 发送的 DQS 信号边沿与 DQ 信号的边沿对齐,PHY 会将 DQS 相对于 DQ 相移 90 度,以 DQS 时钟边沿在 DQ 信号有效区间中心采样。(译注:这里对原文的说法有所修正)

而在写操作中 DQS 信号边沿与 DQ 有效信号中心对齐。如下图所示。

image.png

布局规划指南:

DDR 模块是否能够时序收敛,主要取决于布局规划。以下是一些需要在布局规划期间遵循的指南。

  • IO 驱动器的放置顺序应与数据和地址模块的引脚顺序相匹配。这样我们可以减少走线交叉并更好地对齐信号边沿,有助于满足 skew 需求。
  • 最好通过脚本来确保从模块到 IO 的信号使用相同的缓冲模型、高层金属层、NDR 进行缓冲。
  • 时钟引脚应该放置在 Floorplan 的中心,以平衡 DDR 模块顶层两侧的 skew。来自数据和地址模块的关键信号在放置时需要特别考量。
  • Bump 放置需要特别注意,以减少电阻并满足 PERC 和 ESD 要求。
  • 由于 DDR 时序约束非常复杂,最大延迟和偏斜相关约束可能不会包含在 PD 使用的 SDC 中。(译注:这里表达的意思可能是,最大延迟和 skew 相关约束不会放在 Synth,CTS 以及 PR 的 SDC 中,因为他们可能引入其他问题。而是由前端在后端实现完成后再进行 Special check)。相位检测逻辑、PLL 逻辑、时钟 MUX 需要在布局规划期间手动规划位置,因为工具可能没法进行准确的放置。在 DDR hardening 期间如果没有遵循这些指南,可能会导致严重的 Skew 不满足。
  • DDR 数据传输速率、DDR 协议、封装类型、P/G 比率、封装去耦电容和 PCB 去耦电容容值,决定了 DDR 模块整体的去耦要求。必须预先放置 IO 驱动器的去耦电容。(译注:因为去耦电容有指定的放置位置,一般位于 Die 边缘和 DDR 模块逻辑之间。)

放置指南:

  • DDR 连接 SoC 核心逻辑的端口,需要通过 Magnet placement 放到尽可能靠近其 SoC 逻辑的端口处,以减少数据延迟。
  • 数据和时钟偏斜信号、时钟 Mux 和相位检测逻辑、IO 驱动器及其驱动逻辑在优化期间应保持不变,并且应手动放置。

顶层时钟和偏斜平衡指南:

以下是时钟平衡要求:

  • 保持 DDR IO 时钟与 DDR PHY 时钟之间的相位差异尽可能小。
  • 保证在 DDR 器件上的数据信号、控制信号和地址信号的 Setup 和 Hold 时序符合要求。
  • 保持所有时钟的占空比在整个时钟路径上不会出现变化,检查所有时钟路径上的占空比,以防止畸变。
  • 从时钟端口到模块内部的输入端口采样触发器和输出端口驱动触发器的信号应彼此平衡。
  • 在硬化 DDR 顶层下的子模块时,尽可能确保他们的触发器时钟的插入延迟(insertion delay)尽可能小。
  • 在硬化模块之后,在顶层构建 CTS (时钟数) 时,我们需要考虑子模块内的时钟网络延迟,并尝试使整个 DDR 顶层下每个触发器的偏斜值或多或少保持一致。
  • 在构建时钟树时,我们从功能时钟或者扫描时钟输入端口开始,先构建公共时钟到第一级时钟扇出引脚的时钟树,然后再从时钟逻辑输出构建时钟树到所有模块。
  • 为了避免任何额外的时钟延迟,我们将 PHY 时钟 PLL 放置在顶层的中心区域,并将 DDR IO 时钟 PLL 放置在靠近 DRAM 时钟生成模块的位置。此外,保证每个 PLL 相关的时钟逻辑放置在其附近。
  • 由于 DDR 模块的数据频率要求很高,我们使用了具有对称上升和下降延迟的高驱动器反相器,手动构建了 高层金属层的时钟树,应用了 NDR,并在需要的地方使用了屏蔽(shielding)以避免串扰(Cross talk)。
  • 注意以下对于从子模块到 IO 信号的偏斜要求:
  1. 以几乎相同的长度和电阻布线,以实现相等的延迟。
  2. 宏单元到 IO 的距离应最小。
  3. 使用 NDR、屏蔽、高层金属层进行布线。
  4. 在这些信号路径上添加相等数量的缓冲器。

image.png

偏斜相关标准库单元的建模:

在 IP 中有许多层次化标准库单元,他们的之间的信号线长度需要最小化,对于这些层次化单元,我们可以将这些单元与电源和信号布线一起硬化在宏结构中,并将其作为设计中的宏模块使用,以最小化其中的走线长度。我们可以从网表(netlist)中提取模型。

我们为什么要建模宏单元?

  • 解决放置和布线的一致性问题。
  • 确保 Master 和 Slave 模块行为的一致性。
  • 实现各个宏模块间的延迟一致性。

库单元延迟变化影响偏斜:

在多个工艺角(Corner)平衡偏斜/数据路径是一项艰巨的任务,因为在先进技术节点中,单元的延迟在各工艺角的变化对偏斜有非常大的影响。另外,DDR IO 存在多组包含多条 2000um 长的数据线,需要保持同组内的数据线有几乎相同偏斜值,使这项工作更加困难。在解决具体时序违例问题之前,我们需要首先理解一些重要的 Case。

1. VT 在 SS/FF 之间的变化

我们看到在多个 VT 之间,SS/FF 之间的延迟变化比率发生了巨大变化。这是一个 bufx2 的例子:

image.png

2. Setup/Hold 关键路径和延迟缓冲器

DDR 有非常复杂的时钟约束。在许多情况下,单个寄存器在功能模式下存在多个输入时钟(通过 MUX 切换)。这些时钟之间存在有意或者无意导致的相位偏移。这可能导致一部分时钟的时序路径存在 Setup/Hold 违例。这种情况可以首先通过在 MUX 端口平衡时钟来解决,然后通过增加单元尺寸,或者替换 VT 单元,来降低数据路径延迟,以便减小对 Setup 时序的影响。Hold 时序可能仍然违规,但 Hold 可以减小最小裕量要求得到修复。

(译注:没有完全明白原文这里为什么可以通过减少最小 slack 来修复 Hold 违例)。

在(数据通路上)插入更多 Delay Buffer 解决 Hold 可能不是明智的决定,因为 SS 和 FF 之间存在更大的延迟差异,比如在 FF 下用于解决 Hold 问题的 Delay Buffer 会导致 SS 下的 Setup 违例。

这里是一个 delay-bufx2 和 bufx2 的例子:

image.png

3. CK-缓冲器 x2-x4 在 SS/FF 之间的变化

在某些偏斜非常紧张的情况下,可能不能通过增加 CK-缓冲器的尺寸解决时序问题。我们观察到,通过在 SS 和 FF 之间增加尺寸或减小尺寸,相同单元在尺寸不同的情况下存在延迟变化。

以 ck-buf x2 和 ck-buf x4 为例:

image.png

4. CK-缓冲器和 CK-反相器在 SS/FF 之间的变化

我们可能会通过增加时钟缓冲器来平衡偏斜,但由于高频率 DDR 时钟窗口如此之小,SS 和 FF 中的延迟变化可能会使插入的时钟缓冲器在一个工艺角修复偏斜,但在另一个工艺角恶化偏斜。

让我们来看看这些变化:

image.png

IR 和 EM 收敛:

因为 DDR 需要遵循严格的偏斜平衡指南,因此可能会在数据和时钟路径中使用超大尺寸的 x12 或 x16 单元,所以设计中容易发生 IR 和 EM 违例。

EM 修复需要非常小心地进行,因为时序路径的微小变化可能会直接影响偏斜。我们可以通过在布局布线阶段为这些关键信号线应用双倍宽度来预防这种情况。

IR 问题可以通过在布局布线阶段中,为时钟单元和相位生成(phase generator)模块、大驱动器周围添加两侧去耦来处理。

参考文献:

  1. 实用设计和可配置 DDR2 PHY 的实现 By Lior Amarilio, ChipX
  2. http://www.latticesemi.com/view_document?document_id=9187
  3. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=3A728921C170B999834F9E5760C8B639?doi=10.1.1.84.4088&rep=rep1&type=pdf
  4. http://www.ijeert.org/pdf/v2-i6/8.pdf
  5. https://www.design-reuse.com/articles/20146/ddr-sdram-controller-ip.html
  6. https://www.synopsys.com/designware-ip/technical-bulletin/ddr-hardening-demystified.html

作者:

  • Maulik Patel - Maulik 在移动 CPU、无线 SoC、DDR-IP、网络 SoC、蓝牙的 ASIC 实现方面拥有经验。他为高通、博通、赛普拉斯、新思科技和 Juniper 网络完成了多次流片。Maulik 目前在 eInfochips (Arrow 公司旗下) 担任 16nm ASIC 设计的技术领导 。他的主要兴趣在于低功耗实现、高频设计的时钟树综合和 IP 硬化。
  • Darshan Bhuva - Darshan 在 eInfochips (Arrow 公司旗下) 担任物理设计工程师已有 3 年时间。他在 lower geometry 实现方面拥有一定经验。他在 IP 硬化和网络 ASIC 方面拥有经验。
  • Pooja Bhadaniya - Pooja 在 eInfochips (Arrow 公司旗下) 的物理设计领域工作,拥有 2.5 年以上的经验。她在 IP 硬化和网络 SoC 方面完成了多次流片。

如果您希望下载这篇白皮书的副本,请点击这里

作者:LogicJitterGibbs
来源:知乎

相关文章推荐

更多FPGA干货请关注FPGA的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10613
内容数
577
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息