门控时钟检查(clock gating check)的理解和设计应用(上)

news2024/11/16 7:54:45

在笔者的一篇老文Clock Gating之浅见
中,一起探讨过工具处理门控时钟的方法和门控时钟所带来的相关收益和面积代价。除此之外,门控时钟的检查(clock-gating check)在STA中也有相应的处理方式,通过这篇文章,一起了解一下相关的知识,并会拓展到时钟网络的一些设计建议,闲话少叙,ICer GO!

门控时钟的分类

通过门控方式不同,一个门控时钟通常可以分为下面基类,

高有效(Active High)门控时钟

通常使用与门(and)或者与非门(nand)实现,
在这里插入图片描述
当使能信号为高的时候,时钟才可以被释放出去. 如果是nand,则输出的时钟是一个反向时钟的波形
在这里插入图片描述

低有效(Active High)门控时钟

通常使用与门(and)或者与非门(nand)实现,

在这里插入图片描述
当使能信号为低的时候,时钟才可以被释放出去. 如果是nor,则输出的时钟是一个反向时钟的波形
在这里插入图片描述
除过上述的情况,有时候也会使用复杂一些的clock gating结构,这里的波形就会复杂一些

XOR结构的门控时钟

在这里插入图片描述
在这里插入图片描述
当enable信号为1的时候,输出是输入的反向,反之则是正向

MUX结构的门控时钟

在这里插入图片描述
在这里插入图片描述

时钟传播单调性(unate)

静态时序分析的基本原理是信号传播,对于拥有明确单调性的传播是构建正确STA环境的基础,数据通路对单调性(unate)通常不敏感,但是时钟通常是边沿敏感信号,所以时钟网络的单调性在STA时序分析的形态中尤为重要。STA工具也只有在单调性明确的时钟网络上做正确的时序分析,否则大概率会在实际芯片里边出现和STA不一致的情况。这点对于时钟网络的设计非常重要。
通过上述几种门控始终结构,从单调时钟的(unate)的角度来看,可以总结为下表

gating结构单调性(unate)类别
ANDpositive-unateactive high
NANDnegative-unateactive high
ORpositive-unateactive low
NORnegative-unateactive low
XORpositive-unatewhen gated == 0
XORnegative-unatewhen gated == 1
MUXpositive-unate with clock1when select == 0
MUXpositive-unate with clock2when select == 1

所以,对于所有在时钟网络上的门控时钟,用户都需要明确其单调性,以便STA进行正确的分析。

门控时钟的的检查(clock gating check)

通过上述描述,可以看到始终网络对于静态时序分析的重要性,所以在门控时钟在时钟网络的传播路径上的检查尤为重要。同样,基于clock gating的结构,对于active high,active low的门控时钟,通过STA工具。可以自动推断(infer)出相应的门控时钟检查(clock gating check),用户可以理解,这里的clock gating结构被STA所覆盖。所以用户在需要理解STA自动推断的原理,从而确保自己的时钟路径被STA覆盖

定义

工具判断门控时钟的基本标准如下

  • 输入的时钟到输出必须存在一个组合逻辑的传播路径。 常规的与或非,或者常规的latch based 的clock gating结构(见下图),但是register的分频结构,就不是一个clock gating。
    在这里插入图片描述
  • 输入的端口必须包含clock,但是输入到输出的传播必须包含数据路径(gated 信号)。
    示例1: 组合逻辑的输入都是clock,STA会自动将时钟传播到输出,这样输出的会看到四个clock,这样的结构是无法判定为clock gating结构的,需要用户在使用的时候,当clock1有效的时候,clock2/3/4需要维持一个常1,否则输出的clock会出现混乱

在这里插入图片描述
示例2:输入都是clock,但是用户使用下列命令在输出创建了一个gen-clock

create_generated_clock -name clock1_gen_clk -divide_by 1 \
-source clock1 [get_pins U1/Z]

由于这个AND只有clock1传播过去,STA会自动推断出这是一个clock gating结构,clock1到clock2的gating 检查,clock2信号就是一个门控信号(enable)

在这里插入图片描述

示例3:对于一个复杂的门控时钟无法自动推断
这里的UMUX0满足clock gating的结构
在这里插入图片描述
但是由于MUX结构是一个非单调性传播(none-unate),这样一个clock gating结构是无法自动推断(auto-infer)出来的,所以在clock 传播路径上存在风险,这样工具会给出如下的提示。需要用户进一步处理
在这里插入图片描述

