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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3388|回复: 13

[求助] PR后的分频时钟如何设置来过PT?

[复制链接]
发表于 2023-7-5 13:24:45 | 显示全部楼层 |阅读模式
100资产
本帖最后由 andy89926 于 2023-7-5 13:57 编辑

我们有个设计用计数器产生了一个8分频时钟,DC的约束是这样的:

create_clock [get_ports t_clk]  -name CLK1  -period 1  -waveform {0 0.5}
create_generated_clock [get_pins clk_eight_div/div_8_clk]  -name CLK2  -source [get_ports t_clk]  -divide_by 8

经过了综合和PR之后,电路层次变了,CLK1和CLK2也都长出了时钟树,再用这样的约束过PT的时候出现了以下错误:

首先是定义 generated clock的时候出了一条warning:
create_generated_clock [get_pins clk_eight_div/div_8_clk]  -name CLK2  -source [get_ports t_clk]  -divide_by 8
Warning: Creating a generated clock on hierarchical pin 'clk_eight_div/div_8_clk'. (UITE-136)

然后在update timing的时候就会报错:
Error: Generated clock 'CLK2' has no path to its master clock. (PTE-075)

应该是说主时钟和定义的分频时钟之间没有时序路径吧,试用了以下定义方式都不行:
#set_propagated_clock [get_clocks CLK1]
create_generated_clock [get_pins clk_eight_div/div_8_clk]  -name CLK2  -source [get_ports t_clk]  -divide_by 8
#create_generated_clock  -name CLK2  -source [get_pins clk_eight_div/\cnt_reg[2]/CK] -divide_by 8 [get_pins clk_eight_div/\cnt_reg[2]/Q] -master CLK1 -add
#create_generated_clock  -name CLK2  -source [get_pins clk_eight_div/\cnt_reg[2]/CK] -divide_by 8 [get_pins CTS_ccl_BUF_CLK2_G0_L1_2/O] -master CLK1 -add
#create_generated_clock  -name CLK2  -source [get_ports t_clk] -divide_by 8 [get_pins clk_eight_div/cnt_reg[2]/Q]  
#create_clock [get_pins clk_eight_div/cnt_reg[2]/CK]  -name CLK_temp  -period 1.7  -waveform {0 0.85}
#create_generated_clock  -name CLK2  -source [get_pins clk_eight_div/cnt_reg[2]/CK]  -divide_by 8 [get_pins clk_eight_div/cnt_reg[2]/Q]

我们看了一些教程和帖子,就是这样的写的,从CLK1的入口到CLK2产生的寄存器的Q端,但是不知道为什么我们这么定义就不行了
像这个 https://blog.csdn.net/m0_49540263/article/details/115008408

                               
登录/注册后可看大图


难道这路径也要像其它路径一样,从clk到寄存器的输入才算?那样岂不是要写一个正则表达式把所有连着CLK2的DFF的CK端都找出来?

所以这里想问各位有丰富后端经验的大佬们,应该怎么去做?


最佳答案

查看完整内容

这个要看你的时钟结构 1. CLK1到div_dff/CK,这条路径上只有逻辑器件。 检查是否有逻辑信号被配置,而导致时钟无法到达 2. CLK1到div_dff/CK,这条路径上存在时序器件。 时钟是无法直接穿过时序器件的,所以要在时序器件的位置创建分频时钟,例如: 先做2分频,再在2分频的基础上做4分频,得到8分频时钟 create_generated_clock -name clk_d2 \ -source [get_ports t_clk] \ -divide_by 2 \ ...
发表于 2023-7-5 13:24:46 | 显示全部楼层


andy89926 发表于 2023-7-5 14:02
感谢回复,我们确认了以一下,主时钟的路径应该是到了这个分频器的输出DFF上的CK,中间插了一个buffer不 ...


这个要看你的时钟结构

1. CLK1到div_dff/CK,这条路径上只有逻辑器件。
        检查是否有逻辑信号被配置,而导致时钟无法到达
2. CLK1到div_dff/CK,这条路径上存在时序器件。
        时钟是无法直接穿过时序器件的,所以要在时序器件的位置创建分频时钟,例如:

