jake的个人空间 https://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

STA: Generated Clock Adjustment

热度 2已有 949 次阅读| 2024-1-21 09:40 |系统分类:芯片设计

后端论坛看到一个有关generated clock adjustment的帖子,觉得有趣,做了几个实验,记录一下结果,跟大家分享。  


实验1DFF实现2分频,分频时钟上升沿下降沿分别驱动launchcapture DFF

1705806817811097.png

(这个库的symbol画的不是特别好,negedge DFF的时钟端没有画个小圆圈,而是用CPN来表示。)

电路很简单,先是一个DFF(u_dff_div2)实现2分频,分频后得到的generated clock驱动四个data path

-        Path 1: Launchgenerated clock上升沿,capturegenerated clock上升沿

-        Path 2: Launchgenerated clock上升沿,capturegenerated clock下降沿

-        Path 3: Launchgenerated clock下降沿,capturegenerated clock上升沿

-        Path 4: Launchgenerated clock下降沿,capturegenerated clock下降沿

SDC里,主时钟与generated clock定义分别为:

create_clock -name CLK -period 2 -waveform [list 0 1] [get_port clk]

create_generated_clock u_dff_div2/Q -add -name CLK_DIV2 -master_clock CLK -source u_dff_div2/CP -edges {1 3 5}

时钟关系示意张图如下。

clocking_scheme.png

下面看看四个data pathreport

Path 1

genclk_adjust_dff_div2_path1.png

Path 2

genclk_adjust_dff_div2_path2.png

Path 3

genclk_adjust_dff_div2_path3.png

Path 4

genclk_adjust_dff_div2_path4.png

不难看出,当launchcapture用到generated clock (CLK_DIV2)下降沿时,report中都会加上generated clock adjustment CLK_DIV2 Adj. = 2.000

这个generated clock adjustment是什么意思呢?不妨以path 3 report为例做分析。

genclk_adjust_dff_div2_path3_annotated.png

首先讨论STA需要一个参照系。最常见的参照系就是时钟,launchcapture pathdelay都是相对时钟这个共同的参照系(timing reference)加加减减得到的。

Path 3launchcapture时钟都是generated clock (CLK_DIV2),而generated clock (CLK_DIV2)又是从主时钟CLK衍生而来的,所以最根本的timing reference就是主时钟CLK。这个例子里2分频DFF(u_dff_div2)用的是CLK的上升沿,意味着generated clock (CLK_DIV2)的上升沿和下降沿都和CLK的上升沿对齐,所以:

1) report中的launchcapture path的起点都是clk ^,而且取的是clkt=0ns的那个上升沿。

2) launch path用的是generated clock (CLK_DIV2)的下降沿。虽然CLK_DIV2下降沿也和clk上升沿对齐,但显然不会是t=0ns那个clk ^。从前面的时钟关系示意图可以看到 capture CLK_DIV2下降沿对应的只能是t=2ns clk ^。为了弥补起点取了t=0ns clk ^,工具在capture path加上了generated clock adjustment 2ns

3) capture path起点虽然也取了t=0ns clk ^,但setup analysisnext cycle (next edge) analysisreport中加了phase shift 4.000ns,实际的capturegenerated clock (CLK_DIV2)t=4ns的上升沿。


实验2DFF实现2分频,分频时钟反向代替下降沿

做个小变化,把实验1中的negedge DFF换成posedge DFF,随后用反向后的CLK_DIV2驱动。

genclk_adjust_dff_div2_schematic.png

Report结果基本没变化,generated clock (CLK_DIV2)的下降沿出现在launchcapture path中,工具都会加上generated clock adjustment

顺便提一下,有的设计要求都用posedge DFF,这是有道理的,避免了把negedge DFF放到scan chain头上,对PR有一定帮助。


实验3ICG实现2分频,分频时钟上升沿下降沿分别驱动launchcapture DFF

genclk_adjust_icg_div2_schematic.png

与实验1类似,分频电路换成了ICG实现。

SDC里,主时钟与generated clock定义分别为:

create_clock -name CLK -period 2 -waveform [list 0 1] [get_port clk]

create_generated_clock u_icg_clk_gated/Q -add -name CLK_GATED -master_clock CLK -source u_icg_clk_gated/CP -edges {1 2 5}

这里需要注意的是-edges与实验1不同。如果-edges设置有错,工具会报错(TA-152)

时钟关系示意张图如下。

clocking_scheme.png

Path 3 report

path3_f2r_annotated.png

首先可以看到这个reportgenerated clock adjusment0Why? ICGSTA里是透明的,工具可以反向穿过ICG回溯到时钟源头。其次,用ICG分频,分频时钟的上升沿下降沿分别对应主时钟的上升沿下降沿,这点与DFF分频是不同的,工具回溯是可以精准定位到主时钟的上升沿下降沿的。在上面的report里,可以看到launchtiming referenceclk v,而capturetiming referenceclk ^,没有任何模棱两可,因此不需要generated clock adjustment


小结一下。

分析STA首先确定参照系timing reference

DFF分频时钟用作launchcapture时钟,工具会自动加上generated clock adjustment,保障计算正确。

ICG分频时钟用作launchcapture时钟,如果工具可以精准定位到master clock的上升沿下降沿,就不需要generated clock adjustment


2

点赞

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 269

    粉丝
  • 96

    好友
  • 340

    获赞
  • 293

    评论
  • 2529

    访问数
关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-8 13:35 , Processed in 0.017210 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部