DDRPHY数字IC后端设计实现系列专题

在对 LPDDR3 物理层接口模块进行后端设计之前,需要对该模块的功能结 构以及后端物理设计流程的相关理论进行深入的分析和研究。本章第一节详细分 析了本次 LPDDR3 物理层接口模块的结构,为该模块的布图布局的合理规划奠 定了理论基础,并且分析了 DDR PHY 的读写通路路径,结合该模块前端设计的 时序要求,加强对后端时序分析的理解。本章第二节分析了整个后端设计流程理论,后续章节后端详细设计提供理论基础。

2.1 LPDDR3 物理层接口模块理论

为了能够更好实现 LPDDR3 物理层接口模块,我们需要对该模块的功能结 构有一个深入的认知。掌握该模块内 IP 、IO、Memory 之间的数据流向,能更好 实现设计的收敛。另外 DDR 具有特殊的读写信号要求,对后端设计提出了更多的挑战,需要把rise和fall都做balance。本节将主要介绍和分析 LPDDR3 PHY 的结构和读写通路。

2.1.1 LPDDR3 物理层接口模块的结构

本次课题实现的模块包括DDR PHY 及内存控制器(memory controller,MC), 该模块作为整个芯片的物理层接口,最大数据传输速率为 1866Mb/s 。

DDR PHY 是存储颗粒和存储控制器的连接部分,在本次设计中主要包括以下部分:4 个 Data PHY ( DDRPHYDATX8 ,DATX8 ), 主要负责数据的串并转换; 1 个 Address/Command PHY(DDRPHYAC,AC),主要负责地址信号的转换;195 个 SSTL(Series Stub Terminated Logic 短截线串联端接逻辑[34])IO,与存储颗粒进 行交互的输入输出端口;3 个 PLL,主要负责时钟频率转换;1 个物理层接口通 用模块(PHY Utility Block,PUB),主要负责为 PHY 支持生产测试,以及为 PHY 提供 DFI 接口。其中 DATX8,AC,SSTLIO,PLL 模块为硬核 IP,PUB 和 memory controller 为软核 IP。图 2.1 为内存控制器与 DDR PHY 的结构连接图。
图2.1 DDR结构图
图2.1 DDR结构图

由图 2.1 可以看到,数据总线接口被设计成多个字节通道,一个数据字节通 道(Data Byte Lanes)包括一个 Data PHY ,一个 PLL 和相关的 SSTLIO;一个地 址命令字节通道(Address Command Lanes)包括一个 Address/Command PHY , 一个 PLL 和相关的 SSTLIO。值得注意的是,在本次设计中两个数据字节通道共 用一个 PLL。将数据信号分割成离散的数据通道,有如下两个优点:

1)有利于减小 pin 与 pin 之间的时钟偏移

2)有利于匹配 SDRAM 引脚

DDRPHY Innovus版图布局

除了数据传输通道,DDR PHY 还需要有一个地址命令通道来与外部的内存 进行控制信号与地址信号的传输,命令通道也是通过 PHY 内部的拼接来实现连 接的,一个 DDR PHY 一般有 1 到 9 条字节通道和一条命令通道。本次 LPDDR3 物理层接口模块采用了 4 条字节通道和一条命令通道,并且该模块采用的是 Synopsys 的 IP,在 floorplan 阶段需要遵守 Synopsys 的 DDR PHY Implementation Guide,该部分内容将在第三章中详细分析。

2.2 DDR 物理层接口读写通路的分析

DDR 主要包括以下信号:时钟信号,数据信号(Data Signal,DQ),数据选 通信号(Data Strobe Signal ,DQS),数据掩模信号,地址信号,控制信号等。这 里主要根据时钟信号,数据选通信号,数据信号来分析 DDR 的读写通路。

数据选通信号的主要作用是在一个时钟周期内准确区分出每个传输周期来 接受数据[35] 。DQS 信号是一个双向信号,写入和读取数据时,分别接收和发送 数据选通信号。

