数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例

在这里插入图片描述

数字IC后端时钟树综合专题(OCC电路案例分享)

复杂时钟设计时钟树综合(clock tree synthesis)常见20个典型案例

1、什么是OCC?
片上时钟控制器(On-chip Clock Controllers ,OCC),也称为扫描时钟控制器(Scan Clock Controllers,SCC)。OCC 是插在SoC上的逻辑电路。在ATE(自动测试设备)上对芯片做ATPG测试时,OCC用于控制内部scan flip-flop时钟。

OCC电路可以实现ate clock和function clock之间的切换,并且控制在什么时刻跳转。所以standard的OCC在设计时需要拥有三个主要功能:clock selection, clock chopping control and clock gating。

在这里插入图片描述

2、OCC的架构及功能
这里我们会介绍一下Synopsys的OCC 1.0 ,Synopsys的OCC定义了多个输入输出端口:

在这里插入图片描述

-OCC的基本逻辑

下图显示了one-single clock OCC的概念操作,未显示电路实现细节,本文目的是演示它是如何工作的。
当OCC处于function mode时,test mode = 0,此时pll _clk选通,OCC会向内部 design输入function clock,此时可以将OCC电路视为transparent。

在这里插入图片描述

当OCC处于shift mode时,我们在ate clock的控制下将测试向量load进internal scan chain和clock chain内,所以test mode = 1,scan_en = 1,此时ate _clk选通,完成shift操作。

在这里插入图片描述
OCC的shift mode

Synopsys的OCC 1.0 没有真正的slow capture mode,需要做stuck-at 测试时,可以直接从ATE机台提供OCC bypass mode capture clock。通过外部ATE机台对ate clock的pulse进行适当的控制就可以进行stuck-at测试,不需要clock chain的控制。此时test mode = 1,pll_bypass = 1。

在这里插入图片描述

在这里插入图片描述

OCC的bypass mode

当OCC处于fast capture mode时,期望在capture阶段生成两个function clock脉冲。所以test mode = 1,scan_en = 0,pll_bypass = 0,此时pll _clk选通,并且PLL cycle counter 和clock chain的输出经过ICG共同决定gating几个时钟脉冲,完成at-speed测试。

OCC的fast capture mode
Fast capture mode的波形图如下图所示,下面我们来简单地分析一下。

在这里插入图片描述

Fast capture mode波形图

当我们进行capture操作时,scan enable信号要从1变为0,为了保证得到的是稳定的0信号,我们需要先经过sync cell的3个synchronization cycles。
通过先前shift过程中load在clock chain里的test pattern(0110)以及PLL cycle counter的共同控制,在第2、3个cycle给出两个pulse,即launch和capture。
最后scan enable信号从0变为1,完成capture的操作,进入shift过程。
需要注意的是,对于Synopsys的OCC,Scan_en = 1后,ate clock在第二个pulse才出现 ,此过程被称为pre_shift 。

介绍完OCC电路的结构和工作模式后,我们来看看一个包含OCC设计的时钟树综合。一般来说这个电路在长clock tree阶段不做特殊处理,func clock的时钟树会被拖得比较长。

下图所示为典型OCC电路的时钟结构(本次复杂时钟clock gen训练营新增案例)。欢迎大家来讨论应该如何长clock tree? 如果直接让工具自动做clock tree,通常会遇到哪些问题?

ON CHIP Controller电路时钟树综合