先做2分频,再在2分频的基础上做4分频,得到8分频时钟
create_generated_clock -name clk_d2  \
        -source [get_ports t_clk] \
        -divide_by 2 \
        [get_pins clk_div2_reg/Q]

create_generated_clock  -name CLK2 \
        -source [get_pins clk_div2_reg/Q] \
        -divide_by 4 \
        [get_pins clk_eight_div/div_8_clk]

如果是使用ICG做门控时钟,要在ICG的位置先创建1分频时钟,再创建8分频
发表于 2023-7-5 13:55:24 | 显示全部楼层
在有层次的Pin上建立时钟,没问题。
但是找不到主时钟的路径是不行的。(在网表里确认一下。路径是否正确)
建议分频时钟的生成点落在dff的q端。
 楼主| 发表于 2023-7-5 14:02:28 | 显示全部楼层


lzqxiang 发表于 2023-7-5 13:55
在有层次的Pin上建立时钟,没问题。
但是找不到主时钟的路径是不行的。(在网表里确认一下。路径是否正确) ...



感谢回复,我们确认了以一下,主时钟的路径应该是到了这个分频器的输出DFF上的CK,中间插了一个buffer不碍事吧?
分频时钟的生成点我们也设在了DFF的Q,还是提示“no path to its master clock”

                               
登录/注册后可看大图




                               
登录/注册后可看大图



 楼主| 发表于 2023-7-6 01:08:36 | 显示全部楼层


lzqxiang 发表于 2023-7-5 16:49
这个要看你的时钟结构

1. CLK1到div_dff/CK,这条路径上只有逻辑器件。


感谢你回复这么详细,但是我们确实检查过,CLK1到div_dff/CK,这条路径上只有一个buffer。


我们也没先二分频再4再,我们是直接一个计数器产生的分频,应该不存在多个分频时钟。

就很诡异,一直报错不过,头都晕了
发表于 2023-7-6 09:21:49 | 显示全部楼层


andy89926 发表于 2023-7-6 01:08
感谢你回复这么详细,但是我们确实检查过,CLK1到div_dff/CK,这条路径上只有一个buffer。


那你的pt脚本和读入文件有没有错?
把sdc里面的其他内容都注释掉,一点点放开,看看有没有影响。
再不行,我也没办法了~~~
发表于 2023-7-6 11:05:50 | 显示全部楼层


andy89926 发表于 2023-7-6 01:08
感谢你回复这么详细,但是我们确实检查过,CLK1到div_dff/CK,这条路径上只有一个buffer。


你去看看计数器产生的分频的网表文件,然后分析一下,你就会发现 你的CLK到最后8分频时钟之间应该不是只有一个DFF的,应该还有其他DFF的!
建议先分析一下你的八分频电路,不建议的话 可以把这个电路贴出来,让大家一起看看!
 楼主| 发表于 2023-7-6 12:11:39 | 显示全部楼层


lzqxiang 发表于 2023-7-6 09:21
那你的pt脚本和读入文件有没有错?
把sdc里面的其他内容都注释掉,一点点放开,看看有没有影响。
再不行 ...


破案了,是PR导出网表的问题。

innovus导出了一个带power和不带power的网表,用带power的网表就出现上面的问题,不带power的按你说的这样就过了。

那岂不是不能用带power的网表做PT和FM,lvs又要用带power的,没法统一流程不是很严谨啊
 楼主| 发表于 2023-7-6 12:12:26 | 显示全部楼层


fhy420462303 发表于 2023-7-6 11:05
你去看看计数器产生的分频的网表文件,然后分析一下,你就会发现 你的CLK到最后8分频时钟之间应该不是只 ...


多谢热心老哥。已经找到问题所在了,请见8楼的回复
发表于 2023-7-6 14:57:59 | 显示全部楼层
那岂不是不能用带power的网表做PT和FM,lvs又要用带power的,没法统一流程不是很严谨啊
===
不需要的。跑PT FM ,不带pg connection netlist A。
lvs 用 带 pg connection netlist B。

确保netlist A 和netlist B是一套数据写出来的就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-25 02:16 , Processed in 0.033581 second(s), 7 queries , Gzip On, Redis On.

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