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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9122|回复: 24

[求助] 多时钟端口的数字模块DC综合疑问

[复制链接]
发表于 2013-6-27 11:17:10 | 显示全部楼层 |阅读模式

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

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

x
大家好,我现在手头上有个数字模块,但因为时钟端口太多,不知道这种数字模块怎么来设置DC的脚本,请大家指导一下,模块图如下 ADPLL_fpga.jpg
端口叙述:
tap0~tap31为32个时钟控制采样端口,频率同为100M,两个连续时钟的相位差为312.5ps,即就是他们为恒等相位差的32个时钟信号。
clk_in也是时钟信号,频率为10M。这种数字模块该如何设置DC脚本来综合才能使得网表功能正确呢?小弟第一次碰到这种多时钟端口的设计,请各位大侠指点一下,最好提示一下脚本该如何写。、多谢了
发表于 2013-6-27 11:49:19 | 显示全部楼层
tap0~tap31在模块里面是当时钟来用的吗?
 楼主| 发表于 2013-6-27 12:37:15 | 显示全部楼层
回复 2# 陈涛


    斑竹,你好,这是模块的部分电路结构图。
TDC.jpg
以上是tap0~tap31端口的连接,它驱动的是D触发器,所以应该是当做时钟来用的。请问该如何设置DC脚本呢?
发表于 2013-6-27 12:57:25 | 显示全部楼层
一个一个写,32不算多
时钟的相位用 -waveform 描述
 楼主| 发表于 2013-6-27 21:46:38 | 显示全部楼层
回复 4# 陈涛


    斑竹,你好。我用你提醒的方法试了一下。但不行,不知道是不是我的理解有问题,如果是,请斑竹责骂指导。我现在把我的设计比较详细地告叙述下吧,希望你再指点一下。以下是我的设计,是一个全数字锁相环,环路已经通过功能仿真。主要有鉴频鉴相器,时间数字转换器,滤波器,数控振荡器,分频器。
①其中Clk_in为10M的参考频率输入信号,鉴频鉴相器和低通滤波器要用到参考频率;
②tap0~tap31是100M的恒等相位差的时钟采样信号,时数转换器和数控振荡器要用到;
③虚线框内就是所设计的全数字锁相环内容,从总的来看。
全数字锁相环的输入信号为:tap0~tap31,clk_in,复位信号。
                  输出信号为:CK。
adpll结构图.jpg
我刚用斑竹的方法,DC综合设置如下:
create_clock -name "clk_in" -period 100 -waveform { 0  50 }  { clk_in  }
set_clock_latency  8 [get_clocks clk_in  ]
set_clock_uncertainty  6 [get_clocks clk_in  ]
create_clock -name "tap0" -period 10 -waveform { 0  5 }  { tap0  }
set_clock_latency  0.5 [get_clocks tap0]
set_clock_uncertainty  0.5 [get_clocks tap0]
。。。。。。。。。
。。。。。。。。。。。。
create_clock -name "tap31" -period 10 -waveform { 0  5 }  { tap31  }
set_clock_latency  0.5 [get_clocks tap31]
set_clock_uncertainty  0.5 [get_clocks tap31]
set_false_path -from reset -to [all_outputs]
但是综合后的网表仿不起来,CK输出有x,而且DC报的时序也有违例。
请问斑竹:
一、对于稍微有点复杂的这个系统环路,我是不是该分模块分别走流程到版图,再拼接起来呢?
二、如果整个环路一起走流程的话,我发现输入端口和输出端口全是跟时钟有关的信号,是不是不用设置set_input_delay和set_output_delay,set_driving_cell,set_load 等这些命令了?
发表于 2013-6-28 06:45:45 | 显示全部楼层
1) 先试整体,不行再试分模块
2)时钟port,只要set_clock_transition

综合后的网表仿不起来,有许多原因,时序违反是其中之一
你的
create_clock -name "tap0" -period 10 -waveform { 0  5 }  { tap0  }
。。。。。。
create_clock -name "tap31" -period 10 -waveform { 0  5 }  { tap31  }
里面的waveform写得不对,与你的描述不符,再去仔细读读manual
 楼主| 发表于 2013-6-29 09:57:26 | 显示全部楼层
