數字IC校招100問 附解答(完結撒花6666)
1.請說一下數字後端主要做了什麼事情?(概述性,難度1)
1.FloorPlan 2.Place 3.CTS 4.routing 5.ECO 6.chip finish process 7.physical verfication
netlist ——>GDSII
~
5.手修,logic ECO 和 physical ECO。logic是指netlist變更了。physical是指fix timing和drc。
6:插入mental fill cell
7:主要完成timing,power signoff,LVS和DRC。
~
2. 請簡單描述一下數字後端的基本流程?(概述性,難度1)
~
如上
3. 請說一下CMOS內建電路工藝的大緻步驟是什麼?(工藝,難度2)
https://zhuanlan.zhihu.com/p/339876176
第一步:有源區的形成。在p襯底上做p外延,再生長一層SiO2,使用光刻膠(PR),用緻密SiO2分隔出左右兩個有源區。
~

第二步:N阱和P阱的形成。N阱注入P,P阱注入B。都分3次注入,能量和劑量由低到高,稱為倒置阱。
第三步:積澱一層多晶矽作為栅極材料,光刻形成栅極,最後在表面形成氧化薄層,用于隔離多晶矽和後續Si3N4形成。
第四步:輕摻雜形成源和漏。通過光刻對P阱進行離子注入,注入AS元素;N阱注入B原子。
第五步:自對準工藝。通過化學氣相沉積(CVD)沉積一層Si3N4.通過離子刻蝕,形成S、D區注入的阻擋牆(Spacer),對輕摻雜區域進行快速熱退火(RTA )。
熱退火目的:消除注入損傷,激活注入元素。
第六步:源漏制作。光刻在NMOS區域注入AS,形成源漏;在PMOS區域注入BF2+,形成Pmos區域的源漏。快速熱退火,激活注入元素,消除注入損傷。刻蝕表面的SiO2,将cmos的源,漏,栅暴露出來。
第七步:金屬層的制造和金屬層間通孔(VIA由金屬鎢制造)。
4.請說一下memory的擺放規則?(floorplan,難度2)
~
a.memory,Ip,io,standard cell的orientation poly的方向一緻。
b.通過data flow或者create_plan_group的邏輯關系擺放。
c.memory的output pin盡量靠近core logic區域,節約繞線資源和timing。
d.memory之間空間不能過大也不能過小,過大浪費資源,不能太小,如果有标準單元放置的話,要保證有power strap。
e.放置在晶片的boundary區域,原因之一hard macro的高度可能會阻礙到标準單元的power strip。meomory和Io macro其它的hard macro之間存在信号傳輸,考慮不同的信号傳輸關系。
5.welltap, endcap cell的作用,以及如何擺放?(place,難度2)
~
welltap:n-well就會連接配接到VDD, substrate就會連接配接到GND。我們對于一個NWELL(也就是說一行)我們僅需要一個連接配接到VDD,同理substrate也是,如果說我們把這些去掉的話,那麼我們就會省下來巨大的面積。是以就會有 “tap-less” libraries,但是由于僅有一個tap會由于NWEL和substrate的阻值而導緻latch-up的出現,故而我們會在一定距離内添加well tap單元來避免latch-up效應。
endcap cell:一般是擺放在Macro周圍和每條row的首尾兩端,主要目的是確定Macro周圍的環境和core logic的環境是一樣的。
~
6. Place之後有timing violation,應該怎麼辦?(place,難度3)
各個階段如何fix setup
7.CTS的目的是什麼?怎麼樣是一個合格的clock tree? (CTS,難度3)
CTS的目的就是為了減小global skew。
時鐘樹不需要做到絕對的平衡,如useful skew,更關注于設計的時序
除了PPA(performance、power、area)之外,時鐘樹還應該robust。即所謂設計中的時鐘樹在任意設計需求的corner下都能滿足時序。這點對提高良率的意義重大。
考慮OCV等因素後,對稱使得時鐘樹更加強壯。到達每個Reg的時鐘路徑拓撲結構、級數和Inverter/Buf都一樣是最理想的。(不考慮usefull skew的需求) 使用專用的、較少的Inverter/Buf也可以降低OCV對時鐘樹魯棒性的影響
8.為什麼時鐘樹需要平衡?不平衡的時鐘樹有什麼缺點?(CTS,難度2)
對于快速設計,時鐘樹的skew和latency影響時序收斂、功耗和面積。
balance 可以使得timing收斂簡單些
對于慢速設計,時鐘樹的skew和latency對時序收斂的影響重要性下降。但是對于skew大的時鐘樹,工具修複時序會增加更多的面積和功耗。創造一個skew小的時鐘樹,雖然看似在時鐘樹上多用了buffer,但是會減少在修複時序問題時需要的buffer 是以,一個balance對于時序收斂、面積和功耗都是有好處的。
9.什麼是latch up效應? (工藝,難度2)
檢視闩鎖效應文章。
10.晶片功耗主要包含哪些内容?(power,難度4)
~
總結ing等待整理。
11. 請寫一段腳本,統計下圖中人名出現的次數,并按從多到少次數排列,語言任意(腳本,難度3)
使用perl實作統計人名次數。
Tom
Jack
Brian
Brian
Jack
Jack
~
思路:
1.以句柄形式讀入檔案每一行
2.對每一行進行正則比對
3.對比對到名字,将它的value+1
4.周遊hash數組,輸出結果
-
請說一下标準單元的延遲與哪些因素有關?(時序,難度2)
~
input transition
output load
PVT
-
請說一下為什麼需要對時序器件進行setup,hold檢查?(時序,難度2)
否則會出現亞穩态
14.解釋一下什麼是transition?(時序,難度2)
~
分為rise和fall transition,一般信号從10%到90%需要的時間
-
什麼是RC寄生參數,為什麼要提取RC寄生參數?(時序,難度2)
~
器件和導線間會有寄生參數,利用RC寄生參數刻畫寄生的影響。
-
PVT全稱是什麼?如何影響我們的晶片?(時序,難度2)
工藝參數
電壓
溫度
全局工藝參數,FF,TT,SS
電壓,存在最佳能耗點
溫度,存在反偏效應,溫度越低半導體速度越快,但存在反偏。
17.timing path根據路徑,一般可以劃分為哪幾種?(時序,難度2)
~
4種
input到DFF
DFF到DFF
DFF到output
input到output
-18. 綜合主要做了什麼事情?說一下具體綜合的流程 (綜合,難度3)
将RTL變成netlist過程
主要分為3個階段
Gtech
optimize
map
19.工具在優化timing階段,主要會修複哪些内容? (place, 難度2)
hold setup violation
20.請畫一個CMOS反相器的結構圖(工藝,難度1)
~
電路圖,版圖,截面圖
-21. 什麼是clock skew?如何計算的?(CTS,難度2)
~
skew主要指時鐘到達不同DFF時出現時序偏差,這個偏差叫作skew
global skew和local skew。global skew指最大最小。local指,有關聯路徑的skew,一般使用local skew
-22. 請寫一下setup, hold slack的計算公式 (時序,難度2)
setup slack = Trequirement - Tarrive
hold slcak = Tarrive - Trequirement
23.create_clock和create_generate_clock有什麼差別?(時序,難度3)
create_clock生成的是master clock,create_generate_clock是由master clock生成的,比如通過一個分頻器,不會單獨産生一個時鐘,連接配接到master clock。
24.STA的基本概念,與仿真相比,它的優勢是什麼?(時序,難度1)
靜态時序分析。
1.100%覆寫率
2.速度快
3.考慮串擾,工藝偏差的影響
25.STA在什麼階段做,各個階段的STA都有什麼差別? (時序,難度3)
DC place routing都需要時序分析。
主要差別是CTS之前使用的都是虛拟時鐘,SDC定義的時鐘
各個階段的時序分析model也不一樣
比如DC使用的是線負載模型,routing之後就是實際的布線資料。
26.LEF檔案的主要作用,它和GDSII有什麼差別?(資料庫,難度2)
~
LEF隻描述單元的底層細節,比如端口位置,層定義和通孔定義。隻用于布局布線。GDSII擁有單元的全部資訊,但由于過大,不利于工具的布局布線。
-27. 了解Finfet工藝麼,請簡單畫一下一個finfet半導體結構示意圖(工藝,難度2)
了解
MosFET/FinFET/GAFET ——鳍式半導體還能走多遠
28.列舉你知道的幾種修複setup timing violation的方法,該優先使用哪一種?(時序,難度4)
調整size,更換門檻值電壓,修複DRC(transition和load會影響延遲),流水線,useful skew
29.timing signoff報告主要有哪些内容?(時序,難度4)
1.setup hold violation
2.DRC檢查,input transition,output load
3.corner是否全
4.sdc檢查,後仿作為最後檢查sdc的過程,比如false path
5.噪聲
30.spef檔案裡面記錄了什麼内容?如何得到?(時序,難度2)
互連線寄生參數,使用starRC
31.時鐘樹走線和普通信号線有什麼差別? (CTS,難度2)
double width和double space,高層走線
32.為什麼memory需要靠邊擺放?(floorplan,難度3)
~
因為和外界的資料互動比較密切
33. 靜态功耗的概念,如何降低?請列舉一些你知道的方法 (power,難度4)
主要是洩露功耗
1.提高門檻值電壓
2.電源門控
3.體偏置。進而改變門檻值電壓,如果正向體偏置就會提高性能。
34.晶片為什麼需要采用縱橫交錯的走線方式? (route,難度2)
~
減少crosstalk
-
列舉一下你知道的修複hold timing violation的方法?(時序,難度3)
~
1.單元面積
2.單元尺寸
3.流水線
-
我們在修複hold violation時,buffer應該加在什麼位置?(時序,難度3)
組合邏輯,DFF間路徑
37.列舉幾個常見的drc種類?(route,難度2)
滿足良率的同一金屬層或者不同金屬層的幾何尺寸的最小值的集合,就是設計規則檢查。
版圖和lef檔案進行比較(lef由單元lef和技術lef,這邊技術lef定義設計規則,單元lef)
38.CTS之前是如何計算clock path上的延遲的? (CTS,難度2)
根據sdc中clock的uncertainty(包含skew),CTS之後使用實際的CTS計算skew。
39.正規表達式的比對1個以及1個以上的,該如何比對? (腳本,難度1)
~
*:0個或者1個
+:1個及以上
?:0個或者1個
40. 請說一下drv的概念,主要包含哪些内容?(時序,難度2)
~與37題一樣?
41. 介紹一下CPPR的概念,為什麼需要用到CPPR?(時序,難度3)
共同路徑悲觀消除。在OCV時需要乘以一個derate系數,共同路徑的部分需要移除悲觀量。
42.說一下Calibre檢查drc的具體流程?(PV,難度4)
主要輸入兩個檔案。一個是得到的版圖GDSII檔案和工藝廠商提供的設計規則檔案。工具通過标出違反設計規則的位置,進而手工修改違規。
43.什麼是天線效應(antenna effect)? 說幾種你知道的修複方法?(route,難度4)
制造過程中一些遊離電荷受到懸空導線的吸引。
插入二極管,跨層走線
44.動态功耗主要包含哪些部分,如何降低?請列舉一些你知道的方法 (power,難度4)
包含短路功耗和開關功耗
1.降低電壓
2.DVFS
3.多電壓域
4.降低負載
5.降低時鐘頻率
45.你在學校裡接觸過哪種工藝?說一說這種工藝有什麼特點?(工藝,難度3)
~
45nmFreePDK
TSMC28nm
46. 請簡單自我介紹一下?(湊數,難度1)
~
47. 請列舉一下導入後端設計需要哪些檔案?(資料庫,難度1)
~
netlist
工藝庫(邏輯庫db lib 實體庫lef)
工藝檔案
TLU+
48. 請列舉幾個你知道的sdc指令,并說出它的用途?(時序,難度2)
create_clock
create_generated_clock
set_driving
set_load
set_input_delay
set_output_delay
set_case_analysis
set_false_path
set_multicycle_path
set_max_fanout
set_max_transition
set_min_capacitance
set_max_capacitance
49.修複timing violation時,首先應該關注什麼,有哪些需要注意的點?(時序,難度5)
~
1.邏輯
2.floorplan
3.時序路徑的延遲,cell size,門檻值電壓,buffer
4.工具層次,group的weight
5.線延遲,插buffer
-
CTS之前需要修複hold violation麼,為什麼?(CTS,難度2)
不需要。1.沒有實際的CTS 2.很好修,插buffer
51.在修複hold violation時,delay cell和buffer該優先使用哪一種,各有什麼優缺點?(時序,難度3)
~
特點:delay cell延遲比較大,buffer驅動能力強
較大的violation使用delay cell。
-
clock latency的概念,什麼情況下需要設定? (時序,難度3)
source latency和network latency。一般不需要設定。
1.不同clock source latency不同,考慮時序,需要設定。
2.不同時鐘network latency (insert delay cell)不同時,需要考慮時序,也需要設定。
53.low vt cell和high vt cell有什麼差別,各有什麼優缺點?(工藝,難度3)
低門檻值電壓開關速度快,功耗高
高門檻值電壓卡關速度慢,功耗低
54.如何判斷floorplan擺放品質的好壞?(floorplan,難度5)
1.memory要放在邊緣,和外界資料互動
2.SRAM位址線對齊
3.有關聯的Macro放在一起
55.電源走線為什麼需要使用高層線?(power,難度2)
1.高層金屬更厚,有更強的EM能力
2.對低層信号線幹擾更小
3.不會占用低層的信号線
56.請介紹幾種修複drc的方法?(route,難度4)
~
1.工具自動修,在DRC違規的地方添加routing guide,做iteration routing
2.工具抓取出DRC違例的地方,删除這些net,做routing eco。
-
什麼是crosstalk? 為什麼會産生crosstalk? 會帶來什麼後果?(時序,難度4)
串擾。信号線之間的幹擾。産生glitch和transition time的變化。transition和delay有關系,同向transition變小,反向transition變大。glitch會産生邏輯錯誤。
58.寫過sdc麼,sdc檔案裡,主要包含哪些内容,我們該如何限制一個設計?(時序,難度5)
基礎知識如上。如何限制?
59.請說一下OCV的概念,為什麼需要用到OCV,什麼階段需要OCV,如何實作?(時序,難度5)
~
片上工藝偏差,derate
-
Def檔案的作用是什麼?(資料庫,難度1)
~
器件的位置關系和時序限制
-
我們需要在什麼階段做formal驗證?(形式驗證,難度2)
DC,floorplan,routing
62.綜合的時候,我們是怎麼計算net的delay?(綜合,難度2)
根據線負載模型,由扇出計算出線長,再乘以機關線長上的電阻和電容,計算RC。利用Elmore 模型計算delay。
63.為什麼選擇我們公司?(湊數,難度1)
~
64. timing signoff需要讀入哪些檔案?說一下具體的流程(時序,難度4)
~
netlist,STA庫檔案,sdc,spef
-
core裡面是如何給标準單元供電的?(power,難度2)
在floorplan階段strap和ring,然後通過rail連接配接到标準單元上
66.sdf檔案裡面記錄了什麼内容?如何得到?(時序,難度3)
把器件延時和線延時儲存下來。
67.在生成clock tree時,我們應該使用invertor還是buffer, 為什麼?(CTS,難度2)
1.選擇inv,上升沿和下降沿對稱
2.功耗低
3.面積小
68.你知道設定的使用率是如何計算的嗎,你的設計使用率是多少?(floorplan,難度3)
~
使用率utilization = (标準單元面積+macro面積)/ module的面積
在陳濤後端100題裡有提及到相關的概念。
不同金屬的utilization不一樣,肯定和工藝以及晶片類型也有關系,整體來說utilization越大,對于晶片的congestion是更加不利的。
5層金屬:50%
6層金屬:60%
7層金屬:70%
8層金屬:80%
多媒體晶片使用率可以增加3%到5%,網絡晶片減少3%到5%
-
碰到routing congestion該怎麼辦?(route,難度4)
1.floorplan的問題
2.調整ultilization(降低)
3.高層布線
70.談談整個晶片設計的大概流程(概述性,難度1)
從架構定義——前端設計——後端設計——生産制造——封裝——測試
71.從後端角度,對于晶片設計的要做哪些檢查?(概述性,難度4)
~
LVS,DRC,timing signoff,功耗,功能,性能(頻率),面積
-
clock時鐘一般采用哪層金屬走線?(CTS,難度2)
較高層的走線,一般是5,6,7;double space和double width
73.溫度對标準單元延遲的影響?(時序,難度1)
注意存在反偏效應,之前的部落格有說。類似于耐克函數,主要是内部遷移率和門檻值電壓誰占主導地位。
74.下面,我們用英語對話一下(湊數,難度2)
75.rc corner有哪幾種?各有什麼特點? (時序,難度2)
1.Cworst
2.Cbest
3.RCworst
4.RCbest
特點:setup 考慮Cworst和RCworst;hold考慮四個角都要滿足。
double pattern還有着雙重的要求。
76.為什麼我們需要優先修複transition和cap? (時序,難度2)
~
因為這樣單元庫的資料才足夠準。
提高晶片的良率
-
我們一般采用哪些驅動能力的cell去生長時鐘樹?為什麼?(CTS,難度2)
invert
78.route之前的連線和後面最終的連線有什麼差別? (route,難度3)
~
時鐘信和電源線
-
請說出幾個你用到的後端工具,他們分别用來做什麼?(概述性,難度1)
~ICC,PT
-
我們為什麼要對net設定fanout限制? (時序,難度2)
fanout太大驅動不了
庫不準
81.為什麼采用double width, double spacing的時鐘樹走線方式?(CTS,難度3)
~
EM,fanout較大,電流大。
-
setup和hold violation該優先修複哪種,為什麼?(時序,難度3)
~
優先修複setup。hold比較好修。并且setup決定我們的性能
-
DFF哪些pin需要做timing檢查?(時序,難度3)
第二個鎖存器的Q端口
84.clock uncertainty主要包含哪些内容?你設定了多少?(時序,難度3)
~
CTS之前
setup:clock uncertainty = jitter + skew + margin
hold:clock uncertainty = skew + margin
CTS之後
setup:clock uncertainty = jitter + skew + margin
hold:clock uncertainty = skew + margin
主要原因是setup是在不同時間沿分析,hold是在同一時鐘沿分析。
-
什麼是IR drop? 有IR drop問題應該怎麼辦?(power, 難度4)
壓降。分為靜态和動态。靜态是由于電阻分壓,動态是由于門同時打開,局部電流過大。
靜态主要考慮power plan增大strap密度。高層走線。
動态需要從邏輯角度進行優化,還有就是加入去耦電容。
86.calibre裡面檢查drc和PR工具裡面的drc有什麼差別?(PV,難度3)
~pr階段調用的是簡化版的drc,至于為什麼不用精确版的drc這個問題來說,就相當于為什麼在pr階段沒有使用PT是一個道理。
-
什麼是LVS?出現LVS violation時應該怎麼辦?(PV,難度4)
~
版圖原理圖一緻性檢查,又稱電氣規則檢查。
主要步驟将RTL抽取成spice網表,然後比對。
比對單元數量,單元個數,節點個數等。
-
latch和D觸發器有什麼差別?(工藝,難度1)
~
兩個latch組成觸發器
- 你在學校做過後端設計項目麼,有多少萬門?(概述性,難度1)
90.blockage的作用,應該在什麼地方添加?(floorplan,難度3)
place。hard,soft,partial
91.為什麼要使用實體綜合,它的好處是什麼?(綜合,難度3)
·dc的好處?滿足限制條件下,進行邏輯優化和單元庫映射。
-
你做的這個後端項目裡面時鐘樹是怎麼生長的?(CTS,難度4)
時鐘樹類型
93.請說一下clock gate cell的結構 (CTS,難度3)
~
時鐘前面和一個latch加一個與門,latch主要是消除毛刺
-
如何把clock skew減小?列舉一些你知道的方法?(CTS,難度5)
插入inv
95.LEC主要檢查哪些内容,為什麼要做? (形式驗證,難度3)
以DC後的RTL和netlist為例。讀入netlist,RTL和svf判斷,根據邏輯錐和svf判斷是否存在錯誤
96.為什麼晶片需要在多個view下signoff? (時序,難度3)
~
不同場景和不同的模式。
場景指比如PVT條件,比如手機晶片工作溫度。
模式指手機不同工作模式,和DFT的模式(scan shifter等)
-
說一下檢查LVS的具體流程?(PV,難度3)
~
版圖原理圖一緻性檢查
将版圖抽取出spice模型和初始netlist進行對比。
-
GBA和PBA分析timing有什麼差別?(時序,難度3)
基于路徑和基于圖
99.什麼是EM?有EM問題應該怎麼辦?(power,難度3)
電遷移。金屬原子移動。
1.減小fanout
2.增加線的width
3.單元驅動能力過強
4.連線過長
100.綜合的限制和後端的限制有什麼差別?(綜合,難度3)
綜合時,模型粗略,過約SDC,時鐘頻率調高。
CTS之前沒有真實的時鐘樹,uncertainty加大
PR工具和signoff工具一緻性問題,margin也會有差別