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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6225|回复: 18

[求助] MUX选择时钟如何约束; 工具自动加上半周期检查

[复制链接]
发表于 2021-8-25 15:34:56 | 显示全部楼层 |阅读模式
200资产
image.png     image.png

这条path就是让两个clk通过MUX选择,一个是外部输入CLK,一个是CLK通过PLL后得到的GEN_CLK_3,之后将选择后的clock输出到外部,这条path应该如何检查呢
这个是sdc,是否有问题呢 image.png

为什么工具会将这条path设为半周期呢

最佳答案

查看完整内容

去掉约束中的 set_output_delay -clock CLK ... set_output_delay -clock GEN_CLK_3 ... 加上 set_max_delay -from PAD_clk_master -to PAD_clk1 4.99 set_max_delay -from U_counter_1/U_PLL/CKOUT -to PAD_clk1 4.53 到了这里应该明白为啥工具加了半个周期 这种设计时钟切换时会有毛刺,实际应用中可以接受吗? 如果不可以,参考我的日志 时钟切换(1) ...
发表于 2021-8-25 15:34:57 | 显示全部楼层
去掉约束中的
set_output_delay -clock CLK ...
set_output_delay -clock GEN_CLK_3 ...
加上
set_max_delay -from PAD_clk_master -to PAD_clk1 4.99
set_max_delay -from U_counter_1/U_PLL/CKOUT -to PAD_clk1 4.53
到了这里应该明白为啥工具加了半个周期

这种设计时钟切换时会有毛刺,实际应用中可以接受吗?
如果不可以,参考我的日志 时钟切换(1)
发表于 2021-8-25 16:14:19 | 显示全部楼层
creat_clock 加上-waveform {0 1.65}
检查一下路径上是否存在时钟取反控制
发表于 2021-8-25 19:40:12 | 显示全部楼层
这个地方,rtl里下降沿采样了吧?
 楼主| 发表于 2021-8-25 21:13:09 | 显示全部楼层


lzqxiang 发表于 2021-8-25 16:14
creat_clock 加上-waveform {0 1.65}
检查一下路径上是否存在时钟取反控制


试了一下,还是一样的问题
这条path,就是clk过MUX,直接到输出,没有取反逻辑
 楼主| 发表于 2021-8-25 21:16:27 | 显示全部楼层
本帖最后由 BOXS 于 2021-8-25 21:19 编辑


BOXS 发表于 2021-8-25 21:13
试了一下,还是一样的问题
这条path,就是clk过MUX,直接到输出,没有取反逻辑
...


其实我在想,这条path就是为了把选出来的clk直接输出到外部,那还有必要约束这条path吗?
刚刚开始学逻辑综合,还有很多不是很懂。。。
 楼主| 发表于 2021-8-25 21:22:30 | 显示全部楼层


lizhibin8718 发表于 2021-8-25 19:40
这个地方,rtl里下降沿采样了吧?


这条path,就是只是把选出的clk过MUX,直接到输出,在代码里应该是组合逻辑吧,没有时序单元
发表于 2021-8-31 14:45:03 | 显示全部楼层
楼上jake 正解,此处时钟mux输出不能用set_output_delay 去约束;如上图第一个报告所示工具分析时你定义的时钟clk与数据pad_clk_master同频;set_output_delay 约束时钟上升沿去采样,而最近的data 翻转 launch就是clk 下降沿,下面的时序报告同理
发表于 2021-8-31 15:02:04 | 显示全部楼层


jake 发表于 2021-8-25 23:56
去掉约束中的
set_output_delay -clock CLK ...
set_output_delay -clock GEN_CLK_3 ...


请教jake哥, 这种约束是希望时钟在芯片内部跑的时间 小于 半个周期。 只是不明白,为啥是小于半个周期。
发表于 2021-8-31 15:15:05 | 显示全部楼层


fangwang85 发表于 2021-8-31 01:02
请教jake哥, 这种约束是希望时钟在芯片内部跑的时间 小于 半个周期。 只是不明白,为啥是小于半个周期。 ...


不是不是,我只是随便copy了楼主timing report里的数字。实际上希望这种路径紧凑一些,可以把set_max_delay的数字设得小一些。

set_output_delay造成的问题是工具把时钟当成普通数据。通常output delay都会设在0.6*period,0.7*period,那样时钟(fake data)的rising edge没问题,falling edge无论如何都是无法满足output delay的。解决的方法也是有的,就是分开写成set_output_delay -rise ..., set_output_delay -fall ...  那样写更繁琐,而且容易引起更多的误会,就没有推荐

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

本版积分规则

关闭

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


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

GMT+8, 2024-11-24 12:42 , Processed in 0.026573 second(s), 7 queries , Gzip On, Redis On.

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