ICC學習——LAB0A
文章目錄
-
- ICC學習——LAB0A
- Task1 啟動ICC
- Task2 layout視圖導航
- Task3 控制圖層的可見性
- Task4 選擇和查詢對象
- Task5 得到關于指令和變量的資訊
從今天開始學習ICC lab guide,記錄學習過程的一些小的細節,防止遺忘。内容以lab guide2010.12為主,穿插一些學習感悟。
學習目标:
1.熟悉ICC GUI
2.學習如何得到關于變量和變量的help資訊
預期效果
1.打開并退出ICC
2.打開一個已儲存的設計
3.配置layout視窗
4.浏覽layout視圖
5.選擇并查詢layout對象
6.使用help,printvar和man擷取有關指令和變量的幫助和附加資訊
Task1 啟動ICC
1.登入linux(可以忽略)
2.啟用ICC之前,删除GUI視窗配置檔案window configuration。(這個檔案儲存了之前的ICC設定)
rm ~/.config/Synopsys/icc_shell.conf
rm:删除指令
cd ~:打開代碼主目錄,互相于目前登入的使用者目錄
比如我的伺服器路徑,~代表/home/soc/使用者名
Note:删除視窗配置并不是必須的
3.從home目錄更改到lab0_gui目錄下
cd lab0_gui
4.在linux指令行下啟動icc
icc_shell
5.檢視目前目錄下檔案。在ICC shell中鍵入ls -la
icc_shell > ls -la
運作完後可以看到兩個檔案,一個是icc_shell.cmd,一個是.log
cmd包含所有ICC指令包含啟動icc的指令。
log記錄開啟ICC後的指令和指令的輸出。
Note:log檔案的名字可以通過在.synopsys_dc.setup中定義。

