在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 9861|回复: 13

[求助] 如何约束某一分频时钟,急求

[复制链接]
发表于 2012-9-26 15:00:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
某一分频时钟clk8

代码描述为:clk8 = ~clk_cnt[2];
clk8为div_clk模块的output;clk_cnt是在clk下的一个计数器;因此clk8为clk的八分频,并且翻转后的时钟

问题
create_generated_clock -divide_by 8 -invert -name clk8 -source clk [get_pins div_clk/clk8]

红色表示出的-invert是否需要?
考虑到需要翻转的应该是clk_cnt[2]的寄存器值,我私以为如果使用 get_pins div_clk/clk8 应该是不需要这个-invert吧?只有使用get_nets div_clk/clk_cnt[2]才需要-invert?

求助各位应该如何约束这个分频时钟?
发表于 2012-9-26 16:48:40 | 显示全部楼层
invert 是看你source clk的沿和div clock的沿的关系 是你定义好的
为啥要clk8 = ~clk_cnt[2] 为啥不是clk8 = clk_cnt[2],这个能讲清楚,那么沿的问题就能想明白
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-26 17:37:57 | 显示全部楼层
回复 2# arthur_wang_orz


    我不太明白你的意思啊?能否说明些?
我的理解就是因为代码中有取反。所以就需要一个invert的选项
回复 支持 反对

使用道具 举报

发表于 2012-9-26 19:41:25 | 显示全部楼层
画一下clk 和这个 cnt[2] 以及~cnt[2]的波形,然后分别找你认为设计需要check setup的两个clk 沿,然后看看DC报的timing是否和你预想的沿一致。
如果不是你设计的代码,你可以问一下设计者在这里的clk 相位是怎么考虑的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-26 20:05:18 | 显示全部楼层
本帖最后由 AveryYoung 于 2012-9-26 20:15 编辑

回复 4# arthur_wang_orz

之所以要取反是为了在逻辑的处理更加方便,

对于设计中有另外一个分频clk32 = clk_cnt[4];对比其和clk8=~clk_cnt[2]的波形,由于clk32和clk8的时钟域下的数据有交互,那么是否应该要加个invert?至于你说的画波形确定需要比较的是哪两个时钟沿,我不太清楚应该如何处理。退一步讲,如果clk8是没有取反的,那么我可能直接就create_generated_clock去生成两个clk8和clk32了,也不会考虑要画一个波形。

eetop.cn_QQ截图20120926200159.png

我私以为,如果我不加这个invert 选项,那么clk8的波形就恰好是上图中的取反结果,

那么我想,这将和我代码中的clk8取反并且always @ (posedge clk8)所需要表述的时刻点肯定是不相符的,因此我认为你应该是要加-invert这个选项
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-26 20:20:33 | 显示全部楼层
回复 4# arthur_wang_orz


   不好意思,帖子刚才编辑了下,把时序图弄上去
回复 支持 反对

使用道具 举报

发表于 2012-9-27 12:55:51 | 显示全部楼层
这两个设置报timing所用的clock margin都是一个clk8的period,只是报出来的waveform的点不一样,
逻辑处理更方便,从目前的设置上看来,timing里面体现不出来你用cnt[2]和~cnt[2]的差别
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-27 15:29:01 | 显示全部楼层
回复 7# arthur_wang_orz


    谢谢你的解答,我还有个疑问
虽然我不知道如何去正确的使用invert这个命令。
那么我是否可以通过waveform的选项,将clk8的波形设定下来,使其和clk32有上图的时序图关系

另外,我试着在pt中report_timing,并且比较了clk8加上和不加上invert时的区别,
clk周期为74,clk8为592,clk32为2368.
分析一个时序起点为clk8,终点为clk32的数据路径时发现,
没有-invert选项时,
data_arrival_time 为2072+x;
data_required_time为2368+y;
无invert选项时
data_arrival_time 为1776+x;
data_required_time为2368+y;
从上图的时序来看,应该是没有加invert时数据的检查时刻是正确的,我不太清楚这样的现象是怎么处理,是否可以认为不加invert才是正确的?
回复 支持 反对

使用道具 举报

发表于 2012-9-27 16:04:29 | 显示全部楼层
clk和clk32啥关系?我前面的表述都是以为clk 和 clk8在做啥事情,没仔细看
下面有个图应该说的比较清楚了
未命名.JPG
如你所说 用waveform应该会约束的比较清楚。invert的用法最好去man 一下,然后看报出来的时序是不是你想要的 我说的也不一定对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-27 16:24:06 | 显示全部楼层
回复 9# arthur_wang_orz


    我明白你的意思了,非常感谢你

其实可是这么理解,任何一个时钟定义的时候,如果没有加上wave_form,那么默认情况就是0时刻上升沿,half_period时刻下降沿。

因此对于上述的波形情况,因为我的clk8和clk32的波形的上升沿起始时刻是存在一致点的,那么可以理解为clk8和clk32的wave_form的上升沿时刻都是零时刻,然后在各自的半个周期后出现下降沿,因此根据这个情况是不需要加上invert的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-11 22:40 , Processed in 3.119961 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表