<think>好的,用户想了解带OCC时钟树生成方式和原理,以及设计实现方法。首先,我需要回忆一下OCCOn-Chip Clock Controller)的基本功能。根据引用[4],OCC主要实现ATE时钟和功能时钟的切换,并控制切换时刻,具备时钟选择、斩波控制和门控功能。接下来,用户的问题集中在时钟树设计上,所以需要结合引用中的相关内容。 首先,带OCC时钟树设计需要考虑哪些方面?引用[2]提到,对于复杂时钟结构,建议分段构建时钟树,这样质量更佳。这可能涉及到如何将OCC部分和功能时钟部分分开处理。引用[3]指出,如果不引导工具,OCC路径可能会被拉长,导致绕线和保持时间问题。因此,设计时需要特别处理OCC的时钟路径,避免与功能时钟平衡。 接下来,用户可能需要了解具体的步骤。引用[2]提到需要绘制时钟结构图,明确同步和异步关系,然后编写时钟树约束文件。这应该是设计流程的一部分。同时,引用[1]说明在长时钟树阶段,功能时钟可能被拖长,而OCC部分需要更短,所以可能需要分段构建,先处理OCC部分,再处理功能部分,或者相反。 还需要考虑CTS约束的设置,比如在OCC路径上设置非默认路径(NDR)或设置stop pin,防止工具过度平衡。引用[3]中的案例显示,OCC路径被拉长会导致问题,所以约束必须正确设置。 可能用户还想知道实现中的挑战,比如时序收敛和物理设计问题。需要提到绕线资源、功耗,以及如何验证切换功能。引用[4]提到的切换控制需要在验证阶段特别注意。 最后,生成相关问题需要考虑用户可能进一步的问题,比如OCC作用、时钟树约束的关键点、分段构建的好处、时序问题处理等。确保问题覆盖设计实现和验证的各个方面。</think>### 带OCC时钟树生成方式及原理 #### 1. **OCC功能与时钟树设计目标** OCCOn-Chip Clock Controller)用于实现ATE测试时钟(ate clock)与功能时钟(function clock)的动态切换,同时控制时钟斩波(chopping)和门控(gating)[^4]。其核心设计目标包括: - **低延迟切换**:确保时钟切换时延可控,避免时序违例 - **路径隔离**:OCC控制路径与功能时钟路径需物理隔离,减少干扰 - **功耗优化**:通过门控技术降低动态功耗 #### 2. **分段式时钟树构建方法** 带OCC时钟树需采用**分段构建(hierarchical CTS)**策略[^2]: 1. **第一级:OCC控制器路径** -OCC控制器的寄存器靠近时钟源放置 - 使用非默认布线规则(NDR)约束金属层和走线宽度 - 示例约束: ```tcl set_clock_tree_exceptions -stop_pins [get_pins occ_ctrl/CLK] ``` 2. **第二级:功能时钟路径** -OCC下游构建功能时钟树 - 采用平衡H-tree结构,满足全局skew要求 - 通过`set_clock_gating_check`约束门控时序 #### 3. **关键实现约束** - **时钟域隔离**:通过`set_clock_groups -asynchronous`声明ATE时钟与功能时钟的异步关系[^2] - **路径平衡豁免**:对OCC控制路径使用`set_balance_points -exclude_pins`排除平衡 - **时序例外**: ```tcl set_multicycle_path 2 -from [get_clocks ate_clk] -to [get_clocks func_clk] ``` #### 4. **物理实现挑战与解决方案** | 问题类型 | 成因 | 解决方法 | |----------------|--------------------------|------------------------------| | 保持时间违例 | OCC路径过长导致延迟差 | 插入延迟单元,设置`set_clock_uncertainty`[^3] | | 绕线拥塞 | NDR规则占用更多资源 | 使用高层金属布线,预留绕线通道 | | 功耗热点 | 频繁时钟切换 | 添加级联门控单元,分区域供电 | #### 5. 验证要点 1. **切换功能验证**:通过SPICE仿真确认ATE/function模式切换无毛刺 2. **时序收敛验证**:使用OCV模式分析时钟链寄存器时序 3. **功耗分析**:采用VCD-based流程验证门控效率 ```tcl # 典型时钟树约束示例 create_clock -name func_clk -period 2 [get_ports clk_in] create_clock -name ate_clk -period 10 [get_ports test_clk] set_clock_groups -asynchronous -group {func_clk} -group {ate_clk} set_clock_tree_exceptions -float_pins [get_pins occ/CLK] -float_distance 0.5 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值