2 DDR Memory 读接口应用得很广,尤其在Memory领域,从DDR SDRAM 根据JEDEC Spec, DDR Memory读的时序如图1 =诞生后Memory经历了 DDR2, DDR3乃至现在主流 DQS上升沿的参数:①tDQSQ是最晚有效数据 的DDR4,它们在数据接口上都使用的Double Data 的翻转,它反映着DQ的偏移(Skew) o②tDH是最 Rate (DDR) interface\" DDR interface 是一
早无效数据的开始,它反映着DQ的有效宽度。种源同步接口,时钟(DQS)和数据(DQ)都由发 DQS下降沿的参数:①tDQSQ是最晚有效数据 送方提供。读操作时Memory提供时钟和读数据, 的翻转,它反映着DQ的偏移(Skew)。②tDH是 Memory仅在有数据的时间段内驱动时钟(DQS), 最早无效数据的开始,它反映着DQ的有效宽度。时钟和数据是沿对齐(edge alignment),内存 读操作时Memory提供时钟和读数据,Memory 控制器(Memory controller)使用收到的时钟
仅在有数据的时间段内驱动时钟(DQS),时钟和数 (DQS)的上下沿釆样数据。写操作时内存控制器
据是沿对齐,内存控制器(Memory controller)使 提供时钟和写数据且仅在有数据的时间段内驱动 用收到的时钟(DQS)的上下沿采样数据。鉴于DDR 时钟(DQS),时钟和数据是中间对齐(center Memory这个特性(上下沿都会发送数据),内存控 alignment),内存(Memory)也使用时钟的上下 制器亠般会使用延长线去延迟输入的DQS然后再去 沿采样数据。基于这样的协议,通常读操作时内存 采样数据的电路,其结构可如图2。控制器使用延长线延迟输入的DQS,以满足足够的 建立保持时间采样读数据。而写操作时,内存控制
器需要将输出的DQS做一定延迟以使内存有足够 的建立保持时间采样写数据。因为是时钟上下沿都 需要采样数据,随着Memory时钟频率的加快,对 时序收敛和后仿真都提出了挑战。本文介绍了一种通过静态时序分析工具进行时
基金项目:工业和信息化部国家核高基专项基金(2014ZX 01029101).作者简介:陈杰,上海兆芯集成电路有限公司,研究方向:集成电路设计。 收稿日期:2019-05-29,修回日期:2019-07-08。20 |集成电路应用 第36卷第8期(总第311期)2019年8月Research and Design I 研究与设计根据电路结构,它的时序约束可以如下设置
(以 DDR3-1600 为例)ocreate_clock -name ext_dqs -period 1.25 -waveform {0 0.625 ) [get_ports {dqs}]
Stanpoant: p« (input ponciodtedby ut.dqs)Endpoint: I rdataj(nsmj edge-mggeredftp-flopclocked byrdqs)Path Group:rdqsPith Type:ntincreate_generated_clock -name rdqs -source [get_ports {dqs}] -divide_by 1 \\
-add -master_dock [get_clocks {ext_dqs}] [get_pins {i_pad_dqs/Zl}] set_input_delay 0.1 -clock [get_docks {ext_dqs}] -max [get_ports {pd}] set_input_delay -0.15 -clock [get_clocks {ext_dqs}] -min [get_ports {pd}] set_input_delay 0.1 -clock [get_docks {ext_dqs}] -clock_fall -max -add_delay \\ [get_ports {pd}]set_input_delay -0.15 -clock [get_clocks {ext_dqs}] -clock_fall -min \\
clockexjdqs (fall edge)
clock network delay (propegated) input external delaypd (Inoul) pad_dq/IO (pad dq) pad_dq/Zl (pad_dq) i_rda»»_r/O (DFQOl)-add_delay [get_ports {pd}]set_multicycle_path 0 -rise_from [get_clocks {ext_dqs}] -rise_to (get_clocks \\ {rdqs}]set_multicycle_path 0 -fall_from [get_docks {ext_dqs}] -fall_to [get_clocks \\ {rdqs}]dockrdqt (rise edge)clockett^dqs (source latency)dqs (inout)I pad_dqs/IO_P (pad_dqs)
i_pad_dqs/Zi (pad_dqs) (gclock source) i.oaSi.DLVCOMP/ClICO (delay.chiln) ■_rd»t»_r/CP (DFQOl)clockreconvergence pesumism library hold timedata required time使用 create_clock 和 create_generated_ clock定义了 Memory产生的dqs经过延迟线延迟 后到达 i_rdata_r/f 的 clocko
因为Memory既在上升沿发送数据又在下降沿 发送数据,所以需要使用下面两条命令来约束输入
slick (MET) 0.3«从上面报告看到新数据被发送的时间从0. 62 ns开始计算并且上一笔数据被采样的时间也从0 ns开始计算,这也符合电路工作实际情况。延迟线延迟最
数据的建立时间(setup time)的要求。set_input_delay 0.1 -clock (get_clocks {ext_dqs}] -max [get_ports {pd}]
小时i_rdata_r的保持时间的余量最大,随着延迟线 延迟的增大,保持时间的余量会越来越小(表1)。表1读路径的Timingi rdata r(ps)i rdata f(ps)set_input_delay 0.1 -clock (get_docks {ext_dqs)J -clock_fall -max[get_ports {pd}]
根据时序要求远需要丧置输人数据的保持时间
(hold time)的要求如下。set_input_delay -0.15 -clock |get_docks {ext_dqs}] -min (get_ports {pd}]
set_input_delay -0.15 -clock [get_docks {ext_dqs}] -clock_fall -min[get_ports {pd}]
Stepssetup-3.844.892.1holdsetup9.9hold01343.9295.2248339.9292.1244.6196.7145.2aset_multicycle_path 0\"反唤着图 2 电路
57.7105.2153.1204.623139.9190.7200.2149.4101.6的工作机制,i_data_r/f的釆样时钟是经过delay chain延迟后的clock,理论上的建立时间不是通 常时序电路中的一个周期,所以设为multicycle, path=0o根据上面的时序约束可以在静态时序工具中得
4567238.4285.3333.4382252.3299.4347.5396.797.554.86.650.32.28-42-47到如下的时序报告。pd到i—r'datjr的建立时间 (setup time)报告如下。Startpoint: pd (input port clocked by ext_dqs)Endpoint: i_rdata_f (rising edge-triggeredflip-flop clocked by rdqs)Path Group: rdqsPath Type: max上面的时序报告描述了 i_rdata_r的时序情况,i_data_f的时序报告类似,只是launch/capture的时间不同而已,在此不再赘述。根据上面的分析说明时序报告符合电路工作预 期,所以时序约束是正确的。但在实际时序收敛时还 不能像一般芯片内部的数字电路那样简单地根据设定 的时钟和10约束进行时序收敛,理由如下。图3是芯片内部一般数字电路的基本结构,它Point
clockext_dqs (rise edge)
Incr Path0.000.000.000.00clock network delay (propagated)
input external delay pd (inout)
0.10i_pad_dq/iO (pad_dq)
i_pad_dq/Zi (pad_dq) l_rdata_r/O (DFQD1)
0.18 •0.00 •0.29 r0.29data arrival time dockrdqs (rise edge)
clockext_dqs (source latency)
0.000.000.00dqs (Inout)
i_pad_dqs/IO_P (pad_dqs)
i_pad_dqs/ZI (pad_dqs) (gclock source)
0.18 •I_DQSI_DIYCOMP/CLKO (delay_chain)
l_rdata_r/CP (DFQD1)
clockre converge nee pessimism
0.12 •flop2/D \\ / \\0 00library setup time
data required time
d・ta required time 0.28slack (VIOLATED: Increase significant digits)从上面报告看到输入数据被发送的时间从o ns 开始计算,而被采样的时间也为0 ns开始计算, 这恰好是符合i_rdata_r采样的时钟是来自延迟 后的DQS的上升沿,随着延迟线延迟的增大,i_ rdata_r的建立时间的余量会越来越大。pd到i rdata r的保持时间(hold time)的 报告如下。图3 一般的数字电路结构 图4 一般的数字电路时序关系flopl/CP在edge 2发送新的数据,flop2会在edge3采样这笔数据,这是它们之间的建立时间 (setup time)的检查。同样 flopl/CP 的 edge 4也可能发送新的数据,这些数据不能被flop2/ CP的edge4采样到,这个时序检查就是保持时间 (hold time)的检查。基于这样工作模式和静态时序检查方法,EDA工具能够比较容易根据时钟频率的 要求和电路自身的快慢自动地满足上述电路的时序要 求。例如当建立时间不满足时EDA工具可以通过缩 短flopl/Q->flop2/D路径的延迟或者利用flopl/
集成电路应用 第36卷第8期(总第311期)2019年8月| 21研究与设计 I Research and DesignCP和flop2/CP的skew做到,但这些都不太适合DDR 写操作时内存 Memory interface。因为图 2 中 i_rdata_r/f 的 控制器提供时钟和写 时钟是经过延迟线的,而这个延迟可能需要根据外接 数据且仅在有数据的 Memory的不同、工作频率的不同甚至工作电压及温度 时间段内驱动时钟 的不同进行调节以满足i_rdata_r/i_rdata_f数据端 (DQS),时钟和数据 的建立保持时间的要求,这样才能够正确接收数据。 在内存的输入需要满
因此在时序收敛过程中时无法按照确定的延迟线延迟 图5 Memory的写时序足中间对齐(center进行时序收敛,如果固定延迟进行时序收敛有可能会
alignment),这样内存端(Memory)就可以使用时 导致延迟线可用工作范围变小。事实上,图2电路的 钟(DQS)的上下沿采样数据。图6写电路工作时 时序收敛通常做法就是使pd到i_rdata_r/f/D的延 序如图7所示,i_wdata_r/f的数据经过MUX选 迟和 dqs 到 i_rdata_r/CP 和 i_rdata_f/CP 的延 择后就会变成一个上下沿都翻转的数据,而dqs经 迟尽量相等,这样才能保证将来做延迟线调节时有足 过延迟线后可以和写数据达到中间对齐(center够的调节范围,但这样做法可能导致在自动布局布线
alignment),从而满足DDR Memory对写数据的建完成后i rdata_r或i_rdata_f的数据端的建立/保持 立保持时间的要求。时间不是一直能够得到满足的,从而导致在后仿真时 有可能遇到时序违例,造成后仿真失败,这种情况在 DDR Memory interface 是多 bit 时,由于不同 bit 之间的延迟偏差会更严重,给后仿真带来困难,因为 仿真工程师需要找到一个合理的延迟线设置同时满足 不同bit和上下沿的建立保持时间的要求。而且,它 图6写电路的结构图7写电路的工作时序随着DDR速度的增加还会恶化。事实上基于前面的时 根据图5、图6、图7写电路的时序约束可以 序约束,通过脚本改变延长线的延迟设置然后做时序 添加图7中写数据和DQS间关系。对应在静态时序 分析,可以很方便地利用静态时序工具获得后仿真时
工具中可以得到时序报告。所需的延迟线的设置以满足所有bits及上下沿的时 综上,基于前述的DDR Memory写路径时序约 序要求。这样的方法也可以帮助我们分析读路径中实 束的静态时序报告和电路预期的工作模式是一致的,
际可用的延迟线工作范围,从而指导时序收敛过程。 但和读电路类似,为了保证write DQS有足够的可 如当自动布局布线工具APR时由于某种原因导致dqs 调范围,写电路时序收敛时一般也只是尽量将数据和
到 i_rdata_r/CP 或 _rdata_f/CP 的延迟比 pd 到 时钟的path做balance, 而不能基于某个延迟线i_rdata_r/D或i_rdata_f/D的延迟偏大时,这会导 的设置或某个频率做简单地修timing的工作,并且 致延迟线可调范围变小。设计者可以使用上述方法发 Memory不同工作频率下对于输入数据的建立保持时间 现这样的问题。的要求也不同,也不易按照一个固定的标准做时序收 通过静态时序工具可以得到上述方法的结果(表
敛。这样有可能导致像读电路一样后仿真时需要调节 1).它反映了随着延迟线的调整i_rdata_r/f的建 写时钟延迟线的设置以满足写数据的建立/保持时间 立保持时间满足的情况,正值表示相应的时序是满足 的要求。同样在多Memory bit的设计情况时这样工 的,负值说明相应的时序是不满足的。可用的延迟线 作也会随着频率的提高越来越不易,因此类似读操作 的设置是i_rdata_r和i_rdata_f的建立(setup)和 时的做法,这项工作也可以通过脚本改变延迟线的设 保持(hold)时间都是正值。比较后得到step=l〜7 置,在静态时序工具里完成。都是可以使用的延迟线设置,它们的中点大约为 4结语step=4,这个值可以用来做post-SDF仿真。本文介绍静态时序工具在DDR Memory 因此上文中的DDR Memory interface的时序设
interface的时序分析,以及其在后仿真中的应用。 置及后续时序检查方法可以很好地检查DDR读接口 从实践角度弥补了 DDR Memory interface时序收敛 的时序满足情况并可以很方便地找到可用的后仿真设 目标和后仿真目标之间的差异,可以在满足时序收敛 置,极大地提高了工作效率。目标的前提的情况下给设计者提供一种快速找到合适 3 DDR Memory 写接口的后仿真设置的方法。类似 DDR Memory 读接口,JEDEC Spec 的 DDR 参考文献Memory写时序如图5所示。①tDQSH: Write DQS [1] JESD79E SDRAM Specification[M].高电平的宽度;②tDQSL: Write DQS低电平的宽 [2] JESD79-2F DDR2 SDRAM Specification[M].度;③IDS:写数据的建立时间;④tDH:写数据的 [3] JESD79-3F DDR3 SDRAM Standard[M],保持时间。[4] Primetime User Guide (Ver. M-2017. 06) [M].22 |集成电賂应用 第36卷第8期(总第311期)2019年8月
因篇幅问题不能全部显示,请点此查看更多更全内容