blue1025的个人空间 https://blog.eetop.cn/mj8051 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

DC 概论六之multicycle_path

已有 2905 次阅读| 2008-7-30 15:37 |个人分类:synthesis

转载http://bb2hh.blogbus.com/logs/21188601.html

 

原来以为路径path4path1path2path3上的建立时间和保持时间检查的分析方法一项。所以上篇的timing report仅仅分析了一下path1path2。后来觉得有些疑问,然后分析了下path4(慢时钟采集快数据),发现dc一个很微妙的分析方法,后来在dc的文档中发现的。后来想了下,这种建立关系和保持关系的检查其实在dc的文档中还是说明了的。先看分析,再总结:

综合脚本:

set lib $env(DC_LIB)

set target_library "slow.db fast.db"

set link_library "* $target_library"

set search_path ". ../src ../scripts $lib"

analyze -format verilog m.v

elaborate m

compile

create_clock  -period 5 [get_ports clka]

create_clock  -period 30 [get_ports clkb]

 

set_multicycle_path 3 -to cout_reg[*]/D

set_multicycle_path 4 -to dout_reg[*]/D

set_min_delay 0 -to dout_reg[3]/D

set_min_delay 0 -to cout_reg[3]/D

compile

 

path4分析:

Setup

 

report_timing -from ain_reg_reg[*]/CK -to dout_reg[4]/D

 

可以看出来慢时钟采集快数据的多周期路径分析,不是像快时钟采集慢数据的多周期分析一样(下图):

希望的慢周期采集快数据的多周期分析

 

根据timing report可以知道实际的分析是:

 

 

再看下保持时间的分析

report_timing -from ain_reg_reg[*]/CK -to dout_reg[4]/D -delay min

快时钟采慢数据的缺省hold chek如下,也是我们希望的:


而实际上,dc的分析师如下的:


所以对于慢时钟采集快数据的setuphold check的分析,可以由上面的分析总结为:

对于setup分析:

对于每一个capture active edge 找到最靠近它的launch active edge,然后这个launch active edge 到多周期的capture active edge的路径就是setup check的路径。

对于hold分析:

对于每一个capture active edge 找到它的launch active edge的下一个launch active edge,然后这个launch active edge 到多周期的capture active edge 的路径就是hold check路径。

更简单的说,慢时钟采集快数据,是先分析慢时钟的单周期setup relationhold relation,然后再扩展到多周期路径上。

其实就是将单周期的capture active edge,换成多周期后的capture active edge(多周期的相当于周期很大)

 

对于hold分析的理解,可以将综合脚本改成下面的,然后再分析下,就会很明白了。

set lib $env(DC_LIB)

set target_library "slow.db fast.db"

set link_library "* $target_library"

set search_path ". ../src ../scripts $lib"

analyze -format verilog m.v

elaborate m

compile

create_clock  -period 5 [get_ports clka]

create_clock  -period 31 [get_ports clkb]

 

set_multicycle_path 3 -to cout_reg[*]/D

set_multicycle_path 4 -to dout_reg[*]/D

set_min_delay 0 -to dout_reg[3]/D

set_min_delay 0 -to cout_reg[3]/D

compile

 

path4

setup分析:

report_timing -from ain_reg_reg[*]/CK -to dout_reg[4]/D


示意图如下:


Hold分析:

report_timing -from ain_reg_reg[*]/CK -to dout_reg[4]/D -delay min


示意图:




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 13

    粉丝
  • 16

    好友
  • 15

    获赞
  • 23

    评论
  • 2824

    访问数
关闭

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

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

GMT+8, 2024-4-25 18:38 , Processed in 0.012018 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部