在执行读操作时,DDR SDRAM 同时发送 DQ 信号与 DQS 信号,两者边沿 对齐。但是在接收的时候,却不能以 DQS 的上下沿来进行读取数据信号。因为芯片读取 DDR SDRAM 的数据时是预取,所以难以对 DQS 的上下沿进行同步。 因此为了能够保证同步接收,接收方将 DQS 信号延迟为 DQSD 信号,使 DQSD 信号的边沿作为数据周期的选取分割点。这样 DQS 信号的上下沿总能在数据 DQ 信号的逻辑电平稳定的周期内,保证数据接收触发的高准确性。读操作数据选通 脉冲与数据关系图 2.2 所示:

在这里插入图片描述

图 2.2 读操作 DQS 与 DQ 信号关系图

在执行写操作时,DQ 信号的周期分割点为 DQS 信号电平的中部,但仍在 DQS 信号的上下沿作为数据接受的触发沿[35]。写操作时数据选通脉冲与数据信 号的关系如图 2.3 所示。由读写通路分析知,DDR 物理层接口模块对DQS 和 DQ 信号的路径对齐有着较高的要求。
在这里插入图片描述

图 2.3 写操作 DQS 与 DQ 信号关系图

2.3 数字后端设计流程

随着芯片设计能力的不断提高,EDA 工具的更新换代,芯片后端设计流程 也不断的进步与发展。高度自动化的后端设计, 减少了手工操作带来的误差,也 缩短了设计的开发周期。本小节将主要讨论后端设计的主要流程。

在这里插入图片描述

2.3.1 数字后端物理设计相关文件

(A)门级网表

门级网表 netlist 是 RTL 综合后的设计网表,网表中有所有逻辑单元的类型 和连接信息。后端设计就是从 netlist 到 GDS 版图数据的工作。

(B)设计约束文件

设计约束文件 sdc 由前端综合所产生,是芯片的时序,功耗和面积约束的集 合,其中包括对时钟,延时,输入输出驱动等的定义。

(C)时序库文件

时序库 lib 文件中包含了逻辑单元的时序,功耗和面积信息。前部分主要是 对库名称,库单元 PVT,电压电容等的定义,后部分主要包括库中逻辑单元的功 耗,传输时间,转换时间等信息。

(D)物理库文件

物理库 lef 文件定义了各逻辑单元的单元尺寸,结构,pin 位置,金属层信 息,通孔信息以及单元信号,电源和地的连线信息以及电迁移和天线效应的规则信息。

(E)寄生电阻电容参数提取模型文件

寄生电阻电容参数提取模型文件 spef 包含了精确的寄生参数信息,保证时 序分析和计算的准确性。

2.3.2 标准单元的布局

布局(Placement)阶段主要进行标准单元(Standard cell)的布局和优化,布 局的质量对芯片的时序,功耗和布通性有着重要影响。

布局阶段除了对 place 标准单元外,还将自动摆放 Scan cell ,Spare cell ,Tie cell ,Filler cell 等。一个单元的布局状态主要分为以下几种:

Unplaced:该单元未被摆放。

Placed:该单元已被摆放,并能被移动。

Fixed:该单元已被摆放,并且不能被移动,只能调尺寸。

Legalize_Only:该单元已被摆放,只能在合理化布局阶段移动。

2.3.3 时钟树综合

(一)基本概念

(A)时钟树级数 由图 2.5 可知:

root pin:时钟根节点,由 create_clock 命令定义; sink pin:时钟最后到达的寄存器的 ck 端;

leaf net:时钟最后到达寄存器和前一级单元之间的net; trunk net:除去 leaf net 后的所有的线

(B)时序路径端口类型

时钟树的端口的类型主要包括 Sink Pin ,Ignore Pin 及 Through Pin。

Sink Pin:该类型端口主要指有时序信息的叶子单元时钟端口,如触发器的 CK 端;