挑战

门控时钟是在clock的传播路径插入了与或非逻辑,设计人员通过一定的逻辑控制达到对时钟的操作:

  • 时钟分频:使用低频门控信号与高频时钟和做AND操作: clock_slow = clock_fast * slow_enable
  • 时钟开合:使用半静态信号(近乎于始终关断控制): block_clock = sys_clock * block_enable
  • 时钟选择:使用半静态信号(近乎于模式控制): clock_out =(sel==1'b0)?func_clock : scan_clock
    或者使用latch/reg结构,设计一个防抖的时钟切换,但是无论门控信号的产生有多么复杂,只要符合门控适中的结构,最后的clock gating check的点位是不会发生变化的,只是一个好的时钟生成(clock-gen)的设计,可以对STA更友好的,推进项目质量和加速项目收敛,这也是一个有经验的设计工程师的基本修为。
    时钟是周期的变化,如果和一个门控逻辑进行组合逻辑运算,通常会出现时钟波形传播的问题(clock crop 或者clock swallow):
    在这里插入图片描述

在不同阶段出现的enable信号,会导致clock的波形发生畸变

现象影响
频率变慢对neg-latch时序有影响
频率变快对setup影响
脉宽变宽对neg-latch时序有影响
脉宽变窄对min-width-pulse有影响

注意:在STA的timing report中,用户是不会看到上述问题的影响的的,但是在实际芯片中,这种影响是真实发生的。所以,clock-gating的逻辑,必须被clock-gating-check所覆盖,并且需要谨慎地进行彻底修复,对于工具不能自动推断出来的clock-gating点,需要用户重点关注和给出解决方案,否则在最后的芯片中会出现和STA完全不一致(无法通过STA定位)的时序问题。
未完待续… (To Be continued …)

这样处理以后,LVS的std-cell的port mismatch也就完美解决了,
学好v2lvs,再也不用perl去patch source netlist了~~~~

【敲黑板划重点】

在这里插入图片描述
理解门控时钟检查(clock-gating-check)和理解门控时钟(clock-gating)同等重要,任何在clock tree上做的动作都需要额外的小心

参考资料

J. Bhasker and Rakesh ChadhaStatic Timing Analysis for Nanometer Designs
Synopsys PrimeTime® User Guide

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

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

相关文章

4年测试经验,一问三不知,过于离谱...

公司今年要招人,面倒是面了很多测试,但没有一个合适的。一开始想要的就是中级的水准,也没指望来大牛,当然来了更好,提供的薪资在10-20k,来面试的人有很多,但平均水准真的是让人失望。 看简历时很多都写着3…

【瑞萨MCU】玩转 HMI-Board 之 MDK + RASC 点灯

此前我们已经配置好了 瑞萨 MCU MDK RASC 的开发环境,接下来进入到瑞萨 MCU 的 HelloWorld 环节,使用 MDK 点亮两个 LED 灯。 这次我们使用的是瑞萨和 RT-Thread 联合推出的 HMI-Board 开发板。 HMI-Board 开发板简介 HMI-Board 为 RT-Thread 联合瑞…

3.6 多边形游戏

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 1.什么是多边形游戏? 对于多边形游戏,一种特定类型的玩法,即在给定的简单多边形上进行移动、删除顶点或边&#xff…

[图表]pyecharts-3D柱状图

[图表]pyecharts-3D柱状图 先来看代码: import randomfrom pyecharts import options as opts from pyecharts.charts import Bar3D from pyecharts.faker import Fakerdata [(i, j, random.randint(0, 12)) for i in range(6) for j in range(24)] c (Bar3D().…

box-shadow盒子阴影几种用法

box-shadow盒子阴影 语法: 外阴影:box-shadow: X轴 Y轴 Rpx color; 属性说明(顺序依次对应): 阴影的X轴(可以使用负值) 阴影的Y轴(可以使用负值) 阴影模糊值(大小) 阴影的颜色 内阴…

【Linux】LAMP框架的架构与环境配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LAMP框架的架构与环境配置 一、LAMP架构的相关知识1.LAMP组件的主要作用2.LAMP组件安装顺序 二、编译安装Apache httpd服务1.关闭防火墙,将所需软件包传到/opt目录…

00后简直太卷了,让我们这些老油条情何以堪......

前几天我们公司一下子也来了几个新人,这些年前人是真能熬啊,本来我们几个老油子都是每天稍微加会班就打算走了,这几个新人一直不走,搞得我们也不好走。 2023年春招结束了,最近内卷严重,各种跳槽裁员&#x…

ARM-LED灯--蜂鸣器

目录 点亮LED灯 1.开发板介绍 2.cpu控制硬件原理 3.本地开发和交叉开发 4.点灯实验 分析电路图 底板原理图:1)电路原理图,LED的控制方式->高电平亮,低电平灭 核心板原理图:2)LED与SOC的连接关系-&…

