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

news/2025/2/25 10:38:40

在这里插入图片描述

数字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电路<a class=时钟树综合" />


http://www.niftyadmin.cn/n/5865392.html

相关文章

我与Linux的爱恋:了解信号量+共享内存+消息队列的应用

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 文章目录 信号量共享内存应用---Server&Client通信client.ccserver.ccnamepipe.hppShm.hpp 消息队列——实现Client&ServerCom.hppClient.ccServer.cc 信号量 信号量…

用Deepseek直接在word中完成论文的润色(中-中,中-英, 英-中)

最近&#xff0c;各行各业仿佛掀起了一场“Deepseek接入大赛”——从大公司到小微企业&#xff0c;从手机助手到扫地机器人&#xff0c;似乎不接入Deepseek都不好意思说自己是“智能体”了。就连我家楼下的自动售货机都开始“思考”该给我推荐什么零食了&#xff08;虽然它最后…

MybatisPlus-扩展功能-枚举处理器

在Mybatis里有一个叫TypeHandler的类型处理器&#xff0c;我们常见的PO当中的这些成员变量的数据类型&#xff0c;它都有对应的处理器&#xff0c;因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器&#xff0…

项目——仿RabbitMQ实现消息队列

1.项目介绍 曾经在学习Linux的过程中&#xff0c;我们学习过阻塞队列 (BlockingQueue) 。 当时我们说阻塞队列最大的用途, 就是用来实现生产者消费者模型。 生产者消费者模型是后端开发的常用编程方式&#xff0c; 它存在诸多好处&#xff1a; 解耦合支持并发支持忙闲不均削峰…

ArcGIS Pro中创建最低成本路径的详尽教程

一、引言 在地理信息系统&#xff08;GIS&#xff09;的应用场景中&#xff0c;路径分析扮演着至关重要的角色。而最低成本路径分析&#xff0c;则是路径分析中的一种高级应用&#xff0c;它综合考虑了地形、植被、土地利用类型等多种因素&#xff0c;通过加权计算得出一条从起…

rust笔记9-引用与原始指针

Rust 中的指针类型和引用类型是理解其内存管理机制的关键部分。& 引用和 * 原始指针在底层原理上确实都可以认为是指针,它们都存储了某个内存地址,并指向该地址处的数据。然而,它们在安全性、使用方式和编译器支持上有显著的区别。下面我会详细解释它们的异同点,帮助你…

6层高速PCB设计入门第1~10讲

第一讲 课程介绍 无痛入门&#xff01;6层高速PCB设计&#xff01;_哔哩哔哩_bilibili 第二讲 逻辑派原理图分析 开发板资料文档&#xff1a;https://wiki.lckfb.com/zh-hans/fpga-ljpi/ 最需要注意的信号就是FPGA与DDR3、HDMI交互的信号&#xff0c;其次是GD32读写TF Card的…

解决 kubeasz 安装k8s集群跨节点pod 无法使用cluster ip通讯问题

问题描述 使用kubeasz搭建k8s集群后使用的配置文件 # etcd cluster should have odd member(s) (1,3,5,...) [etcd] 192.168.xx.22# master node(s) [kube_master] 192.168.xx.22# work node(s) [kube_node] 192.168.xx.9 192.168.xx.22# [optional] harbor server, a privat…