時(shí)鐘的定義 時(shí)鐘是同步工作系統(tǒng)的同步節(jié)拍,。它是用來(lái)指揮保障SOC中各種功能模塊,,比如CPU,GPU,,DRAM控制器,,GPIO等的正常工作。那么何為同步工作系統(tǒng)或者同步電路,?概括起來(lái)就是不同源一定異步,,同源可以不是同步(同源大部分是同步)。 史上最全的數(shù)字IC后端設(shè)計(jì)實(shí)現(xiàn)培訓(xùn)教程(整理版) 2019年數(shù)字IC后端校招筆試題目(附數(shù)字后端培訓(xùn)視頻教程) 時(shí)鐘源 無(wú)論你是從事數(shù)字IC前端或者是從事IC后端工作,,你都需要搞清楚,,芯片中的時(shí)鐘是如何獲取以及如何供應(yīng)給各個(gè)功能模塊。
這種情況比較少見,。由于SOC系統(tǒng)中不同功能模塊工作的頻率不一樣,,因此從外部直接拉時(shí)鐘信號(hào)進(jìn)芯片,不具備可行性,。對(duì)于某些特別簡(jiǎn)單的ASIC芯片,,可能有機(jī)會(huì)用到這種方案。
這種方案是從外部晶振引入IO,,與內(nèi)部時(shí)鐘發(fā)生器產(chǎn)生一個(gè)24MHz時(shí)鐘信號(hào),,然后供給各種功能模塊。
這種時(shí)鐘獲取方式是目前SOC芯片設(shè)計(jì)實(shí)現(xiàn)中普遍采用的時(shí)鐘產(chǎn)生方案,。這個(gè)方案的整體思路是先從晶振,,時(shí)鐘發(fā)生器產(chǎn)生一個(gè)24MHz,再經(jīng)過(guò)PLL產(chǎn)生倍頻時(shí)鐘(高頻時(shí)鐘),,最后再經(jīng)過(guò)分頻電路產(chǎn)生各種頻點(diǎn)的時(shí)鐘供給各個(gè)功能模塊,。說(shuō)到這里,吾愛IC社區(qū)小編留一個(gè)思考題給大家,。為何不直接從外部晶振產(chǎn)生高頻時(shí)鐘,,供給SOC使用呢? SOC系統(tǒng)中時(shí)鐘系統(tǒng)結(jié)構(gòu) 無(wú)論是多大規(guī)模的SOC芯片,,其時(shí)鐘系統(tǒng)結(jié)構(gòu)都與下圖所示類似,。在低功耗設(shè)計(jì)實(shí)現(xiàn)中,還需要考慮采用clock gating技術(shù),,即通過(guò)ICG來(lái)控制時(shí)鐘信號(hào)是否傳輸?shù)綄?duì)應(yīng)功能模塊,。圖中的DIV為分頻器,它可以是整數(shù)分頻器,也可以是小數(shù)分頻器,。 淺談數(shù)字IC低功耗設(shè)計(jì)的若干種低功耗設(shè)計(jì)方案 如果碰到PLL倍頻出來(lái)的時(shí)鐘頻率經(jīng)過(guò)整數(shù)分頻器后無(wú)法獲得某個(gè)模塊的工作頻率,,則需要采用小數(shù)分頻器。小數(shù)分頻器的前端設(shè)計(jì)相比整數(shù)分頻要復(fù)雜點(diǎn),,但是從數(shù)字IC后端實(shí)現(xiàn)的角度看,,沒(méi)有什么大區(qū)別(數(shù)字IC設(shè)計(jì)面試經(jīng)常會(huì)問(wèn)到小數(shù)分頻器的實(shí)現(xiàn)方法)。
從本案例時(shí)鐘結(jié)構(gòu)圖中,,得知該SOC芯片采用了四個(gè)PLL,,分別是APLL,MPLL,,EPLL和VPLL,。由于PLL的面積還比較大,我們?cè)谛酒挟?dāng)然是使用的越少越好,,畢竟面積就是白花花的銀子,。那么,為了節(jié)省芯片成本,,在時(shí)鐘結(jié)構(gòu)規(guī)劃階段就需要先對(duì)整個(gè)芯片中的各大功能模塊的時(shí)鐘頻率需求進(jìn)行統(tǒng)計(jì),,設(shè)計(jì)分頻器,最后計(jì)算出PLL的數(shù)量,。
在數(shù)字后端實(shí)現(xiàn)中,,PLL的擺放位置直接決定了時(shí)鐘樹的長(zhǎng)度---clock tree latency。PLL位置的擺放需要先理解各路時(shí)鐘的復(fù)用關(guān)系,,PLL倍頻后的時(shí)鐘都要供給哪些功能模塊以及這些功能模塊的位置等,。我們都知道衡量時(shí)鐘樹質(zhì)量的兩大指標(biāo)是clock tree latency 和clock skew。如果PLL位置不合理,,很有可能會(huì)把整個(gè)芯片的時(shí)鐘樹拖得很長(zhǎng),。 時(shí)鐘樹綜合(clock tree synthesis)基礎(chǔ)篇 數(shù)字后端設(shè)計(jì)實(shí)現(xiàn)之時(shí)鐘樹綜合實(shí)踐篇 如果時(shí)鐘樹長(zhǎng)度太長(zhǎng),,有哪些弊端呢,?這個(gè)問(wèn)題的答案,小編已經(jīng)在公眾號(hào)和知識(shí)星球上分享過(guò)很多次了,,如果你還不是很懂,,可以再翻翻以前的文章或者知識(shí)星球問(wèn)答。 一網(wǎng)打盡時(shí)鐘樹綜合Clock Skew
很多數(shù)字IC后端工程師都覺得做時(shí)鐘樹綜合只要設(shè)置好參數(shù),,就可以讓工具自己build clock tree,。如果你是這么認(rèn)為的,有兩種可能性,。一種是你們的時(shí)鐘設(shè)計(jì)很簡(jiǎn)單,,可能就一兩個(gè)時(shí)鐘。另外一種是你們的設(shè)計(jì)timing要求很松,,你們壓根就沒(méi)關(guān)心過(guò)時(shí)鐘的長(zhǎng)度,。 合理的時(shí)鐘結(jié)構(gòu)能夠加速Timing收斂(時(shí)鐘樹綜合中級(jí)篇) 一般情況下,,中等規(guī)模及以上的SOC芯片的時(shí)鐘樹綜合,都是需要編寫時(shí)鐘樹約束文件,。因?yàn)闀r(shí)鐘太多了之后,,工具處理起來(lái)比較費(fèi)勁,特別是當(dāng)一堆時(shí)鐘進(jìn)行mux操作后,,工具經(jīng)常還會(huì)把tree做的很長(zhǎng),。工具之所以做起來(lái)費(fèi)勁,之所以做不好tree,,主要原因還是時(shí)鐘結(jié)構(gòu)相對(duì)復(fù)雜,,其復(fù)雜程度已經(jīng)超出它的能力范圍了。 如果我們能夠?qū)?strong>時(shí)鐘結(jié)構(gòu)進(jìn)行拆分,,把時(shí)鐘結(jié)構(gòu)很清晰地告訴工具,,那么它還是能夠做的非常漂亮的。當(dāng)然這個(gè)前提是你要理清楚整個(gè)芯片的時(shí)鐘結(jié)構(gòu),。 畫時(shí)鐘結(jié)構(gòu)圖和寫時(shí)鐘約束文件都是數(shù)字IC后端工程師必備的一項(xiàng)工作技能,,當(dāng)然也是一項(xiàng)非常核心技能。如果這項(xiàng)技能能夠很好的掌握,,那么整個(gè)數(shù)字IC后端設(shè)計(jì)實(shí)現(xiàn),,還有比這更難的嗎? 當(dāng)你拿到一個(gè)design,,你應(yīng)該要能畫出像上圖所示的時(shí)鐘結(jié)構(gòu)圖,。有了這個(gè)圖之后,寫個(gè)時(shí)鐘約束文件,,那是水到渠成的事情,。 這里結(jié)合本文的案例,簡(jiǎn)單解析下如何寫時(shí)鐘約束文件,。 首先,,可以把整個(gè)芯片的時(shí)鐘路徑分為三部分。第一部分是晶振—-> PLL,,第二部分是PLL—-> CLOCK GEN,,第三部分是分頻器輸出——-> 各個(gè)功能模塊。 其次,,搞清楚CLOCK Gen模塊是用來(lái)產(chǎn)生各種分頻時(shí)鐘信號(hào)的,,它本身并不會(huì)直接與其他邏輯進(jìn)行一個(gè)交互。因此,,該模塊內(nèi)的寄存器都和別人是異步的,。如果把CLOCK GEN內(nèi)部的寄存器和各功能模塊的寄存器進(jìn)行同步,會(huì)有什么后果呢?另外各個(gè)PLL出來(lái)的時(shí)鐘一定是異步的,。 最后,,再整理下各個(gè)時(shí)鐘路徑的終點(diǎn)和clock exception,比如floating pin,,exclude pin,,non-stop pin,斷開一些不需要穿過(guò)mux的時(shí)鐘等等,。 如何成為時(shí)鐘樹綜合專家,?原來(lái)你也可以!
|
|
來(lái)自: 雨在路上 > 《時(shí)鐘樹綜合》