微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个 关于Clock Gating 的典型问题求助!

一个 关于Clock Gating 的典型问题求助!

时间:10-02 整理:3721RD 点击:
在我的设计里,内部主要工作时钟是在复位撤销之后才给出的。
我原来的设计期望,在复位撤销的时候,所有的触发器都被异步复位到确定的状态。
但是加入了ClockGating之后,出现了一个问题:
因为ClockGating的加入,导致了复位撤销的时候,时钟是不定态,从而导致了所有的触发器都在复位撤销的时候变成了不定态(Gate仿真的时候)。
我自己觉得,这个问题似乎和ClockGating的时候使用的Latch是没有复位端的Latch有关,不知道有没有大侠遇到过类似的问题,遇到过的给我指导下吧:)
我看所有的关于ClockGating的文档,都是以没有复位端的Latch来做Gating的,不知道可不可以采用带复位端的Latch做Gating,怎样做呢?

这个我觉得没有必要吧。
可以考虑给这些latch在仿真的时候赋予一个random的初始值。

谢谢yx.yang的回复, 仿真的时候,给latch赋初值的方式确实是可以让仿真通过的,但是这样的方式还是让我觉得很不爽,因为这种latch的数量非常多,每次综合还有所差异,用仿真脚本给这些latch赋初值本身是件很劳累的事情。而且,赋初值本身不是非常可靠的做法,毕竟和工具产生的原始仿真文件的不一致。
所以还想继续问问,有没有哪位遇到过类似的问题,如何解决?

waiting......

期待答案

你们的设计用许多同步reset吗?

有个方法大家看怎么样
就是每个clock domain的reset都和clock做同步,然后再给模块,无论模块使用同步还是异步reset
而pll/dll的reset要和system reset区分开

谢谢大家的关注,关于这个问题,最终没有得到非常满意的结论。没有想明白为什么。
但是问题最终还是必须解决,因此我最终退了一步,对我的时钟复位逻辑进行了一点点修改。
前面说过,在我的设计里,内部主要工作时钟是在复位撤销之后才给出的。我做的修改,是在复位撤销之前,给内部主要工作时钟送出了一个脉冲,其它方面完全没有变,结果问题就这样解决了。
我想其他同志如果采用和我最初一样的时钟复位电路的话,一定也会遇到同样的问题的,希望他疑惑的时候能够找到这个帖子,并把自己的理解补充进来 ;)

我这里用PowerCompiler加的ICG,EN默认都是有效的,reset期间时钟可以通过,不存在不定态问题。

学习一下

gate clock is really a problem

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top