Ignore Pin:如非时钟树网络的组合逻辑和无时钟信息的时序单元时钟端会 被设为 Ignore Pin,时钟树综合不会对该端口进行时序优化,但会进行 DRC 修复 和优化。

Through Pin:一般是在非叶子单元的节点处,时序弧将穿过 through pin,到 达时钟树 Sink 端。

在这里插入图片描述

图 2.5 时钟树级数
(二)时序分析基本理论

(A)时钟延滞 Clock Latency

时钟延滞或者叫插入延迟(insertion delay),即时钟源(clock source)到时 钟汇点(clock sink)的延迟时间。主要包括两个部分,时钟源插入延迟(source latency)和时钟网络延迟(network latency)[36]。source latency:时钟源点到时钟 定义点的延迟,即时钟源到当前芯片时钟根节点(clock root pin)之间的延迟[37] 。 network latency:指从时钟定义点到时钟汇点的延迟。在时钟树综合阶段,我们 通过设置时钟延滞来影响时钟偏斜的计算。一般希望能有较小的时钟延滞,时钟 延滞过大,时钟网络中需要插入更多反相器和缓冲器用来满足时钟平衡,这会增 加芯片的面积和功耗,而且时钟延滞值过大更容易受到片上误差的影响。时钟源 延迟和网络延迟如图 2.6 所示:

在这里插入图片描述

图 2.6 时钟源延迟和网络延迟
(B)时钟偏斜 clockskew

时钟偏斜或叫时钟偏差,指同一时钟信号到不同寄存器的时间差值, skew=max(|ta-tb|),ta 和 tb 分别指时钟源点到时钟汇点 FF1 CK 端和 FF2 CK 端 的时间。根据时钟信号与数据信号的流向的关系, 可以分为 positive skew 时钟— —与数据信号在相同的方向,negetive skew 时钟信号——与数据信号方向不同。 另外根据时钟域及路径关系,时钟偏斜可以分为全局偏斜 global skew 和局部偏 斜 local skew 。Global skew 是指同一时钟域内任意两个路径的最大的 skew , 时 钟树综合时工具更加考虑的是 global skew,尽可能降低 global skew;local skew 是指同一时钟域内,有逻辑关系的路径之间的最大时钟偏斜,在分析时序的时候, 主要关注 local skew。时钟偏斜示意图如图 2.7 所示:

在这里插入图片描述

图 2.7 时钟偏斜
(C)有用偏斜 useful skew

有用偏斜或叫有用偏差。随着时钟树综合技术的发展, 可以利用某些偏斜来 优化电路性能,解决部分时序违例,这些偏差被称为有用偏差[38]。如图 2.8 所示, D2 路径原本不满足建立时间的要求,通过借用前一级路径的余量,来使前路径 满足建立时间的时序要求。这个方法可能会对其他路径的时序造成影响, 也可能 会引起保持时间的违例,所以需要保证其他路径有足够的时间余量。在实际的后 端实现项目中,不建议优先选择有用偏斜来修复时序问题。

在这里插入图片描述

图 2.8 useful skew

(D)时钟转换时间 clock transition time

时钟转换时间也称为 clock slew。通常指电压从 10%上升到90%需要的时间, 或者是从 90%下降到 10%需要的时间。如图 2.9 所示:

在这里插入图片描述

图 2.9 时钟转换时间transition
在时钟树综合阶段,一般会设定一个最大的 transition 值来控制各路径单元 的转换时间,该值太大容易造成时钟树综合后的转换时间过大,引起过多时序违 例,该值过小可能会导致时钟树综合时在时钟路径上上插入过多的缓冲器和反相 器,从而影响到偏差平衡及面积和功耗。另外为了保证时钟路径上的上升和下降 转换时间对称,标准单元库会提供 CLK 类型的缓冲器和反相器。

(E)时钟不确定性 clock uncertainty

