背景
為什么需要分段去做時(shí)鐘樹呢?因?yàn)樵谀承┣闆r下,按照傳統(tǒng)的方法讓每一個(gè)clock group單獨(dú)去balance,如果不做額外干預(yù),時(shí)鐘樹天然是做不平的。
如上圖所示,存在三種寄存器序列A、B(包括B1和B2)和C,這三種寄存器序列代表三種不同時(shí)鐘樹情景的寄存器。A是比較普遍的情況,就是時(shí)鐘樹信號(hào)通過(guò)時(shí)鐘樹單元從clock port送到寄存器的時(shí)鐘pin;C是某個(gè)Macro(硬核IP或特定子模塊)內(nèi)部的寄存器,正常情況下工具無(wú)法識(shí)別到該寄存器,也無(wú)法將寄存器C的時(shí)鐘和外部寄存器的時(shí)鐘做平;寄存器B1和B2的時(shí)鐘pin是圖中Macro通過(guò)clock feedthrough(也可以叫時(shí)鐘飛線)。
如果按默認(rèn)設(shè)置去做時(shí)鐘樹綜合,那么A和B的時(shí)鐘將會(huì)做balance;但是C的時(shí)鐘肯定做不平,因?yàn)閺腗acro的clock in pin到寄存器C的時(shí)鐘pin之間的delay不可控且沒(méi)被工具識(shí)別和考慮到。
所以為了將A、B和C的時(shí)鐘樹做平,必須采取分段長(zhǎng)時(shí)鐘樹的方法。采用兩步法,先做A和C的時(shí)鐘樹,A和C的時(shí)鐘樹做好后,就可以根據(jù)已經(jīng)長(zhǎng)好的時(shí)鐘樹上Macro的clock out pin之前的時(shí)鐘樹總延遲情況去對(duì)寄存器B的時(shí)鐘樹做針對(duì)性調(diào)整,最終就能將A、B和C的時(shí)鐘樹做平。
做寄存器A和C的時(shí)鐘樹
案例中時(shí)鐘樹使用innovus實(shí)現(xiàn)。
先將Macro的clock out pin到寄存器B1和B2之間的時(shí)鐘樹net設(shè)置為don’t touch,讓做A和C的時(shí)鐘的時(shí)候不要?jiǎng)拥紹1和B2,使用的命令是set_dont_touch_network。具體命令是:
set_dont_touch_network [get_pins B1/CK]
set_dont_touch_network [get_pins B2/CK]
再將Macro的clock in pin設(shè)為時(shí)鐘stop pin,并將clock in pin到寄存器C的時(shí)鐘pin之間的延遲(假設(shè)該值為delay1)標(biāo)定到Macro的clock in pin上,這樣工具就能將寄存器A和C的時(shí)鐘做平。使用的命令是set_ccopt_property。具體命令是:
set_ccopt_property sink_type stop -pin macro/clk_in
set_ccopt_property insertion_delay -pin macro/clk_in $ delay1
然后開始做寄存器A和寄存器C的時(shí)鐘樹。
做寄存器B的時(shí)鐘樹
首先給寄存器B1和B2創(chuàng)建單獨(dú)的skew group,因?yàn)檫@個(gè)時(shí)鐘不是全局時(shí)鐘樹都要去做,而是單獨(dú)去做寄存器B1和B2;也就是Macro的clock out pin到寄存器B1和B2的時(shí)鐘pin之間的這一部分,這部分的時(shí)鐘起點(diǎn)是Macro的clock out pin,所以就定義一個(gè)Macro的clock out pin為clock port的skew group,假設(shè)主時(shí)鐘域的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
再將main_clock的時(shí)鐘port到Macro的clock out pin之間的delay(假設(shè)為delay2)以clock source latency的形式標(biāo)記到新創(chuàng)建的from_macro_to_c skew group的時(shí)鐘起點(diǎn)(即Macro的clock out pin)上,具體命令如下:
set_ccopt_property source_latency $delay2 -clock_tree from_macro_to_c
再告訴工具長(zhǎng)時(shí)鐘樹時(shí)將clock source latency考慮進(jìn)去,具體命令如下:
set_ccopt_property include_source_latency -skew_group from_macro_to_c
然后開始長(zhǎng)寄存器B1和B2的時(shí)鐘樹。
結(jié)果
最終三種寄存器之間的時(shí)鐘樹都做平了。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124528 -
IC設(shè)計(jì)
+關(guān)注
關(guān)注
38文章
1360瀏覽量
105773 -
時(shí)鐘樹
+關(guān)注
關(guān)注
0文章
56瀏覽量
11045 -
數(shù)字IC
+關(guān)注
關(guān)注
1文章
38瀏覽量
12975
發(fā)布評(píng)論請(qǐng)先 登錄
時(shí)鐘樹優(yōu)化與有用時(shí)鐘延遲

射頻識(shí)別芯片設(shè)計(jì)中時(shí)鐘樹功耗的優(yōu)化與實(shí)現(xiàn)

#硬聲創(chuàng)作季 #IC設(shè)計(jì) 數(shù)字IC設(shè)計(jì)-47 ICC-時(shí)鐘樹綜合-1

#硬聲創(chuàng)作季 #IC設(shè)計(jì) 數(shù)字IC設(shè)計(jì)-47 ICC-時(shí)鐘樹綜合-2

#硬聲創(chuàng)作季 #IC設(shè)計(jì) 數(shù)字IC設(shè)計(jì)-47 ICC-時(shí)鐘樹綜合-4
系統(tǒng)框圖和時(shí)鐘樹
multi-tap的FlexHtree自動(dòng)化時(shí)鐘樹綜合流程

STM32時(shí)鐘樹

評(píng)價(jià)時(shí)鐘樹質(zhì)量的方法
大型多GHz時(shí)鐘樹中的時(shí)鐘偏斜

詳解數(shù)字設(shè)計(jì)中的時(shí)鐘與約束

時(shí)鐘樹綜合CTS階段如何去降低Latency和Skew

大型多GHz時(shí)鐘樹中的相位偏差設(shè)計(jì)

評(píng)論