Amiya · 1月4日

数字IC设计中的分段时钟树综合

背景

为什么需要分段去做时钟树呢?因为在某些情况下,按照传统的方法让每一个clock group单独去balance,如果不做额外干预,时钟树天然是做不平的。

image.png

如上图所示,存在三种寄存器序列A、B(包括B1和B2)和C,这三种寄存器序列代表三种不同时钟树情景的寄存器。A是比较普遍的情况,就是时钟树信号通过时钟树单元从clock port送到寄存器的时钟pin;C是某个Macro(硬核IP或特定子模块)内部的寄存器,正常情况下工具无法识别到该寄存器,也无法将寄存器C的时钟和外部寄存器的时钟做平;寄存器B1和B2的时钟pin是图中Macro通过clock feedthrough(也可以叫时钟飞线)。

如果按默认设置去做时钟树综合,那么A和B的时钟将会做balance;但是C的时钟肯定做不平,因为从Macro的clock in pin到寄存器C的时钟pin之间的delay不可控且没被工具识别和考虑到。

所以为了将A、B和C的时钟树做平,必须采取分段长时钟树的方法。采用两步法,先做A和C的时钟树,A和C的时钟树做好后,就可以根据已经长好的时钟树上Macro的clock out pin之前的时钟树总延迟情况去对寄存器B的时钟树做针对性调整,最终就能将A、B和C的时钟树做平。    

做寄存器A和C的时钟树

案例中时钟树使用innovus实现。

先将Macro的clock out pin到寄存器B1和B2之间的时钟树net设置为don’t touch,让做A和C的时钟的时候不要动到B1和B2,使用的命令是set_dont_touch_network。具体命令是:

set_dont_touch_network [get_pins B1/CK]

set_dont_touch_network [get_pins B2/CK]

image.png

再将Macro的clock in pin设为时钟stop pin,并将clock in pin到寄存器C的时钟pin之间的延迟(假设该值为delay1)标定到Macro的clock in pin上,这样工具就能将寄存器A和C的时钟做平。使用的命令是set_ccopt_property。具体命令是:

set_ccopt_property sink_type stop -pin macro/clk_in

set_ccopt_property insertion_delay -pin macro/clk_in $ delay1    

image.png

然后开始做寄存器A和寄存器C的时钟树。

做寄存器B的时钟树

首先给寄存器B1和B2创建单独的skew group,因为这个时钟不是全局时钟树都要去做,而是单独去做寄存器B1和B2;也就是Macro的clock out pin到寄存器B1和B2的时钟pin之间的这一部分,这部分的时钟起点是Macro的clock out pin,所以就定义一个Macro的clock out pin为clock port的skew group,假设主时钟域的skew group叫做main_clock,使用的命令是create_ccopt_clock_tree、create_ccopt_clock_tree_spec和create_ccopt_skew_group。具体命令是:

create_ccopt_clock_tree_spec

create_ccopt_clock_tree  -name from_macro_to_c -source macro/clk_out

create_ccopt_skew_group -name from_macro_to_c  -balance_skew_groups  main_clock  

image.png

image.png

image.png

再将main_clock的时钟port到Macro的clock out pin之间的delay(假设为delay2)以clock source latency的形式标记到新创建的from_macro_to_c skew group的时钟起点(即Macro的clock out pin)上,具体命令如下:

set_ccopt_property source_latency $delay2 -clock_tree from_macro_to_c

再告诉工具长时钟树时将clock source latency考虑进去,具体命令如下:

set_ccopt_property  include_source_latency -skew_group from_macro_to_c

然后开始长寄存器B1和B2的时钟树。

结果

最终三种寄存器之间的时钟树都做平了。

image.png

END

作者:Jack Xu
文章来源:志芯

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
11276
内容数
1222
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息