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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6809|回复: 11

[求助] 请教,关于分频时钟A non-unate path in clock network for clock

[复制链接]
发表于 2019-4-3 10:08:36 | 显示全部楼层 |阅读模式

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

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

x
版主以及各位前辈好,我的设计里包含分频时钟,所以我在DC中这样来约束:

create_generated_clock  -name clk  -source [get_ports RF_CLK] -divide_by 128  [get_pins inst_dec_top/inst_clk_div/clk_reg/Q]

create_generated_clock  -name mclk  -source [get_ports RF_CLK] -divide_by 4   [get_pins inst_dec_top/inst_clk_div/mclk_reg/Q]


然后在综合时报出下述warning
Warning: A non-unate path in clock network for clock 'clk'
from pin 'inst_dec_top/inst_clk_div/U6/Y' is detected. (TIM-052)
Warning: A non-unate path in clock network for clock 'mclk'
from pin 'inst_dec_top/inst_clk_div/U3/Y' is detected. (TIM-052)
......

我的源代码是
always @(posedge rf_clk or negedge rst_n)
  if(!rst_n)         clk <= 1'b0;
  else if(counter==6'd63) begin
    if(cur_state==SOF)  clk <= 1'b0;
    else           clk <= ~clk;
  end
  
always @(posedge rf_clk or negedge rst_n)
  if(!rst_n)  mclk <= 1'b0;     
  else if(counter[1:0]==2'b10)   
                  mclk <= ~mclk;

counter是一个6位计数器

请问,我这样约束是否合理呢?然后分频器的RTL代码这样写是否合理呢?我该如何修改才是正确的呢?谢谢大家了,急......file:///C:/Users/CFH/AppData/Local/Temp/ksohtml/wps5104.tmp.png


 楼主| 发表于 2019-4-3 10:09:50 | 显示全部楼层
我有试过这样修改
always @(posedge rf_clk or negedge dec_rst_n)
  if(!dec_rst_n)  counter <= 6'd0;
  else            counter <= counter + 1'b1;

assign clk = counter[5];
assign mclk = counter[1];

然后这样约束:
create_generated_clock  -name clk  -source [get_ports RF_CLK] -divide_by 128 [get_pins inst_dec_top/inst_clk_div/counter_reg[5]/Q]
但还是有上述警告。

但像这样约束后,警告才消失:
create_generated_clock  -name clk  -source [get_ports RF_CLK] -divide_by 128 [get_pins inst_dec_top/inst_clk_div/clk]
但这种约束是否合理呢?大家都是怎么做的呀
 楼主| 发表于 2019-4-3 10:10:55 | 显示全部楼层
版主勿删。。。因为再后端社区没有人回答我,所以才到前端社区发一贴的,真的急求好的回答。。。
发表于 2019-4-3 21:44:35 | 显示全部楼层
Please try the following.  Please replace ??? with actual values.

create_clock -name CLK_RF -period ??? -waveform {??? ???} [get_port RF_CLK]
create_generated_clock -name CLK_RF_DIV128_GC -master_clock [get_clocks CLK_RF] -source [get_pins inst_dec_top/inst_clk_div/clk_reg/CLK] -divide_by 128  [get_pins inst_dec_top/inst_clk_div/clk_reg/Q]

Note: -source is the CLK pin of the flop whose Q pin is the root of the generated clock.  Instead of -divided_by 128, it might be better to use the -edges {1 129 257}

发表于 2019-4-4 10:02:31 | 显示全部楼层
TIM-052
TIM-052 (warning) A non-unate path in clock network for clock '%s' from pin '%s' is detected.
DESCRIPTION
The clock tree for the specified clock contains non-unate paths, which means that the sense
of the signal reaching the clock pin of a sequential device could be either the same or
inverted with respect to the original clock source. This could be caused by the presence of
an XOR gate in the clock path, for example. By default, timing analysis considers the worst
possible arrival times of both positive and negative unate clock edges.
WHAT NEXT
If you do not want both the inverted and non-inverted clock waveforms to reach the clock pin
of a sequential device, use the set_clock_sense command to explicitly specify the sense of
the signal reaching the clock pin, either positive or negative unate, with respect to the clock
source.

点评

I used set_clock_sense -clock -negetive like that , The warning still occurs.  发表于 2023-8-30 17:14
I did that,But warning didn't disappear;  发表于 2023-8-30 17:13
 楼主| 发表于 2019-4-7 17:05:40 | 显示全部楼层


jake 发表于 2019-4-3 21:44
Please try the following.  Please replace ??? with actual values.

create_clock -name CLK_RF -perio ...


你好,非常感谢你的回答,但是现在有一个问题是我的Q端可以定位到,但寄存器的CLK端无法定位到,提示:
Warning: Can't find object 'inst_dec_top/inst_clk_div/clk_reg/CLK' in design 'baseband'. (UID-95)
请问这个该怎样解决呢?谢谢您!


 楼主| 发表于 2019-4-7 17:09:28 | 显示全部楼层


jake 发表于 2019-4-3 21:44
Please try the following.  Please replace ??? with actual values.

create_clock -name CLK_RF -perio ...


您好,谢谢您的回答,只是现在有一个问题是寄存器的CLK端无法定位到,Q端可以定位到,提示:
Warning: Can't find object 'inst_dec_top/inst_clk_div/clk_reg/CLK' in design 'baseband'. (UID-95)
请问这个问题该如何解决呢?非常感谢!


发表于 2020-3-9 15:48:53 | 显示全部楼层
不知道楼主解决了没有?遇到了同样的问题,时钟路径有XOR
发表于 2021-8-16 17:57:51 | 显示全部楼层


cfh123 发表于 2019-4-3 10:09
我有试过这样修改
always @(posedge rf_clk or negedge dec_rst_n)
  if(!dec_rst_n)  counter  ...


个人理解
RTL约束是不是应该定义在Module的port上,而不是REG/Q上。
会不会是没找到该PIN。
发表于 2023-8-30 17:11:25 | 显示全部楼层


七点班车 发表于 2019-4-4 10:02
TIM-052
TIM-052 (warning) A non-unate path in clock network for clock '%s' from pin '%s' is detected ...


I used set_clock_sense -clock -negetive like that , The warning still occurs.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-5 13:07 , Processed in 0.029293 second(s), 10 queries , Gzip On, Redis On.

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