时钟不确定性是指时钟信号可能过早或者过晚到达时序单元时钟端的时间 [39],通过设置该值来降低时钟抖动对时序的影响。建立时间检查:clock uncertainty 代表降低时钟的有效周期;保持时间检查:clock uncertainty 表示额外需要的余 量。

(F)片上误差分析

分析模式三个要素包括工艺(process ,P)、电压(voltage ,V)和温度 (temperature,T)。在工艺库中 PVT 是一个点,但在实际芯片中,由于工艺制造 的误差,PVT 会出现在一个范围内。这样就导致在该范围中, 不同位置的单元的 PVT 可能存在差异,这个时候就需要利用片上误差(on chipvariation ,OCV)模 式进行时序分析。OCV 是一种更加严格的时序分析模式,其检查方式如下:

建立时间检查: 发射时钟路径(launch Clock path) ,数据路径(Datapath)使 用最晚路径延迟,捕获时钟路径(Capture Clock path)使用最早路径延迟。

保持时间检查:发射时钟路径,数据路径使用最早路径延迟,捕获时钟路径 使用最晚路径延迟。

在 OCV 检查模式下,可以通过对 set_timing_derate 的-late 和-early 来时设置 时序增减因子。例如:

建立时间检查

Datapath:set_timing_derate -late 1.1

Capture Clock path:set_timing_derate -early 0.9

保持时间检查

Datapath:set_timing_derate -early 0.9

launch Clock path:set_timing_derate -late 1.1

则在 OCV 模式下,其建立时间和保持时间的检查公式分别如下:

Tsetup < Tcapture−early + Tcycle − Tlaunch−early − Tdata−max−early (2-1)

Thold < Tlaunch−early + Tdata−min−early − Tcapture−late (2-2)

其中,Tsetup 建立时间,Tcapture-early 表示捕获时钟路径延时乘以-early 值,Tcycle 表示周期,Tlaunch-late 表示发射路径延时乘以-late 值,Tdata-max-late 表示最大数据路 径延时乘以-late 值;Thold 表保持时间,Tlaunch-early 表示发射路径延时乘以以-early 值,Tdata-min-early 表示最小数据路径延时乘以-early 值,Tcapture-late 表示捕获时钟路 径延时乘以-late 值。

从上面的分析中,当在建立时间分析时,在 launch clock path 上乘以-late 的 时序因子,在 capture clock path 上乘以-early 的时序因子,这会导致 OCV 在时钟 共同路径上处理相对悲观,为了消除这种悲观,时序分析中中引入了共同路径悲 观消除(Clock Path Pessimism Removal ,CPPR),该技术会将时钟共同路径上的 timing derate 差值补偿。

为什么做CTS时,每个clock的common path要尽量长?应该如何理解呢?
1 赞同 · 1 评论回答

随着工艺的进步,我们发现 OCV 模式中给数据或时钟路径上设定单一的 timing derate 值,过于悲观,导致时序也难以收敛。既然 OCV 是片上误差,代表 一条路径上的单元的延迟可能小于标准值也可能大于标准值,那么不能单一的去 增加或减少延迟来模拟片上误差。

因此引入了一种更加高阶的时序分析模式(AdvancedOCV ,AOCV),不同 于 OCV 用相同的 derate 参数,AOCV 将会根据专门的 aocv table 来设定时序因 子,时序分析更加乐观。
在这里插入图片描述

(三)时钟树综合目标:

当今越来越复杂的设计中,时序要求要求越来越难以满足,时钟树综合越来 越重要,时钟树综合的主要目标包括:

(A)满足时钟树设计规则约束是时钟树综合的首要目标,即满足最大转换 时间,最大扇出,最大负载等参数要求。

(B)实现较小时钟延滞和时钟偏差和尽可能小的时钟单元功耗时钟树综合 的次要目标。

2.3.4 布线

在数字后端设计中,布线主要完成各单元的实际绕线,自动化程度较髙,是 一个需要根据其时序和布通性结果进行迭代的过程。对布线类型, 以及预防及修 复串扰和天线效应等问题的研究将在第四章中进行详细讨论。