6.打開ICC可視化界面
icc_shell > start_gui
短暫的等待後,一個ICC主視窗(Main Window)被打開。設計載入後,這個視窗可以展示原理圖和邏輯層次。
Note:除了通過ICC_shell 鍵入指令,還可以直接在終端輸入icc_shell -gui。
7.從risc_chip.mw(MilkWay的設計庫)載入被放置的單元,分為以下幾步:
a.在主視窗,點選黃色圖示(左上方)或者使用菜單指令File —> Open Design
b.在Open Design視窗點選黃色檔案夾,“Select Library”對話框被打開。MilkWay庫倍一個橘黃色的“L”圖示标記。選擇庫檔案risc_chip.mw,并點選“choose”。
c.在“Open Design”對話框中展示了被存儲的CELs。僅有一個單元放在清單中,已經被選中(藍色高亮)。點選“OK”打開。一個新的layout視窗被打開了。
關于Cell View
MilkWay資料庫包含同一單元的不同表示,稱之為單元格的視圖。
1.CEL view:諸如通孔,标準單元,宏或整個晶片實體結構的完整布局圖,包含單元格的布局布線引腳和網表資訊。
2.FRAM view:用于布局和布線的單元抽象表示。包含金屬封鎖,允許通過區域和單元格引腳。
3.Fill view:ICC中sign_off_metal_fill指令建立的金屬填充視圖,用于晶片實體實作,無邏輯功能。
4.CONN view:由PrimeRail或由ICC建立并由PrimeRail工具用于IR drop和EM的電源和地網絡。
5.ERR view:ICC中驗證指令發現的實體設計規則違規,如verify_zrt_route或signoff_drc
存儲在MilkWay庫中的實體設計至少包含CEL視圖,CEL視圖包含布局、布線和掩碼生成所有的單元設計的資訊。每個宏單元(macro)都具有CEL和FRAM view,FRAM用于布局布線,CEL視圖用于晶片制造的掩模資料。
TLU+ <=> TLU plus
8.将main視窗放在前面,看視窗底部的指令文本,回答以下問題
問題1:打開placed cell時,執行了什麼指令
(提示:向上翻動,知道找到它——在指令行内按上下鍵,檢視之前輸入的指令)
答案1:open_mw_cel placed
順便看到了打開risc_chip.mw指令。open_mw_lib /位置/risc_chip.mw
檢視指令文本對初學ICC指令很有幫助。也可以通過terminal視窗得到指令的執行和響應。
9.将“layout”視窗前置并且最大化視窗
10.點選小寫的[F]鍵,使layout視圖适應視窗
你現在看的是叫作placed的layout CEL視圖,屬于risc_chip.mw設計庫的一部分。
在layout的外部,IO pad單元(淺藍色矩形)
在core區域的四周。core是色彩鮮豔的。
在core和IO pad區域之間有綠色和紅色的金屬環,叫作power ring,一個VSS,一個VDD。
為了更好進行供電,在core區域有垂直和水準的VDD/VSS straps。
核的底部有兩個RAM macro。
在設計規劃階段确定了核心和外圍布局以及電源布線
core,io cell,power routing
在placement階段,标準單元放置到水準放置行内(RAM上面的深藍色區域)
利用Task2中的zoom 操作可以看到标準單元
藍色區域是由狹窄水準走向的金屬線組成,叫作VSS/VDD rails,主要作用将power傳到标準單元上。
power ring:一周的電源
power straps:類似于ring但是在core内,垂直和水準電源。
power rail:将電源供到單元上,VSS,VDD交替排列,形成水準放置列,中間擺放标準單元。
Note:Layout window有自己的菜單,一些與主視窗共享,其它的一些由Layout Window獨有。大多數的實體設計都通過Layout window來形成。
Task2 layout視圖導航
1.花幾分鐘熟悉zoom(縮放)和pan(平移)按鈕,當縮放和平移時觀察Overview Window中的黃色矩形變化。
Overview Window:在layout window的左上角。
提示:layoutwindow有快捷zoom,pan工具,選擇工具進行不同的操作,點選白色箭頭或ESC退出zoom和pan模式。
問題2:帶有2的放大按鈕和帶有+的放大按鈕的不同,
回答:2是放大兩倍,+是正常放大。
2.“快捷鍵/熱鍵”是可獲得的,當layout視窗運作時。
小寫字母[F]/[Ctrl + F]:相當于zoom fit all(全景圖)
Z:相當于zoom in放大功能。
zoom in模式下可以拉一個橘黃色的矩形,放大此區域。
3.可以找到其他熱鍵,通過以下兩種方式:
方式1:懸停滑鼠在按鈕上,出現一個“幫助氣泡”,氣泡力會介紹功能名和鍵盤快捷鍵。
方式2:可以在菜單中找到,路徑:Help —> Report Hotkey Bindings。一個新的視圖出現,列出熱鍵的定義。關閉這個view可以通過Windows —> close view / [Ctrl + W]
4.滑鼠手勢操作,個人用的比較少。更喜歡用GUI的按鈕和鍵盤熱鍵。
介紹滑鼠手勢操作方法:點選滑鼠中鍵并按住,同時上下移動指針,手勢操作菜單就會出現在指針附近。
、
上左/右45°,放大選中的矩形區域
5.鍵盤上的上/下/左/右也可以用來平移操作
6.如果滑鼠有滾輪,也可以用zoom in/out,在滑鼠指針附近的區域。
Task3 控制圖層的可見性
在view setting視窗,可以控制/檢視對象是可視的/可選擇的
以下步驟,将一次打開打開關鍵對象的可見性,清楚看到他們代表的内容。首先需要在設定的下拉菜單中選中“Auto apply”(保證選擇立刻生效,而不用等待)
a.在Vis列(可視化),取消所有的對象,僅保留Cell。
隻有标準單元,Macro,IO pad被展示
b.選擇Pin。輸入輸出電源連接配接引腳被展示
c.檢視Route。所有金屬線可視化
因為設計還沒有布線,隻有電源/地的預布線(在Floor階段做的電源布線),應該可以看到power ring和水準垂直的power straps 也可以看到power rail
d.檢測Labels(标簽)。單元和執行個體的名字變得可見。通過點選左側的“+”将Labels展開。利用Z檢視标準單元,會發現它的引腳名字變得可見。按[F]将視窗置于中間
e.選擇Layer選項,通過一層層微調可視性,在METAL(14)行和shape的交界處點選帶有對角線的藍色正方形,随後藍色的水準金屬rail消失。(METAL(14)就是metal 1)
f.再點選一次,使得metal1可見(即rail 可見)
g.選擇Objects選項,重新應用起始的設定。
問題3:上面的Vis和Sel列有什麼差別?
回答:Vis:可視,使對象可以被看到。SEl:可選擇,當點選是可以選中的。
不可視的不可被選中。
7.選擇Layer選項,使用顔色和填充圖案回答以下問題:
問題4:紅色水準電源strapes位于哪一層?它的名字和編号
回答:METAL3(22)
點選完後紅色strap消失
問題5:綠色垂直電源strapes位于哪一層?名字和編号
回答:METAL4(26)
8.通過滑鼠懸停在straps上,出現一個query視窗,并核對你的答案。query:查詢,query視窗有相關Layer圖層。
query:包含單元名,引腳數,是否被fix(什麼叫fix),形狀,所在層,寬度,長度,endcap等。
Task4 選擇和查詢對象
1.選擇對象
想要選擇對象,滑鼠必須是一個箭頭,代表選擇模式。
可以通過點選箭頭按鈕,或者[ESC]鍵。
2.用滑鼠左鍵選擇不同的單個對象。選擇對象以白色高亮顯示,直到取消選中或者選中其它對象,白色消失。
3.取消所有選擇的對象,有3種方法。
a.點選Layout空白處(常用這種方法,簡單實用)
b.菜單Select —> clear
c.鍵盤快捷鍵[Ctrl + D]
4.選中一個區域的多個對象。用左鍵拖放一個矩形,選中矩形的單元。
5.保持目前被選擇的對象,增加其它對象。按住Ctrl,滑鼠左鍵選擇其它對象,類似Windows
6.多個對象疊加時,通過左鍵不斷點選,直到所需對象高亮。可以嘗試通過點選紅色的straps和綠色straps交叉位置。
7.放大藍色核心區域。通過在周圍拖動選擇框選擇一些标準單元。
8.增加選擇單元和未選擇單元的對比度,可以調節Brightness到50%,增加對比度。亮度位于視圖面闆頂部,或者view setting中。
9.查詢對象
滑鼠懸停,對象被輕微高亮,左下角出現一個查詢視窗。
顯示對象的一些關鍵屬性。
想要獲得一個完整查詢,選擇一個單元有兩種方法。
a.小寫字母q
b.菜單Select —> Query Slection
會打開一個視窗列出所有特征值。
10.點選右上角的隐藏按鈕關閉查詢視窗。
11.關閉Layout視窗。從Main Window或Layout視窗點選File —> Close design,關閉目前的layout。然後點選對話框中的Discad All,關閉界面并不儲存。
12.關閉GUI指令
stop_gui或gui_stop
Task5 得到關于指令和變量的資訊
1.ICC可以通過[Tab]鍵補全變量名,指令名,檔案名和指令選項。ICC shell嘗試以下指令:
h[Tab]e[Tab] -v[Tab] help[Enter]
help -verbose help
2.想要檢視指令和變量的manpage(手冊頁),需要完整的指令或者變量
在不清楚指令或變量精确名字時使用help結合*通配符。help查指令,printvar查變量
如:假如正在尋找某個優化指令的更多資訊。不記得确切的名稱,但知道syn字元(synthesis),使用下面指令列出所有包含syn指令,
help *syn*
從展示的指令中選取一個,如psynopt
3.help -verbose psynopt
或help -v psynopt
help選項,-verbose,指詳細選項
4.使用man指令,檢視指令和它的選項
“man psynopt” or “man psyn[Tab]”
5.printvar 查找變量
printvar *library*
從包含library清單找到想找的變量target.library
printvar也會列出變量值
6.man檢視指令manpage
man target_library
man target_l[Tab]
7.man可以查詢錯誤資訊
man PSYN-025
工具報錯編号PSYN-025
8.退出ICC_shell:
exit
quit
至此Lab0A完成。