日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 艾思后端實(shí)現(xiàn)

在時(shí)鐘樹(shù)的設(shè)計(jì)中,有很多方式處理分頻時(shí)鐘,常見(jiàn)的無(wú)外乎兩種模式:

  • 時(shí)鐘二分頻器(reg-clkgen)
  • 門(mén)控時(shí)鐘
二者在功能上略有不同,比較的大差異是前者可以簡(jiǎn)單的實(shí)現(xiàn)50%占空比,后者卻對(duì)功耗友好同時(shí)降低了實(shí)現(xiàn)難度。這里結(jié)合INVS在CTS的手法,一起了解一下INVS對(duì)二者的處理差異。閑言少敘,ICer GO!就后端工具而言,CTS是其三大引擎之一,在當(dāng)下設(shè)計(jì)的高工藝、高性能的背景下,CTS的重要性越來(lái)越凸顯,之前項(xiàng)目一鍵通的CTS方式,已經(jīng)越來(lái)越不能滿足日益提升的QoR訴求了。

INVS ccopt 系統(tǒng)簡(jiǎn)介

INVS在useful skew顯然具備強(qiáng)大的優(yōu)勢(shì),其中的ccopt flow,擁有靈活,高效和用戶友好等多種特性,其獨(dú)特的思維方式,給用戶在CTS階段提供了更多的選擇和漂亮的QoR數(shù)據(jù)。從SDC到ccopt系統(tǒng)轉(zhuǎn)化,讓INVS采用一種類似數(shù)字孿生(digital twins)的方式,將SDC里邊的相關(guān)命令,一一映射到ccopt系統(tǒng)中,主要來(lái)自于下列三個(gè)主命令:
  • create_ccopt_clock_tree <=> create_clock
  • create_ccopt_generated_clock_tree <=> create_gernerated_clock
  • set_ccopt_property <==> other CTS setup
通過(guò)這種轉(zhuǎn)義/隔離,巧妙的將ccopt構(gòu)建成一個(gè)CTS warpper,將CTS的實(shí)現(xiàn)和SDC進(jìn)行隔斷。這樣做的好處有以下幾點(diǎn):
  • SDC里邊的配置和設(shè)定,可以在ccopt系統(tǒng)里邊進(jìn)行修正和調(diào)整,而無(wú)需讀入CTS專用的SDC
  • CTS的配置通過(guò)導(dǎo)出可讀文件進(jìn)行抽取,繼承和維護(hù):create_ccopt_clock_tree_spec
  • ccopt_design開(kāi)始之前,可以靈活使用set_ccopt_property 命令干預(yù)ccopt的實(shí)現(xiàn)方式,而不用擔(dān)心對(duì)原生的SDC產(chǎn)生影響。
用戶可以在CTS階段,放心大膽的使用ccopt系統(tǒng)。鑒于INVS是全局useful skew策略,即使在CTS之后,用戶任然可以使用ccopt命令對(duì)CTS結(jié)構(gòu)進(jìn)行微調(diào)(modify),這樣在后續(xù)的useful skew流程中,INVS仍然會(huì)使用ccopt引擎對(duì)相關(guān)的數(shù)據(jù)進(jìn)行調(diào)整。

時(shí)鐘傳播的單調(diào)性

CTS的實(shí)現(xiàn)中,無(wú)論是ICC/ICC2還是INVS,都會(huì)強(qiáng)調(diào);unate(單調(diào)性)
  • unaet:?jiǎn)握{(diào)傳播:譬如:正向單調(diào)性的buffer,反向單調(diào)性的inveter
  • none-unate:非單調(diào)傳播:XOR,MUX,F(xiàn)F
具體解釋詳見(jiàn)博主老文;門(mén)控時(shí)鐘檢查(clock gating check)的理解和設(shè)計(jì)應(yīng)用(上)由于每一個(gè)sink(sequential leaf)的時(shí)鐘都是單沿觸發(fā)(正沿或負(fù)沿),CTS階段的重要目標(biāo)就是計(jì)算每一個(gè)sink的latency,從而對(duì)用戶的max_skew進(jìn)行收斂,所以這個(gè)傳播的單調(diào)性(unate)對(duì)CTS的影響就很明顯:可以看到,在FF1的傳播路徑上,CLK時(shí)鐘是正單調(diào)性,這樣計(jì)算CLK-> FF1’CK的路徑的時(shí)候CTS工具會(huì)只會(huì)看正沿。但是到了CLK->FF2’CK的路徑上,由于XOR的none-unate特性,CTS工具計(jì)算latency的時(shí)候需要同時(shí)關(guān)注正相關(guān)和負(fù)相關(guān)的兩種情況,在late和early的兩種corner的影響下,這個(gè)計(jì)算量會(huì)成倍的增加,同時(shí)也會(huì)對(duì)實(shí)際的clock tree做了悲觀化。因?yàn)閷?shí)際情況下:XOR的enable大概率是一個(gè)半靜態(tài)信號(hào),這個(gè)會(huì)間接提高CTS的難度。由于設(shè)計(jì)的不明確性,可以用過(guò)約束來(lái)歸類這種問(wèn)題。

時(shí)鐘二分頻器(reg-clkgen)和CG