2.3.5 芯片验证

芯片验证主要包括芯片时序验证,功耗验证和物理验证。验证修复工作需要 利用手工和工具进行迭代,直至验证成功,并达到签核标准。关于芯片验证部分的研究分析将在本文中的第五章详细分析。

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

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

相关文章

python机器人编程——一种3D骨架动画逆解算法的启示(上)

目录 一、前言二、fabrik 算法三、python实现结论PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源ps3.wifi小车控制相关文章资源 一、前言 我们用blender等3D动画软件时&#xff0c;会用到骨骼的动画&#xff0c;通过逆向IK动力学…

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP&#xff08;Virtual IP&#xff0c;虚拟IP&#xff09;负载均衡是一种在计算机网络中常用的技术&#xff0c;用于将网络请求流量均匀地分散到多个服务器上&#xff0c;以提高系统的可扩展性、可靠性和性能。以下是对VIP负载均衡的详细解释&#xff1a; 一、VIP负载均衡的基…

想要音频里的人声,怎么把音频里的人声和音乐分开?

在音频处理领域&#xff0c;将音频中的人声和音乐分开是一个常见需求&#xff0c;尤其对于音乐制作、影视后期以及个人娱乐应用来说&#xff0c;这种分离技术显得尤为重要。随着科技的发展&#xff0c;现在已经有多种方法可以实现这一目的。 一、使用专业音频处理软件 市面上有…

动态规划 —— 路径问题-不同路径 ||

1. 不同路径 || 题目链接&#xff1a; 63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/unique-paths-ii/description/ 2. 算法原理 状态表示&#xff1a;以莫一个位置位置为结尾 dp[i]表示&#xff1a;以[i&#xff0c;j]位置为结尾时…

Telephony IMS

1、IMS结构 IMS的启动过程,IMS业务依附于phone进程启动,当phone进程启动时拉起对应的框架代码。 当phone进程启动时,会启动ImsReslover类,该类用于寻找对应的IMS apk实现,并进行绑定。 当绑定成功后,ImsServiceController会保存IMS APK中的如下对象IImsRegistration IIms…

Consul微服务配置中心部署(在线安装)

博主介绍&#xff1a; 计算机科班人&#xff0c;全栈工程师&#xff0c;掌握C、C#、Java、Python、Android等主流编程语言&#xff0c;同时也熟练掌握mysql、oracle、sqlserver等主流数据库&#xff0c;具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、…

Spring Task—定时任务

Spring Task 是 Spring 提供的一种轻量级定时任务调度功能&#xff0c;内置在 Spring 框架中。与 Quartz 等重量级调度框架相比&#xff0c;Spring Task 使用简便&#xff0c;无需额外依赖&#xff0c;适合在简单的调度任务场景中使用。通过注解配置方式&#xff0c;开发者可以…

分布式数据库技术金融应用规范技术架构

目录 引 言 概述 技术框架 技术框架概述 物理资源层 计算模块 功能特性 功能架构概述 基本功能 部署灵活性 并发处理能力 扩缩容 扩容 缩容 引 言 随着金融领域分布式架构的转型升级&#xff0c;分布式数据库技术在金融领域应用逐步深入。为规范分布 式数据库技…

从0开始electron+vue2搭建环境

使用环境&#xff1a;node版本16.16.0 目录 搭建vue项目安装electron打包electron 搭建vue项目 已有vue2的环境直接进项安装electron步骤 没有的请先移动到这里查看 vue2脚手架搭建项目流程 我就不另外记录了 安装electron 直接运行 vue add electron-builder安装完成后&…

【脚本】B站视频AB复读

控制台输入如下代码&#xff0c;回车 const video document.getElementsByTagName("video")[0];//获取bpx-player-control-bottom-center容器,更改其布局方式const div document.getElementsByClassName("bpx-player-control-bottom-center")[0];div.sty…

源码复现detectron2时遇到的错误

