- 1、什么是天線效應?怎么修復?
- 2、 請說一下memory的擺放規則??
- 3、 Place之后有timing violation,應該怎么辦?
- 4、 后端的時序約束相對於綜合版本需要修改嗎?
- 4、 APR之前需要做什么樣的檢查?
- 5、做floorplan時要考慮哪些因素?
- 5、route_opt執行哪些步驟?
- 6、APR每一步都干什么?
- 7、在CTS后,如果ICG放在離clock root很近(clock insertion delay很短)的地方,為什么enable信號的setup不容易收斂?
- 8、數字樹為什么需要balance?
- 9、什么是閂鎖效應,如何解決?
- 10、寫個腳本統計人名
- 11、PVT全稱是什么?如何影響我們的芯片
- 12、STA和動態仿真的區別?
- 13、STA在什么階段做,各個階段的STA都有什么區別?
- 14、如何解決x-talk?
- 15、如何設計PAD Ring?
- 16、分析X-talk后都輸出哪些報告和結果?如何利用這些結果改善設計?
- 17、設計的哪些地方容易出現IR-drop的問題?
- 18、什么叫克隆(cloning)和緩沖(buffering),什么情況下用到這2種技術?
- 19、大扇出net的buffer tree和CTS在時序和做法上的區別?
- 20、LEF是什么?與GDS的區別是什么?
- 21、對標准單元所說的9 track和12track是什么意思?(同一種工藝下)這兩種單元有什么區別?
- 22、 時鍾走線一般用那層金屬?
- 23、設置虛擬時鍾的作用?
- 24、什么是ESD?在什么地方需要插入ESD 電路?
- 25、DFM包含什么?
- 26、怎么增強FloorPlan和Placement的相關性?
- 27、ICC是怎么計算Congestion的?怎么分析和解決Congestion?
- 28、怎么分析IR-drop?
- 29、在FloorPlan階段如何去優化timing?
- 30、DC-T怎么做?
上海幾大外企數字后端PRAPR面試終極資料!!你懂的!! - 道客巴巴:https://www.doc88.com/p-7408979805181.html
數字后端面試問題:https://blog.csdn.net/mikiah/article/details/7929669
1、什么是天線效應?怎么修復?
在芯片生產過程中,暴露的金屬線或者多晶硅(polysilicon)等導體,就象是一根根天線,會收集電荷(如等離子刻蝕產生的帶電粒子)導致電位升高。天線越長,收集的電荷也就越多,電壓就越高。若這片導體碰巧只接了MOS 的柵,那么高電壓就可能把薄柵氧化層擊穿,使電路失效,這種現象我們稱之為“天線效應”。
跳線,而且最好是往上跳線
增加對地反向偏置diode,
在信號線上加一組buffer,這個方法既可以規避antena,也可以為信號增加驅動能力
2、 請說一下memory的擺放規則??
調整Macro的位置、擺放方向,注意出Pin的方向,為出pin的區域留出足夠的空間,避免產生狹窄的通道。另外當多個Memory共用相同的數據線或者地址線時,可以調整它們的位置,使它們的Pin對齊,這樣連線會比較規整,對Congestion有幫助。
3、 Place之后有timing violation,應該怎么辦?
出現timing violation后的第一步是分析那條path,找出違反的原因,然后才是解決辦法。造成timing violation的原因很多,隨便列幾個常見的,
(a)clock tree不平衡:CTS的定義有錯誤;不合理的FF位置,比如,放在了一個很細很長的通道中。利用useful skew消除setup違反
(b)起始FF與終點FF的距離太長:用group把它們拉近
(c)xtalk的干擾:加大線間距離,不要用infinit timing window算xtalk
(d)detour走線造成的大的延遲:解決congestion問題
(e)fanout太大:忘記set_max_fanout,或者設定不合理,或者對某些net set_dont_touch了
(f)單元的驅動能力太小:upsizeing cell,去掉大驅動能力cell的dont_use屬性,檢查是否局部placement太密,沒有空間sizeup了;或者換閾值,HVT-SVT-LVT
(g)hold timing violation與setup violation同時存在,工具無法做了。這種情況多半是SDC的問題,很少是真的,除非那是一個非常特殊的IO timing
后端修timing的一些手段:
setup https://zhuanlan.zhihu.com/p/32713278
hold https://zhuanlan.zhihu.com/p/34254237
4、 后端的時序約束相對於綜合版本需要修改嗎?
有時需要,
如果綜合時使用了過小的clock period,要還原回來
可以去掉SDC里面的wire load, operation condition, ideal net, max area
有些為綜合而設置的dont_touch, dont_use
有些為綜合而設置的clock latency
4、 APR之前需要做什么樣的檢查?
檢查所有庫是否一致,版本是否一樣,使用單位是否一樣,是否有重名
用zero wire load model 來 report timing,結果應該和同樣條件下DC/RC的結果非常一致
check timing 保證所有的單元都有約束
check design,不能看到任何input懸空,不能有3態門以外的ouput短路
5、做floorplan時要考慮哪些因素?
IO的排放順序
power和IR-drop
模擬信號與數字信號的隔離
內部數據的流向
macro的面積和連接
critical timing模塊的距離
congestion模塊的走線資源
5、route_opt執行哪些步驟?
(a)Global Routing
GR將net分配給特定的金屬層和global routing cells(Gcells),這一步沒有實際布線
(b)Track Assignment
TA將每條net分配到特定的track,並且布下實際的金屬線,TA不檢查或遵守物理設計規則
(c)Detailed Routing
DR fix物理設計規則違規
6、APR每一步都干什么?
place之后,只優化setup。使用粗糙的RC抽取,global route
CTS之后,可以只優化setup,也可以優化setup和hold。使用粗糙的RC抽取,global route,如果clock net 已經route過了,clock就用detail route的結果。 時鍾走線要double width和double space,高速(>500MHz)時鍾要shielding
route之后,要優化setup和hold
7、在CTS后,如果ICG放在離clock root很近(clock insertion delay很短)的地方,為什么enable信號的setup不容易收斂?
因為一般enable信號來自某個FF,那個FF是clock tree上的一個葉子節點,那么到FF的clock path就是整個clock tree的delay(假設skew很小),而那個ICG的clock path不足一個clock tree的delay,當然就容易出現setup的違法了。也就是launching path太長, capture path只是clock path的部分(因為icg)的原因造成的,
這也就是icg 放的位置的tradeoff問題,
放的前面(high level), clock gating的效果好,可以關斷更多的flops, 但是setup timing難收斂
放在后面(low level) , timing好收斂, gating效果一般
一般都是有多級ICG,可以控制各個級別的gating, tradeoff一下
icg 時鍾⻔控單元,是 clock tree 的⼀部分。icg 的 clk pin 在路徑中默認為 non-stop pin (ignore pin),即不會和其他 sink reg 或者 ram 的 clk pin 做 balance。 因此, 從 icg 的 Q pin 到 sink reg/ram 的clk pin 之間的延時, 就成為了 icg 和 reg/ram 之間天然存在的 skew。 極易導致 icg 的 setup 問題。⽽在 cts 之前, icg ⽆法被⼯具看到, 因此這部分延時在⼯具做 timing 分析時候會被忽略。 所以reg2icg 或者 ram2icg 的路徑優化過於樂觀, 導致 datapath 很⻓。 當后續 cts 看到 icg 之后, launch clock + datapath更⻓,對setup⾮常不利且很難修掉。因此,place階段需要對icg進⾏overconstrain,引導⼯具考慮實際存在的 clock tree delay, 將 datapath 做短。
做法是在 icg 的 clk pin 上進⾏設置⼀段負的延時(set_clock_latency), ⽬的是告訴⼯具, 這邊實際存在⼀段延時, 需要在 timing 分析時候在 capture 端加上⼀個負延時, 使得 setup 約束更緊,從⽽把 datapath 做短。在 place 之后, 這段 latency 需要 remove 掉, ⼯具會使⽤實際的 clock tree 來進⾏優化。對於 place 階段的, icg overconstrain 來說, 對 reg2icg 和 ram2icg 等 to icg 的路徑⽣效, 其他類似 reg2reg 的路徑, 實際上 launch 和 capture 上的 overconstrain 會抵消掉, 因此沒有影響。
8、數字樹為什么需要balance?
對於快速設計,時鍾樹的skew和latency影響時序收斂、功耗和面積。balance 可以使得timing收斂簡單些
對於慢速設計,時鍾樹的skew和latency對時序收斂的影響重要性下降。但是對於skew大的時鍾樹,工具修復時序會增加更多的面積和功耗。創造一個skew小的時鍾樹,雖然看似在時鍾樹上多用了buffer,但是會減少在修復時序問題時需要的buffer
所以,一個balance對於時序收斂、面積和功耗都是有好處的。
除了PPA(performance、power、area)之外,時鍾樹還應該robust。即所謂設計中的時鍾樹在任意設計需求的corner下都能滿足時序。這點對提高良率的意義重大。
考慮OCV等因素后,對稱使得時鍾樹更加強壯。到達每個Reg的時鍾路徑拓撲結構、級數和Inverter/Buf都一樣是最理想的。(不考慮usefull skew的需求)
使用專用的、較少的Inverter/Buf也可以降低OCV對時鍾樹魯棒性的影響
9、什么是閂鎖效應,如何解決?
閂鎖效應是CMOS工藝所特有的寄生效應,嚴重會導致電路的失效,甚至燒毀芯片。閂鎖效應是由NMOS的有源區、P襯底、N阱、PMOS的有源區構成的n-p-n-p結構產生的,當其中一個三極管正偏時,就會構成正反饋形成閂鎖。避免閂鎖的方法就是要減小襯底和N阱的寄生電阻,使寄生的三極管不會處於正偏狀態。
10、寫個腳本統計人名
11、PVT全稱是什么?如何影響我們的芯片
Process: FF,FNSP,TT,SNFP,SS
Voltage: 電壓降低,延時變大
Tenperature: 具有溫度反轉效應,工藝在90nm以上的時候,隨着溫度的升高,delay增大,所以worst corner是PVTmax,但是65nm以下,隨着溫度的降低,delay也會增大,worst corner可能是PVTmax,也可能是PVTmin,這就是溫度反轉效應(Temperature Inversion Effect)
12、STA和動態仿真的區別?
第一點是激勵波形,STA是不需要的激勵波形的,但是需要SDC(Synopsys Design ConstrAInt,時序約束), 而時序仿真時嚴重依賴激勵波形的;第二點是完整度,STA能夠對數字電路中所有的時序路徑進行全面的檢查,而時序仿真在覆蓋率上有一定限制;第三點是效率,STA的比較簡單,速度更快,而生成仿真需要的激勵,建立仿真環境可能費時費力;第四點是魯棒性,STA能夠考慮到電路中串擾噪聲以及OCV(On Chip Violation, 片上偏差)的影響,提高芯片制成后的良率,而時序仿真做不到這一點。
13、STA在什么階段做,各個階段的STA都有什么區別?
階段 | place | cts | route |
---|---|---|---|
clock設置 | ideal clock | propagated clock | propagated clock |
clock uncertainty -max | skew+jitter+margin | jitter+margin | jitter+margin |
clock uncertainty -min | skew+margin | margin | margin |
關注點 | setup | setup+hold | setup+hold |
14、如何解決x-talk?
1)upsize victim net driver, downsize aggressor net driver
2)increase wire space, shielding, change layer,change wire width
3)insert butter in victim net
能答出以上3條的,在工作中已經基本夠用,但是還有兩個不常用到的,是AMD的一個大牛告訴我的。
4)把與victim net相連的輸入端改成Hi-Vth的單元
5)改變信號的timing window。這個不易做到,但是也是解決方法
15、如何設計PAD Ring?
大的流程是:
1)根據系統(其他芯片的)要求,芯片內部的floorplan,決定信號PAD的位置
2)計算出power PAD的個數,插入到信號PAD里面
3)加其他的PAD,比如IO filler,powercut,power on control,corner PAD,ESD等
細節可以包括:
1)如何計算core power PAD:估算corepower,再加50%,算出電流,除以每個core power IO的最大電流,就是大致的PAD個數。插入到信號PAD ring后,還要再計算powerEM,防止一根電源線上的電流過大。
2)如何計算IO powerPAD:從信號IO的功耗算起,同時計算SSO,取2個結果里面較大的
3)在什么地方插入powercut:不同的core電壓和不同的IO電壓之間,power island之間,數字和模擬電源之間。
4)power on control PAD,一般每個IOring需要一個
5)ESD一般要加在每個不同的電源之間
16、分析X-talk后都輸出哪些報告和結果?如何利用這些結果改善設計?
X-talk的分析結果中,至少要包含X-talk glitch和X-talk delay 的報告和數據,
可以把glitch報告讀回到P&Rtool里面,讓tool自動解決這些問題,也可以手動
X-talk delay就是incrementaldelay,反標回網表中以后,再做一次時序優化
17、設計的哪些地方容易出現IR-drop的問題?
1)從電源布線的角度看,那些遠離電源端的地方,布線少的地方,比如wire bond芯片的中間,flip chip的四角
2)從switching activity的角度看,toggle rate高並且celldensiy高的地方IRdrop大,頻率高的地方動態IR drop大
18、什么叫克隆(cloning)和緩沖(buffering),什么情況下用到這2種技術?
cloning:有多個sink的情況下,不改變邏輯功能把當前cell復制一份,分別驅動下一級的cell,這樣可以減少當前單元的負載,從而獲得更好的時序,缺點是會增加上一級的負載
buffering:不改變信號的情況下對信號再生,提高它的驅動能力,通常是兩級反相器構成,可以提高電路的運行速度,有時也用來當延時單元,特點是不會增加上一級的負載
在多個sink的時序都比較緊的情況下適合用cloning,如果sink對timing的要求區別挺大的,一部分時序較緊的由上一級直接驅動,剩下的可以加一級buffer后驅動
19、大扇出net的buffer tree和CTS在時序和做法上的區別?
buffer tree和clocktree的共同點是它們都是解決high fanout net的問題,只不過要求不同而已
buffer tree要求滿足maxtrans/fanout/cap,有時還要滿足setup/hold timing
clocktree不但要滿足上面的所有要求,還有skew,max/min latency的要求
20、LEF是什么?與GDS的區別是什么?
LEF是一種簡化版的GDS,它只包括size和metal層有關的信息,比如pin,blockage等,其他baselayer的東西只在GDS里面可以看到。
同時LEF還有一些GDS里面沒有的信息,比如,metal的R,C,routing and placement rule等
LEF是一個文本文件,可以修改編輯。GDS是二進制文件,比較難修改
21、對標准單元所說的9 track和12track是什么意思?(同一種工藝下)這兩種單元有什么區別?
一般site width就是metal 2 pitch,比如SMIC18 的 0.56 x 5.04 , 0.56 就是metal 2pitch,
因為std cell pin基本上都是由metal 2連接出來的,高度一般都是 site width的整數倍,比如7, 8, 9 ,10 ,12 倍,也就叫做7/8/9/10/12 track單元,比如 0.56 x 5.04 的就是9 track, 0.56 x 3.92 的就是 7 track,0.2 x 2.4 ( SMIC 65 ) 是12 track, 0.2 x 1.8 ( TSMC65) 是9 track,
一般來說9 track是 屬於標准size,7 track屬於小size,也就是低功耗一些,速度慢些,10、12 track 是高速,一般 metal1的rail做的更寬,管子好像沒啥區別,rail做的寬自然能走更多的電流,自然速度就快了功耗大了,有的還添加metal2 rail比如65nm以下的庫,這樣速度更快了,選幾個track 是由設計目標決定的,如果簡單些 ,就選9track標准帶tap的,比較方便低功耗選7 track,timing不夠就選12 track的,
22、 時鍾走線一般用那層金屬?
假設共有8層金屬層
最底層M1/2一般很薄,走線寬度最小,RC一般最大,而且會被cell的pin占去很多資源,肯定不適合做clockwire。
最高1/2層M7/8一般很厚,走線寬度大,RC很小,適合大驅動的clockbuffer走線。如果是用銅做金屬層的話,最上面還會有一層極厚的鋁金屬層,一般不用做信號線的走線。
中間幾層M3/4/5/6的厚度,寬度都適中,如果使用doublewidth,double space的走線的話,RC也比較小,也可以做clock wire。
如果考慮到VIA增加的電阻,一味地使用最高層不一定會得到最快的clocktree。
但是一般信號走線大多是先用下層的金屬,所以建議根據各層的RC和整個設計的congestion來選擇clockwire的層數。
如果最高1/2層M7/8的RC遠小於中間幾層M3/4/5/6的RC,就選最高1/2層
如果最高1/2層M7/8的RC與中間幾層M3/4/5/6的RC相差不大,在很擁堵時,還是選最高1/2層;不太擁堵時,選中間幾層里面的高層M5/6;根本沒有擁堵時,用中間層里面的底層M3/4
23、設置虛擬時鍾的作用?
上圖是一個block (不是chip),問
1)有多少timing path?
2)place之后,假設setup和hold都正好為0ns,然后插入時鍾樹,樹的完全平衡的,WC的時鍾樹insertiondelay是0.2ns,BC的insertion delay是0.1ns,這時做STA,會看到timing violation嗎?有多少條violation,各違反了多少ns?他們是真的嗎?如何解決?
答案:input hold -0.1, output setup0.2
如何修復違法是有些難度的問題,
簡單的回答是:
在input delay上加clock insertiondelay的值(BC 0.1 WC 0.2),
在output delay上減去clock insertiondelay的值(BC 0.1 WC 0.2)
但是當有上千個input和output port時,做起來比較麻煩,有個非常簡單的方法,想到了,就是滿分!
設一個虛擬時鍾,與clk同頻同相,把所有input,output delay都指定到那個虛擬時鍾上,CTS后,只要在虛擬時鍾上加上(BC 0.1 WC 0.2)的latency就好了
24、什么是ESD?在什么地方需要插入ESD 電路?
ESD(Electro-Static discharge)指靜電釋放,一般在IO 的Input 加ESD電路,在IC的測試、封裝、運輸、使用等過程中可以把靜電有效泄放避免對CMOS 柵極的損傷,從而有效地保護IC。
二極管有一個特性:正向導通反向截止(不記得就去翻前面的課程),而且反偏電壓繼續增加會發生雪崩擊穿(Avalanche Breakdown)而導通,我們稱之為鉗位二極管(Clamp)。這正是我們設計靜電保護所需要的理論基礎,我們就是利用這個反向截止特性讓這個旁路在正常工作時處於斷開狀態,而外界有靜電的時候這個旁路二極管發生雪崩擊穿而形成旁路通路保護了內部電路或者柵極(是不是類似家里水槽有個溢水口,防止水龍頭忘關了導致整個衛生間水災)。PN結的擊穿分兩種,分別是電擊穿和熱擊穿,電擊穿指的是雪崩擊穿(低濃度)和齊納擊穿(高濃度),而這個電擊穿主要是載流子碰撞電離產生新的電子-空穴對(electron-hole),所以它是可恢復的。
25、DFM包含什么?
后端主要是double via, spead wire width/space, 還有add dummy metal,使metal desity更均勻
26、怎么增強FloorPlan和Placement的相關性?
可以使用命令create_fp_placement、legalize_fp_placement來執行VF(Virtual Flat)Placement,提高floorplan對congestion和timing的影響
它的特點是:
(a)標准單元和non-fixed的macro被legally place
(b)擺放默認是wirelength驅動的
(c)不作邏輯優化
(d)默認執行hierarchy-aware擺放
27、ICC是怎么計算Congestion的?怎么分析和解決Congestion?
用穿過GRC(global routing cell)的nets數目除以GRC中可供使用的routing tracks
分析:
(a)使用命令report_congestion -grc_based -by_layer -routing_stage global生成congestion map(heat map)來進行可視化,map上越紅越亮的地方表示阻塞越大
(b)對比cell density map和congestion map,如果兩者有一致性的話,可能是High cell density引起了阻塞
解決:https://www.cnblogs.com/wt-seu/p/12812651.html
28、怎么分析IR-drop?
1、指定(a)Power/Ground net pair和target IR-drop,(b)power budget,(c)power pad information后,做PNS(power network synthesis),synthesize_fp_rail。通過IR-drop heat map進行可視化,幫助分析,analyze_fp_rail。
2、如果不滿足target IR-drop,修改power network約束重新綜合。
3、可以創建Virtual Power/Ground pads進行分析,如果添加新的pad有用且必要的話,那就重做floorplan,加入更多的power pad cell
29、在FloorPlan階段如何去優化timing?
執行in-place優化,optimize_fp_timing -fix_design_rule <-effort high>
具體地:
(a)cell sizing,buffer insertion,AHFS(Automatic high fanout synthesis)
(b)改善timing和DRC違規
(c)合法化placement
如果timing仍然不可接受,就修改Floorplan,或者修改設計約束或partitioning重新綜合(DC-T)
30、DC-T怎么做?