首页 > 其他分享 >clock gating check两种类型归类

clock gating check两种类型归类

时间:2024-07-18 21:28:23浏览次数:16  
标签:clock MUX cell gating gate check

前言:之前我一直以为clock gating check只涉及AND/OR gate,直到前阵子后仿发现了min width pulse violation,才从后端口中了解到MUX作为gating cell也可以做clock gating check。TO后对此研究了一番,先把基本概念搞清楚放这儿,后面再写解决该violation的两个方法。

clock_gating_check是一种对ICG cell做timing check的约束,可以用户设置,也可由工具推断,目的是保证穿过ICG cell的clock没有glitch。

http://blogs.cuit.columbia.edu/zp2130/files/2015/12/A_clock_gating_check.png

 

clock gating check可以分为active-high和active-low两种类型(指的是激活clock pin的gating pin的逻辑状态),gating cell是AND gate的clock gating check类型就是active-high type,OR gate对应的是active-low,另外还有复杂一些的gate,如XOR或MUX。

对于AND/OR gate clock gating check,一般可由工具推断,也就是STA会通过默认的约束要求,保证通过gating cell的时钟没有glitch。

如何做到的呢?STA会把所有的clock gating check归入一个path group,即clock_gating_default。以AND gate为例,会在clock pin为低电平期间检查gating pin跳变的时刻是否满足setup/hold。

需要说明的是,下图中驱动gating cell的SEQ cell可以是上升沿或下降沿触发,但下降沿触发对AND gate clock gating check的时序收敛更友好。(这里SEQ cell可以是DFF或Latch)。

理解了这点,也就理解了ICG stdcell为什么设计成fall edge Latch+AND gate或rise edge Latch+OR gate了。

对于XOR或MUX,clock gating check不会自动推断了,STA会报no clock gating check的warning,如果用户确认需要做check,那么可以用set_clock_gating_check的命令来做约束。

如果MUX是从I0切到I1,那么S就是由0变1,此时MUX作为gating cell,gating pin是S,clock pin是I1,属于active-high type;

如果MUX是从I1切到I0,那么S就是由1变0,此时MUX作为gating cell,gating pin是S,clock pin是I0,属于active-low type;

注意,MUX前级的reg通常是上升沿采样,如下图所示,hold是半周期check,timing比较难收敛。

标签:clock,MUX,cell,gating,gate,check
From: https://blog.csdn.net/simplezt/article/details/140443534

相关文章

  • uni-app的checkbox组件有些情况下视图层不更新解决方案
    应用场景问题:在使用uniapp的复选框组件checkbox实现列表的全选跟不全选功能时发现,列表的checkbox视图层在某些情况下不生效    解决方法 解决方案1:利用  this.$set改变数据,即 this.$set(item,'checked',false),这个时候视图层跟数据都一起更新了,但是在上面那种......
  • cerebro 报错: Oops, cannot start the server. com.google.common.util.concurrent.Un
    @目录前言环境异常修改方案第二次报错修改方式成功前言使用elasticsearch+springboot实现新闻搜索功能:https://javapub.net.cn/star/project/news-search-es/遇到的错误记录。环境cerebro下载地址:https://github.com/lmenezes/cerebro使用了最新的版本:cerebro-0......
  • pycharm的git控制窗口里对远程分支进行checkout后,如果和本地文件有冲突会怎么办
    在PyCharm中,当你checkout一个远程分支时,它确实会将该分支的文件更新到本地。这一过程类似于在命令行中执行gitcheckout<branch>,然后将远程分支的内容同步到本地工作目录当你在PyCharm中检出一个远程分支时,如果本地文件有未提交的更改且这些更改与即将检出的分支发生冲突,Py......
  • Check if String is Happy
    Astringishappyifeverythreeconsecutivecharactersaredistinct.defcheck_if_string_is_happy1(input_str): check=[] fora,b,cinzip(input_str,input_str[1:],input_str[2:]): ifa==borb==cora==c: check.append(False) else: check......
  • 泛微ECOLOGY9-如何实现明细第一行check框勾选禁用、浏览框内仅展示第一行相关的数据和
    实现效果:1.用户/业务需求以付款业务为例,明细表中添加多条同一个供应商的付款计划进行付款审批,审批后接口传入其他系统进行付款。2.需求分析审批完成后的接口仅支持接收一个账户相关的付款申请。明细表中浏览计划申请记录,以第一个行明细数据作为基准,并记录已选择的......
  • You have an error in your SQL syntax; check the manual that corresponds to your
    错误提示:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortherightsyntaxtousenear'TYPE=InnoDB'atline22解决方案:错误消息提示了在SQL语句的第22行附近有一个语法错误,特别是与TYPE=InnoDB这部分有关。......
  • Redis巡检检查 redis-check-aof
    一、AOF1、AOF 是什么以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。2、AOF默认......
  • QPushButton的checked和pressed样式设置无效是因为优先级问题
    设置QPushButton想要设置pressed状态的图标,但是尝试了很多次都没有效果,原来是按照优先级来的,位置越往下优先级越高,hover状态时在最下面,所以鼠标在按钮上时,hover优先级最高,所以无论pressed还是checked都无法显示正确的图标,所以要调整下顺序; QPushButton{border-image:url......
  • 摸鱼大数据——Spark Core——缓存和checkpoint
    1、RDD的缓存当RDD被重复使用,或者计算该RDD比较容易出错,而且需要消耗比较多的资源和时间的时候,我们就可以将该RDD缓存起来。​主要作用:提升Spark程序的计算效率注意事项:RDD的缓存可以存储在内存或者是磁盘上,甚至可以存储在Executor进程的堆外内存中。主要是放在内存......
  • Why do STM32 initialization peripherals need to turn on the clock first?
    为什么Stm32初始化外设都需要先打开时钟理由一由于STM32属于低功耗的MCU,为了降低功耗,STM32的MCU在复位后会把绝大多数的外设时钟关闭,所以当用户需要使用到MCU内部的某个外设,就必须先开启定时器。理由二我们知道想要控制硬件,必须控制硬件的寄存器。然而在数字电路中,寄存器的作......