说明&#xff1a;安装detectron2直接进到官网 detectron2源码 中找安装文档&#xff0c;安装安装文档一般没什么问题&#xff0c;但是我确实出现了问题&#xff0c;包括有&#xff1a; gcc版本太低&#xff1a;提示说需要gcc 9及以上的版本才可以pytorch版本不匹配&#xff1a…

【机器学习基础】激活函数

激活函数 1. Sigmoid函数2. Tanh&#xff08;双曲正切&#xff09;函数3. ReLU函数4. Leaky ReLU函数 1. Sigmoid函数 观察导数图像在我们深度学习里面&#xff0c;导数是为了求参数W和B&#xff0c;W和B是在我们模型model确定之后&#xff0c;找出一组最优的W和B&#xff0c;使…

ipad-make-sense:首个支持 iPad 的开源数据标注工具

在机器学习和人工智能快速发展的今天&#xff0c;高质量的数据标注工具变得越来越重要。然而&#xff0c;大多数现有的数据标注工具都局限于传统的桌面环境&#xff0c;无法适应现代移动办公的需求。今天&#xff0c;我要向大家介绍一个突破性的解决方案 —— ipad-make-sense&…

阳振坤:云时代数据库的思考 | OceanBase发布会实录

在2024 OceanBase 年度发布会中&#xff0c;OceanBase 的创始人与首席科学家阳振坤进行了《云时代数据库的思考》的主题分享。本文为演讲实录。 亲爱的朋友们&#xff0c;衷心感谢各位莅临今天的发布会现场。今天是一个云的时代&#xff0c;我想与大家分享&#xff0c;我对于云…

51单片机完全学习——DS18B20温度传感器

一、DS18B20数据手册解读 首先我们知道DS18B20使用的是单总线传输&#xff0c;默认情况下读出来的温度是12位的&#xff0c;我们这里只讨论外部电源供电这种情况。 有这张图片我们知道&#xff0c;12位温度的最小分辨率是10^-4次方&#xff0c;因此就是0.0625.我们只需要将最后…

STM32应用详解(12)使用I2C的main函数例程

文章目录 前言一、支持I2C总线的常见器件二、程序详解1.main函数2.读取传感器温度值的函数3.相关宏定义 前言 学习I2C总线。本文件主要分析main函数和LM75A驱动程序。了解器件驱动基本原理。 一、支持I2C总线的常见器件 (1)支持I2C总线的器件有很多&#xff0c;在开发板上支持…

redis详细教程(3.ZSet,Bitmap,HyperLogLog)

ZSet Redis 的 ZSet&#xff08;有序集合&#xff09;是一种特殊的数据类型&#xff0c;它允许存储一系列不重复的字符串元素&#xff0c;并为每个元素关联一个分数&#xff08;score&#xff09;。这个分数用于对集合中的元素进行排序。ZSet 的特点是&#xff1a; 唯一性&am…

Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中

本示例介绍如何在vue+openlayers项目中设置带有箭头的线段,箭头位于线段的中间位置。这里用到 forEachSegment 函数, 这个函数接受一个特征和一个回调函数作为参数。它遍历特征中的每个子线段,并调用回调函数传入子线段的中点坐标。 效果图 专栏名称内容介绍Openlayers基础…

Springboot整合spring-boot-starter-data-elasticsearch

前言 <font style"color:rgb(36, 41, 47);">spring-boot-starter-data-elasticsearch</font> 是 Spring Boot 提供的一个起始依赖&#xff0c;旨在简化与 Elasticsearch 交互的开发过程。它集成了 Spring Data Elasticsearch&#xff0c;提供了一套完整…

51c自动驾驶~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/11491137 #BEVWorld BEV潜在空间构建多模态世界模型&#xff0c;全面理解自动驾驶~一、引言 世界模型建模了有关环境的知识&#xff0c;其可以通过给定的条件对未来进行合理的想象。未来想象要求世界模型具有物理规律的理解…