從上述時(shí)鐘CTS實(shí)現(xiàn)的角度來(lái)看,基于寄存器的時(shí)鐘二分頻器(reg-clkgen)是典型的none-unate器件,而通常的CG則是一個(gè)典型的unate器件。所以,從時(shí)鐘樹(shù)構(gòu)建的上看,CG是一個(gè)被推薦的時(shí)鐘網(wǎng)絡(luò)結(jié)構(gòu),但時(shí)鐘二分頻器(reg-clkgen)不是的。由于CG的結(jié)構(gòu)類似下列:通常CG的尾部是一個(gè)or或者一個(gè)and,在std-lib中,這兩類門(mén)很常見(jiàn),通常會(huì)有很多種驅(qū)動(dòng)類型,這種正是CTS需要的風(fēng)格:功能單一,驅(qū)動(dòng)多樣,這個(gè)對(duì)于構(gòu)建CTS會(huì)非常友好。反觀寄存器,相較or/and,不會(huì)有這么多的選擇類型,加之延遲較大,這個(gè)也會(huì)間接影響clock latency的質(zhì)量

時(shí)鐘二分頻器的CTS實(shí)現(xiàn)

對(duì)于傳統(tǒng)的組合邏輯,CTS實(shí)現(xiàn)無(wú)非面臨兩種選擇:
  • 單調(diào)性傳播:AND,OR,CG, BUF, INV
  • 非單調(diào)性傳播:MUX、 XOR 。、
這樣的傳播的簡(jiǎn)單之處在于:由于是組合邏輯,時(shí)鐘可以一路傳播,不會(huì)被阻擋。但是對(duì)于采用寄存器實(shí)現(xiàn)的時(shí)鐘二分頻器(reg-clkgen),由于FF在CTS的傳統(tǒng)理解下是屬于一個(gè)sink器件,時(shí)鐘的傳播會(huì)自動(dòng)在sink器件截止,所以任何穿越FF的時(shí)鐘都需要用戶單獨(dú)定義。
# root clock create_clock -name CLK [get_port CLK] -period 1 -waveform {0 0.5} # generated clock create_generated_clock -name gen_clk1 -source [get_port CLK] -divided_by 2 -master_clock [get_clock CLK] [get_pin FF1/Q] 
對(duì)于上述拓?fù)浣Y(jié)構(gòu),CTS的難點(diǎn)不在于divided信號(hào),而在于gen_clk1_enable。眾所周知,從CLK向下看,F(xiàn)F1/FF_A/FF_B同屬于CLK domain,但是由于FF1的特殊性,會(huì)導(dǎo)致FF1‘D上的時(shí)序會(huì)成為一個(gè)gen_clk1時(shí)鐘路徑上的檢查點(diǎn),這個(gè)有點(diǎn)像clock gating檢查,但又不全是。對(duì)于傳統(tǒng)的CG檢查,INVS有自己獨(dú)到大處理方式。對(duì)于這類檢查,INVS提供了一個(gè)有趣的配置選項(xiàng):這個(gè)extract_clock_generator_skew_groups的選項(xiàng)是說(shuō):如果配置為true(default value),那么ccopt在創(chuàng)建clock_tree_spec的時(shí)候,除過(guò)正常的基于clock的-auto_sink模式進(jìn)行skew_group創(chuàng)建,還會(huì)基于ff_clkgen結(jié)構(gòu)的分頻時(shí)鐘(時(shí)鐘二分頻器)再獨(dú)立創(chuàng)建一個(gè)使用 _clock_gen打頭的新的skew_group,這個(gè)SG會(huì)包括這個(gè)ff_clkgen的所有fanin以及它自己,和原始的SG相比,這個(gè)SG擁有更高的優(yōu)先級(jí)。
create_ccopt_skew_group -name CLK_SG -source clk -auto_sinks create_ccopt_skew_group -name _clock_gen_CLK_FF1_SG -source clk -sinks {FF_A FF_B FF1} -rank 1 
這種處理方式需要用戶格外注意,如果用戶擁有類似下列更為復(fù)雜的拓?fù)浣Y(jié)果,INVS默認(rèn)的處理方法可能并不適用于你的設(shè)計(jì):由于這里會(huì)有下列的timing path
  • FF_A/FF_B -> FF1
  • FF_A/FF_B/FF1 -> FF3/FF4
從CTS角度而言,上述FF需要統(tǒng)一做平,如果使用了默認(rèn)的INVS處理方式,可能會(huì)產(chǎn)生意想不到的結(jié)果。如果不想使用默認(rèn)SG的處理方式,請(qǐng)將這個(gè)變量設(shè)定為false。個(gè)人理解**:從INVS而言,上述拓?fù)浣Y(jié)構(gòu)應(yīng)該是不是一個(gè)典型的設(shè)計(jì):既然已經(jīng)是ff_genclk的enable信號(hào)了,那么就應(yīng)該是一個(gè)類似半靜態(tài)信號(hào),這個(gè)不應(yīng)該是一個(gè)關(guān)鍵路徑,反言之,這個(gè)半靜態(tài)信號(hào),更應(yīng)該專注于gen_clk1的生成,而非其他用途。同樣FF1既然是一個(gè)gen_clk的定義點(diǎn),那就不應(yīng)該出現(xiàn)clk2data的情形。一個(gè)比較合理的設(shè)計(jì)應(yīng)該類似下圖:**但是,在當(dāng)今百家爭(zhēng)鳴的年代,已經(jīng)很少看到有人可以靜下心來(lái)仔仔細(xì)細(xì)的研究coding style了,這個(gè)時(shí)候還想TO,那么靈活運(yùn)用后端工具進(jìn)行補(bǔ)刀,可能是一種適應(yīng)當(dāng)下情景的變通方式吧。

【敲黑板劃重點(diǎn)】

靈活使用ccopt,而不是簡(jiǎn)單的一路回車(chē),可能會(huì)去的意想不到的收獲


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