回复 6# 陈涛


    斑竹的意思是用DC的命令waveform进行时钟相位差的设置?小弟真心没见过还能设置相位差的,我的这个32个时钟是外部提供的,外面已经有固定的相位差了。比如现在32个时钟固定相位差为312.5ps,如果用DC设置的话,该如何 写脚本呢?请斑竹明示。多谢了
 楼主| 发表于 2013-6-29 20:17:07 | 显示全部楼层
回复 6# 陈涛


    斑竹,你好,我回头看了一下dc -user guide,有点恍然大悟的感觉,但不知道是不是正确的。我说一下对斑竹提醒我的理解,斑竹说可以用waveform去设置相位差。像我这32个100M时钟,相位差为10n/32=312.5ps,那么32个时钟应该如下进行设置,即意思就是设置它们的波峰出现的时间段,是这样吗?
create_clock -period 10 -waveform {0 5} tap0
create_clock -period 10 -waveform {0.3125 5.3125} tap1
create_clock -period 10 -waveform {0.625 5.625} tap2
create_clock -period 10 -waveform {0.9375 5.9375} tap3
.........................................................
create_clock -period 10 -waveform {5 10} tap31
发表于 2013-6-29 22:21:17 | 显示全部楼层
 楼主| 发表于 2013-7-1 21:21:19 | 显示全部楼层
回复 9# 陈涛


    斑竹你好,我听了你的指点,用了以下DC的脚本进行综合,但有很多setup和hold的违例,请斑竹再指点一下我该怎么做,多谢了:
link
remove_unconnected_ports -blast_buses [get_cells -hier *]
check_design
set_operating_conditions -max_library slow -max slow  -min_library fast -min fast
set_wire_load_mode top
set_wire_load_model -name smic18_wl40 -lib slow
create_clock -name "ref" -period 100 -waveform { 0  50 }  { ref  }
set_clock_latency  4 [get_clocks ref]
set_clock_uncertainty  4 [get_clocks ref]
create_clock -name "tap0" -period 10 -waveform { 0  5 }  { tap0  }
create_clock -name "tap1" -period 10 -waveform { 0.3125  5.3125 }  { tap1  }
create_clock -name "tap2" -period 10 -waveform { 0.625  5.625 }  { tap2  }
create_clock -name "tap3" -period 10 -waveform { 0.9375  5.9375 }  { tap3  }
create_clock -name "tap4" -period 10 -waveform { 1.25  6.25 }  { tap4  }
create_clock -name "tap5" -period 10 -waveform { 1.5625  6.5625 }  { tap5  }
create_clock -name "tap6" -period 10 -waveform { 1.875  6.875 }  { tap6  }
create_clock -name "tap7" -period 10 -waveform { 2.1875  7.1875 }  { tap7  }
create_clock -name "tap8" -period 10 -waveform { 2.5 7.5 }  { tap8  }
create_clock -name "tap9" -period 10 -waveform { 2.8125  7.8125 }  { tap9  }
create_clock -name "tap10" -period 10 -waveform { 3.125  8.125 }  { tap10  }
create_clock -name "tap11" -period 10 -waveform { 3.4375  8.4375 }  { tap11  }
create_clock -name "tap12" -period 10 -waveform { 3.75  8.75 }  { tap12  }
create_clock -name "tap13" -period 10 -waveform { 4.0625  9.0625 }  { tap13  }
create_clock -name "tap14" -period 10 -waveform { 4.375  9.375 }  { tap14  }
create_clock -name "tap15" -period 10 -waveform { 4.6875  9.6875 }  { tap15  }
create_clock -name "tap16" -period 10 -waveform { 5  10 }  { tap16  }

