搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...
本文轉(zhuǎn)自:自己的微信公眾號(hào)《集成電路設(shè)計(jì)及EDA教程》
《憶往昔--集成門控時(shí)鐘技術(shù)的前世--分離門控時(shí)鐘技術(shù)》
多種門控時(shí)鐘實(shí)現(xiàn)方案:
Design Compiler中已經(jīng)集成了可以進(jìn)行低功耗設(shè)計(jì)的Power Compiler,它有多種門控時(shí)鐘實(shí)現(xiàn)方案(分離門控時(shí)鐘、集成門控時(shí)鐘、多級(jí)門控時(shí)鐘、層次化門控時(shí)鐘)。
如何選擇?
首先需要看自己所用的標(biāo)準(zhǔn)單元庫中是否有集成門控時(shí)鐘(Integrated Clock Gating, ICG)單元,如果有的話最好選擇使用ICG而不用分離門控時(shí)鐘單元,因?yàn)樗阅懿蝗鏘CG,且在后端實(shí)現(xiàn)中需要一些人為的干預(yù)(需要通過設(shè)置net weight將Latch和與非門/或非門靠近放置),較麻煩。無論是分離門控時(shí)鐘單元還是ICG,他們都可以被用來實(shí)現(xiàn)多級(jí)以及層次化門控時(shí)鐘。
如果標(biāo)準(zhǔn)單元庫中沒有ICG,那么我們只能采用分離門控時(shí)鐘技術(shù)。
在邏輯綜合階段,我們可以通過set_clock_gating_style命令來設(shè)置選擇采用哪種方案,下面將對(duì)幾種方式分別做以介紹。
1.分離門控時(shí)鐘(Discrete Clock Gating)
Power Compiler在實(shí)現(xiàn)CG時(shí),一般會(huì)默認(rèn)采用分離門控時(shí)鐘技術(shù)。
我們采用分離門控時(shí)鐘技術(shù)應(yīng)該只有一種情況,那就是采用的工藝比較特殊(如BiCMOS)或者工藝比較老,標(biāo)準(zhǔn)單元庫中沒有ICG,但是又想降低動(dòng)態(tài)功耗,那只能使用分離門控時(shí)鐘技術(shù)了。
它有兩種實(shí)現(xiàn)方式,即基于鎖存器的CG和不用鎖存器的CG,一般默認(rèn)情況下軟件會(huì)選擇前者。基于鎖存器的CG單元的結(jié)構(gòu)及波形如圖1所示,它由一個(gè)鎖存器和一個(gè)與門(或者或門、與非門、或非門)構(gòu)成。不用鎖存器的CG單元的結(jié)構(gòu)如圖2所示,它由一個(gè)簡(jiǎn)單的與門(或者或門、與非門、或非門)構(gòu)成。在性能上,前者與后者相比有很大的優(yōu)勢(shì),這可以在它們相應(yīng)的波形圖中看出。因?yàn)楫?dāng)EN信號(hào)不穩(wěn)定時(shí),不用鎖存器的CG單元會(huì)在CG單元的輸出端形成毛刺,從而影響其后的寄存器組,而基于鎖存器的CG單元利用鎖存器來采樣EN信號(hào),達(dá)到與CLK同步的效果,所以輸出結(jié)果會(huì)非常穩(wěn)定。
圖1?基于鎖存器的CG單元的結(jié)構(gòu)及波形
圖2?不用鎖存器的CG單元的結(jié)構(gòu)及波形
分離門控時(shí)鐘的邏輯綜合實(shí)現(xiàn):
如果要在設(shè)計(jì)中實(shí)現(xiàn)基于鎖存器的分離門控時(shí)鐘,則需要在Design(Power) Compiler進(jìn)行邏輯綜合前先選擇門控時(shí)鐘單元的類型:
采用基于鎖存器的CG單元:
set_clock_gating_style -sequential_cell latch
而不用鎖存器的CG的命令為:
set_clock_gating_style -sequential_cell none
同時(shí)我們還需要對(duì)CG的對(duì)象最低位寬和最大扇出進(jìn)行控制(具體原因見前篇推文),因?yàn)榉蛛x門控時(shí)鐘單元里面含有鎖存器和與門等單元,不像集成門控時(shí)鐘單元,它的時(shí)序要求信息寫在了lib庫里面,所以還得手動(dòng)指定setup和hold。
set_clock_gating_style -sequential_cell latch \
-max_fanout 32 \
-minimum_bitwidth 4 \
-setup 3 \
-hold 0.3
老版的DC用insert_clock_gating命令插入門控時(shí)鐘單元,之后用compile進(jìn)行編譯;
新版的DC直接用compile -gate_clcok或者compile_ultra -gate_clock直接在編譯過程中就能實(shí)現(xiàn),更加簡(jiǎn)單。
編譯完成后報(bào)告實(shí)現(xiàn)的效果:
report_clock_gating > ./log/clock_gating.ckgt
生成的報(bào)告如圖3所示:
圖3??生成的門控時(shí)鐘報(bào)告
分離門控時(shí)鐘技術(shù)的優(yōu)點(diǎn):
上篇推文:
介紹過了,這里就不說了,著重說下它的缺點(diǎn)。
分離門控時(shí)鐘技術(shù)的缺點(diǎn):
一般插入分離門控時(shí)鐘單元可能會(huì)引起時(shí)鐘偏斜(Clock Skew)問題,進(jìn)而會(huì)導(dǎo)致輸出的時(shí)鐘信號(hào)中有毛刺。
如圖4所示,時(shí)鐘CLK分兩路:
圖4?分離門控時(shí)鐘的Skew問題
一路送到比較近的鎖存器時(shí)鐘輸入端CLK@A,它去采集使能信號(hào)EN,鎖存器在CLK@A為0時(shí)透明,為1時(shí)鎖存。經(jīng)過一個(gè)鎖存器的延遲(CLK to Q latch delay)到EN1。
另一路時(shí)鐘送到較遠(yuǎn)的與門一個(gè)輸入端B,其時(shí)鐘相比于CLK@A而言,有一段延遲,即CLK@B與CLK@A之間有Skew,Skew小于latch的delay。該Skew很可能會(huì)產(chǎn)生一些毛刺(毛刺的寬度大約為Skew-Delay)。
解決方法有兩種:
1、采用后邊將要介紹的集成門控時(shí)鐘技術(shù)(ICG);
2、在布局階段設(shè)置net weight將與門和鎖存器盡量靠近放置(推文后邊有介紹)。
分離門控時(shí)鐘后端物理實(shí)現(xiàn)要點(diǎn):
在后端設(shè)計(jì)中除了前面的布局布線流程之外,還要注意以下幾點(diǎn):
(注:由于本筆記是本科畢設(shè)階段基于Astro工具來做的,因此下面的講解都基于Astro工具,ICC的話應(yīng)該類似。)
1.布局前的準(zhǔn)備
在布局階段,需要將插入的CG單元中的鎖存器和與門(或者與非門)盡量靠近放置,這需要完成布局前的準(zhǔn)備工作。
首先根據(jù)CG Cell的信息編寫gatedclock.nets文件,增大鎖存器和與門之間的連線的netWeight。然后在Astro中加載完.sdc時(shí)序約束文件并進(jìn)行時(shí)序分析后、布局階段前,以導(dǎo)入tdf文件的形式導(dǎo)入該gatedclock.nets文件來實(shí)現(xiàn)對(duì)鎖存器和與門之間間距的約束,后面的布局便會(huì)自動(dòng)按照此文件來將兩者盡量靠近放置。
根據(jù)其中一個(gè)CG Cell的信息編寫的命令如下:
netWeight "ENL" 255 255
netWeight "dan/clk_gate_dout_reg/net456"255 255
以導(dǎo)入tdf文件的形式導(dǎo)入gatedclock.nets文件后,開始布局操作后邊給出Astro中的布局結(jié)果。
2.分離門控時(shí)鐘單元布局結(jié)果
如圖5所示為Astro中布局完畢后的效果。
圖5 ?Astro中與門和鎖存器靠近放置
從圖中兩個(gè)單元的FRAM View的位置關(guān)系可以看出,Cell名為"dan/clk_gate_dout_reg/main_gate"的AND2HSV2.FRAM的與門和名為"dan/clk_gate_dout_reg/latch"的LALHSV1.FRAM的鎖存器是靠近放置的,成功達(dá)到了預(yù)期的效果。
3.?時(shí)鐘樹綜合(CTS)之前的相關(guān)設(shè)置:
CTS之前,需要讓時(shí)鐘clk穿過鎖存器,而不能讓軟件將鎖存器的clk端視為一個(gè)sync pin(時(shí)序單元的時(shí)鐘端口,這些Pin上的Latency工具都會(huì)自動(dòng)進(jìn)行Balance)。因?yàn)锳stro默認(rèn)會(huì)將所有時(shí)序單元(如鎖存器和觸發(fā)器)和宏單元的時(shí)鐘端口視為sync pin,所以需要在CTS之前去除CG單元中l(wèi)atch時(shí)鐘端的stop屬性,否則時(shí)鐘樹綜合的時(shí)候會(huì)插入倒向器和緩沖器來平衡電路中的Skew,這會(huì)嚴(yán)重影響門控時(shí)鐘的功能,導(dǎo)致到達(dá)CG中與門兩輸入端的信號(hào)不滿足建立時(shí)間或保持時(shí)間的要求,從而會(huì)導(dǎo)致輸出端產(chǎn)生毛刺。
這可以用astSetClockNonSop命令來實(shí)現(xiàn)。現(xiàn)仍以前面圖中顯示的鎖存器為例講解其相應(yīng)的設(shè)置命令:
astSetClockNonStop "dan/clk_gate_dout_reg/latch"#t
當(dāng)設(shè)計(jì)中插入的CG Cell非常多時(shí),可以將這些命令編寫成一個(gè)腳本文件,然后以命令load加載進(jìn)來。
4. 后續(xù)操作:
后續(xù)的操作就是常規(guī)的NDR繞時(shí)鐘線和non-NDR繞普通信號(hào)線,沒什么特殊的,可以參照ICC的流程。
結(jié)束語:
希望通過分離門控時(shí)鐘技術(shù)大家能對(duì)CTS中門控時(shí)鐘單元的stop pin和nonstop有清楚的認(rèn)識(shí)。在最新的集成門控時(shí)鐘實(shí)現(xiàn)方案中,所有這些問題都變得更加簡(jiǎn)單了,基本上不需要任何特殊的設(shè)置,EDA軟件都能自動(dòng)處理。在后續(xù)的推文中會(huì)介紹。
門控時(shí)鐘相關(guān)推文:
低功耗相關(guān)推文:
網(wǎng)易云課堂視頻課程
鏈接:https://study.163.com/course/introduction/1005909004.htm
《Calibre DRC教程-一鍵搞定DRC》
《Calibredrv教程-提高流程自動(dòng)化》
《搭建IC設(shè)計(jì)的EDA虛擬機(jī)/服務(wù)器》
總結(jié)
以上是生活随笔為你收集整理的搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 速达服务器账套定期维护么,速达软件常见操
- 下一篇: 换发动机不备案啥后果交警可以扣车吗(换发