Vue+node.js校园食堂餐厅外卖点餐系统088e4

外卖点餐系统的主要使用者分为管理员和用户,实现功能包括用户管理、菜品分类管理、菜品信息管理、系统管理、订单管理等功能。由于本网站的功能模块设计比较全面,所以使得整个外卖点餐信息管理的过程得以实现。 本外卖点餐系统主要包括二大功能模块&…

Dynamic Connected Networks for Chinese Spelling Check ---- 论文阅读

DCN 动机简介方法动态连接评分器候选生成拼音增强候选生成器 训练损失函数预训练 预测 实验数据集方法比较 消融 Paper:https://aclanthology.org/2021.findings-acl.216.pdf Code:https://github.com/destwang/DCN [Pytorch] 哈工大讯飞 动机 大多数关…

【Linux】Apache 配置与应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、构建虚拟 Web 主机1.httpd服务支持的虚拟主机类型 二、基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制…

FreeRTOS进阶学习

一、FreeRTOS内核控制控制函数: 1、请求任务切换函数: 函数原型:#define taskYIELD() 函数解析:实际上是一个宏定义的函数,调用一次会触发pendSV中断来实现任务切换; /// 2、在任务中进入临界区函数&…

LLM:大模型的正则化

主流大模型使用的Normalization主要有三类,分别是Layer Norm,RMS Norm,以及Deep Norm。 小模型的正则化参考: l1l2正则和dropout正则化[https://youzipi.blog.csdn.net/article/details/75307522] LN和BN归一化 [深度学习&…

【3000字帮你深度剖析数据在内存中的存储】

本节重点 -- 重中之重 数据类型详细介绍 整形在内存中的存储:原码、反码、补码 大小端字节序介绍及判断 浮点型在内存中的存储解析 准备好了,开始啰,在小小的花园里面......最近被这个歌曲洗脑,但是我们并不是要唱歌,而…

linux基础知识学习记录

这里写自定义目录标题 一、 计算机基础知识二 、 Linux操作系统的介绍三、 Linux的安装四、Linux命令使用汇总 一、 计算机基础知识 计算机组成:计算机主要硬件和软件2部分组成。计算机软硬件的概念:硬件是可以看得见的物理实体,软件是运行在…

还在担心期末挂科吗? 期末必备复习资料-----“树“的概念

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:记录期末复习 数据结构中有关树的一些知识 金句分享: ✨我将…

2023最新150道渗透测试面试题

前言 眨眼间2023年快过去一半了,不知道大家有没有找到心仪的工作呀,今天我给大家整理了150道渗透测试面试题给大家,需要答案的话可以在评论区给我留言哦~ 第一套渗透测试面试题 你了解什么是网络安全渗透测试吗? 你的网络安全渗…

Stream相关知识点

这里写目录标题 Stream流体验Stream流Stream流的常见生成方式流程分类具体操作 Stream流常见中间操作之filter简介具体操作 Stream流常见中间操作之limit&skip简介具体操作 Stream流常见中间操作之concat&distinct简介具体操作 Stream流常见中间操作之concat&disti…

什么是SSO

1. 什么是SSO? 「SSO」(单一登录single sign on)是一种身份验证机制,它允许用户使用单一的凭据登录到多个相关应用程序或系统中。换句话说,用户只需一次登录,就可以访问多个不同的应用程序,无需…

并发专栏-CAS

从 Atomic 到 CAS CAS 知道吗,如何实现? 讲一讲 AtomicInteger,为什么要用 CAS 而不是 synchronized? CAS 底层原理,谈谈你对 UnSafe 的理解? AtomicInteger 的ABA问题,能说一下吗,原…