①后面的时钟相位差不知道是否设对了?
create_clock -name "tap17" -period 10 -waveform {   5.3125 10.3125 }  { tap17  }
create_clock -name "tap18" -period 10 -waveform { 5.625 10.625 }  { tap18  }
create_clock -name "tap19" -period 10 -waveform {   5.9375  10.9375 }  { tap19  }
create_clock -name "tap20" -period 10 -waveform {  6.25  11.25 }  { tap20  }
create_clock -name "tap21" -period 10 -waveform {   6.5625  11.5625 }  { tap21  }
create_clock -name "tap22" -period 10 -waveform {   6.875  11.875 }  { tap22  }
create_clock -name "tap23" -period 10 -waveform {  7.1875 12.71875 }  { tap23  }
create_clock -name "tap24" -period 10 -waveform {   7.5  12.5 }  { tap24  }
create_clock -name "tap25" -period 10 -waveform { 7.8125 12.8125 }  { tap25  }
create_clock -name "tap26" -period 10 -waveform {  8.125 13.125 }  { tap26  }
create_clock -name "tap27" -period 10 -waveform {  8.4375 13.4375 }  { tap27  }
create_clock -name "tap28" -period 10 -waveform {  8.75 13.75 }  { tap28  }
create_clock -name "tap29" -period 10 -waveform {  9.0625 14.0625 }  { tap29  }
create_clock -name "tap30" -period 10 -waveform { 9.375 14.375 }  { tap30  }
create_clock -name "tap31" -period 10 -waveform {  9.6875 14.6875 }  { tap31  }
set_dont_touch_network [list ref clr tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9 tap10 tap11 tap12 tap13 tap14 tap15 tap16 tap17 tap18 tap19 tap20 tap21 tap22 tap23 tap24 tap25 tap26 tap27 tap28 tap29 tap30 tap31]
set_false_path -from clr -to [all_outputs]
set_fix_hold [list ref  tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9 tap10 tap11 tap12 tap13 tap14 tap15 tap16 tap17 tap18 tap19 tap20 tap21 tap22 tap23 tap24 tap25 tap26 tap27 tap28 tap29 tap30 tap31]
set_drive 0 [list ref  tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9 tap10 tap11 tap12 tap13 tap14 tap15 tap16 tap17 tap18 tap19 tap20 tap21 tap22 tap23 tap24 tap25 tap26 tap27 tap28 tap29 tap30 tap31]
set_load 0.2 [all_outputs]
report_constraint -all_violators报告如下:
****************************************
Report : constraint
        -all_violators
Design : adpll
Version: B-2008.09
Date   : Mon Jul  1 20:59:24 2013
****************************************

   max_delay/setup ('ref' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   two_R/D_reg[0]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[1]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[2]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[3]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[4]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[5]/D             0.28           0.47 r        -0.19  (VIOLATED)
   two_R/D_reg[6]/D             0.28           0.47 r        -0.19  (VIOLATED)

   max_delay/setup ('tap1' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u1/q_reg/D               0.15           2.48 f        -2.33  (VIOLATED)

   max_delay/setup ('tap2' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u2/q_reg/D               0.46           2.48 f        -2.02  (VIOLATED)

   max_delay/setup ('tap3' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u3/q_reg/D               0.77           2.48 f        -1.71  (VIOLATED)

   max_delay/setup ('tap4' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u4/q_reg/D               1.09           2.48 f        -1.39  (VIOLATED)

   max_delay/setup ('tap5' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u5/q_reg/D               1.40           2.48 f        -1.08  (VIOLATED)

   max_delay/setup ('tap6' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u6/q_reg/D               1.71           2.48 f        -0.77  (VIOLATED)

   max_delay/setup ('tap7' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u7/q_reg/D               2.02           2.48 f        -0.46  (VIOLATED)

   max_delay/setup ('tap8' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/u8/q_reg/D               2.34           2.48 f        -0.14  (VIOLATED)

  min_delay/hold ('tap31' group)
                             Required        Actual
   Endpoint                 Path Delay     Path Delay        Slack
   -----------------------------------------------------------------
   tdc/d1/reg_phase_reg/E      10.12           0.00 r       -10.12  (VIOLATED)


②请问tap31的hold违例怎么会这么大呢?违例的原因是不是我的这些时钟相位没有设置好呢?该如何进行设置?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-22 20:18 , Processed in 0.024625 second(s), 8 queries , Gzip On, Redis On.

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