生活随笔
收集整理的這篇文章主要介紹了
数字后端之我见
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如果您是初學者,建議先搜索相關(guān)的資料,讀讀其他人的帖子,一些基本概念在那里都已經(jīng)討論過了。 如果您已經(jīng)有2年以上的實戰(zhàn)經(jīng)驗,下面這些雕蟲小技就不太值得您去浪費時間了。 先說說作為一個有經(jīng)驗的后端(暫不包括DFT工程師和layout工程師)工程師,需要掌握哪些知識 4個級別: ? ? 1)知道一些基本概念, ? ? 2)簡單地掌握這門技術(shù), ? ? 3)熟練 ? ? 4)精通 半導體工藝--2 RTL coding -- 2 綜合 -- 2 時序約束 -- 3 APR -- 3 DFT -- 2 DRC/LVS -- 3 仿真 -- 2 形式驗證 -- 2 以下是FAQ分類: 2樓:時序約束,STA 3樓:綜合DC/RC 4樓:APR (floorplan, place, CTS,route) 5樓:驗證(LEC,DRC,LVS等) 6樓:DFT 7樓:低功耗 8樓:面試 9樓:名詞解釋 | 收藏分享 |
我的IC話題 http://blog.sina.com.cn/u/2152633715 個人原創(chuàng)資料,轉(zhuǎn)載時請聲明,未經(jīng)許可不得用于任何有商業(yè)利益的媒體 歡迎訪問TI熱門產(chǎn)品專區(qū) |
| ? | 回復引用 報告使用道具 |
| ? | ? |
| 陳濤 版主 UID39881?帖子2196?精華3?積分25146?資產(chǎn)25146 信元?發(fā)貼收入11785 信元?推廣收入0 信元?附件收入0 信元?下載支出8 信元?閱讀權(quán)限120?在線時間2218 小時?注冊時間2006-7-26?最后登錄2014-3-25? | 2# 發(fā)表于 2011-12-14 13:45 | 只看該作者 時序約束,STA 本帖最后由 陳濤 于 2011-12-15 15:39 編輯 (1) clock ? ? Q1.1 什么是同步時鐘? ? ?? ?時鐘頻率是整倍數(shù),并且相互之間的相位是固定而且相差可預知的,才可以稱得上是同步時鐘。其他的都算異步時鐘。 ? ?? ?比如, ? ?? ?5M,10M是同步 ? ?? ?2M,3M一般算異步 ? ?? ?一個時鐘,輸出到另一個芯片中,轉(zhuǎn)一圈后,以同樣的頻率返回到自己的芯片,因為無法確定時鐘在另一個芯片里面的latency,所以輸出的時鐘與輸入的時鐘算異步 ? ?? ?一個時鐘進到2個PLL,就算那2個PLL的輸出頻率相同,一般也算是異步時鐘,除非你de-skew ? ? Q1.2 如何處理同步時鐘? ? ?? ?設計要求嚴格的公司,就算是同步時鐘,數(shù)據(jù)在同步時鐘間傳送時,依然要用meta-stability FF,可以set_false_path ? ?? ?如果放松要求,不用meta-stability FF,則同步時鐘之間是real path,做CTS時,同步時鐘要clock tree balance。 ? ?? ?注意不同頻率的同步時鐘的最小時間間隔被用來檢查setup ? ?? ?如果上升下降沿混用的話,setup的時間間隔就只有半個時鐘周期了 ? ? Q1.3 如何處理異步時鐘? ? ?? ? 很簡單,set_false_path ? ?? ???注意要from A to B,同時要from B to A ? ? Q1.4 如何定義時鐘? ? ?? ?create_clock 如果指定某個pin/port,就是實時鐘,如果沒有指定pin和port,就是虛擬時鐘 ? ?? ?巧妙利用waveform選項可以做出不同波形的時鐘 ? ?? ?被定義成時鐘的net,在綜合時,自動帶有ideal network和dont_touch的屬性。但是當它被用作data計算延遲時,ideal net的屬性會自動消失 ? ?? ?時鐘會自動穿過邏輯單元,停在時序單元的時鐘端,所以用FF產(chǎn)生的分頻時鐘要再用create_generated_clock定義一次 ? ? Q1.5 如何處理多選一時鐘? ? ?? ?在實際應用當中,如果這幾個時鐘不會同時出現(xiàn)的話,則在定義時鐘時,只選擇最快頻率的就可以了 ? ?? ?如果是多個時鐘同時出現(xiàn),可以用set_case_analysis選一個, ? ?? ?也可以放它們?nèi)歼^去,但是在MUX后面把它們之間set_false_path ? ? Q1.6 巧妙定義時鐘 ? ?? ?直接在分頻FF的Q端定義generated clock時,有時會把分頻FF的時序打掉,解決辦法是在分頻FF的Q端加一個時鐘buf,從那個buf的輸出端定義generated clock,從而保證分頻FF自身的時序完整 ? ?? ?如果從source clock到generated clock之間有多條路徑,你希望PT用指定的一條路徑來計算時序的話,可以用set_case_analysis, set_disbale_timing 或者一級一級地定義generated clock來引導PT達到你的要求 ? ?? ?分頻器時序約束問題 ? ?? ?時序分析中同一時鐘的不同路徑問題 ? ?? ?請教如下要求的clock在pt中應該怎么create ? ?? ?怎樣設set_case或者別的,才能讓pt選擇同一條clock path ? ? Q1.7 什么時候需要設置latency? ? ?? ?latency分為source latency 和 network latency 兩種。 source latency是源時鐘自帶的,network latency就是CTS后的clock tree insertion delay。 ? ?? ?在綜合時,一般不需要latency, ? ?? ?除非, ? ?? ?已知不同clock帶有不同的source latency,并且它們之間有時序要求 ? ?? ?預知不同clock會有不同的clock tree insertion delay,不想平衡它們,但是要滿足他們之間的時序要求 ? ?? ?做完CTS后,要把network latency去掉 ? ?? ?請問set_clock_latency 設太大會有什么不好 ? ? Q1.8 如何設置uncertainty ? ?? ?clock uncertainty分為setup和hold,preCTS和postCTS幾種不同的情況 ? ?? ?一般的處理原則是: ? ?? ?preCTS,setup: uncertainty = PLL jitter + 預估的clock skew ? ?? ?preCTS,hold: uncertainty = 預估的clock skew ? ?? ?postCTS,set_propagate_clock [all_clocks] ? ?? ?postCTS,setup: uncertainty = PLL jitter ? ?? ?postCTS,hold: uncertainty = 0 ? ?? ?有時fundry要求hold uncertainty保留一定的量,這時就把那個保留量加到上面的公式中 ? ?? ?sdc文件中對clk的uncertainty、transition、latency的設置 (2) IO端口的約束 ? ? Q2.1 如何加IO端口的約束? ? ?? ?最普通的方法是 ? ?? ?對輸入端,set_input_delay, set_driving_cell (也有用set_input_transition的,但是不多見) ? ?? ?對輸出端,set_output_delay,set_load ? ?? ?對時鐘端,set_clock_transition ? ?? ?dc綜合時的clock transition應該參考什么設定? ? ?? ?set_drive ,set_load ? ? Q2.2 哪些端口不需要約束? ? ?? ?靜態(tài)信號可以set_false_path,比如reset,test_mode,function_mode_select ? ?? ?不能真的什么約束都不加 ? ? Q2.3 什么樣的reset信號可以set_false_path? ? ?? ?如果在工作時,reset信號有效時,時鐘信號不翻轉(zhuǎn),就可以set_false_path ? ?? ?如果reset信號動作時,時鐘也有動作的話,就不能set_false_path ? ? Q2.4 像reset那樣的high fanout信號需要設定為ideal net嗎? ? ?? ?如果是false path的話,可以設為ideal net ? ?? ?一般不需要設為ideal net,讓DC加入buffer tree后,有利于估算功耗和面積 ? ? Q2.5 如果有一組輸出信號,需要他們之間對齊,但是不太在乎有多大的延遲,這時應該如何約束? ? ?? ?如果有輸出時鐘的話,在那個輸出時鐘端口定義一個generated_clock,其它信號的output_delay都相對于這個generated_clock而定。只要有max和min,就可以把所有信號卡在一個范圍之內(nèi) ? ?? ?如果沒有輸出時鐘的話,用set_output_delay -reference_pin ? ? Q2.6 如何計算input和output delay? ? ?? ?如果是block的input和output delay,可以預先分配,比如輸出端,輸入端各1/3,中間的連接1/3 ? ?? ?block的端口最好都flop-in,flop-out ? ?? ?如果是chip IO,要度其他芯片的IO時序和電路板上面的延遲,比較麻煩 ? ?? ?set_input_delay的時間設置 (3) DRV ? ?? ?DRV有時也加DRC,與物理檢測的DRC不是一個概念 ? ?? ?DRV包括, ? ?? ?set_max_transition??與工藝相關(guān),65nm的話,在0.6ns左右 ? ?? ?set_max_fanout??與工藝相關(guān),一般在12~20之間 ? ?? ?set_max_capacitance ? ?? ?set_max_power ? ?? ?set_max_area ? ?? ? (4) false path,multicycle path ? ? Q4.1 什么情況下需要set_false_path? ? ?? ?異步時鐘之間, ? ?? ?到meta-stability 的第一個FF路徑, ? ?? ?靜態(tài)信號 ? ? Q4.2 何時會用到multicycle_path? ? ?? ?太長的path, ? ?? ?不會每個周期都變的信號 ? ?? ?注意:在RTL中,前端一定要多周期工作一次的功能 ? ?? ?一般set_multicycle_path -setup <n周期> ? ?? ?要同時寫set_multicycle_path -hold <n-1周期> (5) wire load model ? ?? ?wire load model是一種簡單地根據(jù)fanout來估算wire delay的方法,在綜合時,一般根據(jù)設計的大小選擇對應的WLM ? ?? ?有時也會用zero wire load model,這時的clock period要相應減小15~25%,或者clock uncertainty增加15~25% ? ?? ?set_wire_load_model 兩種模式top和enclosed到底有什么區(qū)別? ? ?? ?更加準確的計算wire delay的方法是DC topo和RC physical, ? ?? ?他們在綜合時會粗略地做個place,然后根據(jù)距離來計算延遲 (6) clock gating ? ? Q6.1 如何加clock gating? ? ?? ?局部的clock gating在綜合時,會自動加進去。加clock gating后,不但會減小功耗,還會改善時序,因為本來到D端的邏輯,一部分被移到CK端了,簡化了D端的邏輯 ? ?? ?整個block的clock gating,一般直接在RTL里面加,因為DC沒有那么聰明 ? ? Q6.2 需要對clock gating加什么特別的約束嗎? ? ?? ?如果使用標準庫里面的ICG單元,不需要附加任何特別的約束,前后端的工具都認得它 ? ?? ?如果用latch+and自己搭的clock gating,你要對那個and單元set_disable_clock_gating_check,還要告訴后端,一定把latch和and擺在一起 ? ?? ?一般只在沒有動態(tài)切換時鐘時,才可以用一個and/or做clock gating,這時也要set_disable_clock_gating_check ? ?? ?clock gating cell約束 ? ?? ?某個domain的clk通過gating關(guān)斷重啟后,對這個domain做復位有沒有必要? (7) case_analysis ? ? set_case_analysis可以強制某個node為0/1 ? ? 這個0/1會沿著純邏輯組合單元向前傳送,如果沒有特別設定的話,會停在時序單元上 ? ? 注意,只是是向前傳,不會向左右2邊和向后傳 ? ? 舉例: ? ? 如果設在輸出端上,那么所有fanin端都會被強制為0/1 ? ? 如果只設在某個輸入端上,與之相連的輸出端和其他輸入端都不受影響 (8) ideal net/network ? ? ideal_net只作用于這條net ? ? ideal_network會把這個屬性傳送下去 ? ? clock net自動帶有ideal net屬性 ? ? 其他net,何時需要設定ideal net?見Q2.4 | |
我的IC話題 http://blog.sina.com.cn/u/2152633715 個人原創(chuàng)資料,轉(zhuǎn)載時請聲明,未經(jīng)許可不得用于任何有商業(yè)利益的媒體 賽靈思社區(qū)免費資料下載,還可獲取積分兌換! |
| ? | 回復引用 報告使用道具TOP |
| ? | ? |
| 陳濤 版主 UID39881?帖子2196?精華3?積分25146?資產(chǎn)25146 信元?發(fā)貼收入11785 信元?推廣收入0 信元?附件收入0 信元?下載支出8 信元?閱讀權(quán)限120?在線時間2218 小時?注冊時間2006-7-26?最后登錄2014-3-25? | 3# 發(fā)表于 2011-12-14 13:45 | 只看該作者 綜合DC/RC 本帖最后由 陳濤 于 2011-12-19 12:38 編輯 綜合腳本的樣本現(xiàn)在到處都是,最好找一個,照貓畫虎改改用 建議把時序約束腳本與綜合腳本分開存放,這樣時序約束可以單獨使用。 (1)綜合的注意事項 ? ? Q1.1 需要fix hold嗎? ? ?? ?不需要,hold交由后端去做就好了。 ? ?? ?所以綜合時,不需要讀入min.lib,不用設wc_bc等復雜的選項 ? ? Q1.2 綜合出來的網(wǎng)表如何驗證? ? ?? ?如RTL做形式驗證 ? ?? ?gate-sim (網(wǎng)表仿真)。不要用延遲。 ? ?? ?不需要從DC輸出SDF,因為那個根本不準,而且它也無法保證沒有hold違反 ? ? Q1.3 如何讓DC自動插入clock gating ? ?? ?在腳本中加入 ? ?? ?set power_cg_always_enable_registers true ? ?? ?set_max_leakage_power 0.0 ? ?? ?set_max_dynamic_power 0.0 ? ?? ?set_clock_gating_style (指定ICG) ? ?? ?insert_clock_gating ? ?? ?replace_clock_gates ? ? Q1.4 綜合時要檢查哪些項目? ? ?? ?最最起碼要做, ? ?? ?綜合前,check_design,check_timing,保證所有的path都有約束(含timing exception) ? ?? ?綜合后,report_timing, report_constraint,report_area,report_power,report_qor ? ? Q1.5??如何解決綜合后setup的違法? ? ?? ?多綜合幾遍 ? ?? ?檢查約束是否合理 ? ?? ?最后只好改RTL了 ? ? Q1.6 如何判斷約束是否合理? ? ?? ?什么是合理的約束還真不好說,但是下面是一些不合理的情況,遇到了一定得解決 ? ?? ?? ? 2#樓里面所列約束項目不完整的 ? ?? ?? ? startpoint或endpoint的clock cycle特別大的,說明那是異步時鐘 ? ?? ?? ? 某個cell或net延遲很大的,可能是clock net當作signal用了,設了dont_touch ? ? Q1.7??如何得到更好的網(wǎng)表? ? ?? ?對于DC,一般人們都喜歡把clock period調(diào)小一點(10~25%),那樣DC會給你個timing比較好的網(wǎng)表,但是代價的面積的增大和功耗的增加。當然,你調(diào)clock uncertainty也有同樣的效果 SDF的讀入問題 STA 輸出verilog netlist如何設置大小寫不敏感? dc綜合后的一些警告 ungroup使用 DC的UPF和operating_condition問題 | |
我的IC話題 http://blog.sina.com.cn/u/2152633715 個人原創(chuàng)資料,轉(zhuǎn)載時請聲明,未經(jīng)許可不得用于任何有商業(yè)利益的媒體 歡迎訪問TI信號鏈專區(qū) |
| ? | 回復引用 報告使用道具TOP |
| ? | ? |
| 陳濤 版主 UID39881?帖子2196?精華3?積分25146?資產(chǎn)25146 信元?發(fā)貼收入11785 信元?推廣收入0 信元?附件收入0 信元?下載支出8 信元?閱讀權(quán)限120?在線時間2218 小時?注冊時間2006-7-26?最后登錄2014-3-25? | 4# 發(fā)表于 2011-12-14 13:46 | 只看該作者 APR (floorplan, place, CTS,route) 本帖最后由 陳濤 于 2012-9-30 08:41 編輯 這節(jié)太大了,不知道從何說起,也不知道要說多少, 真正詳細完整的介紹應該是Synopsys和Cadence的教程和userguide 就撿一些教程里面沒有的東西吧 (1) 文件的準備和網(wǎng)表的檢驗 ? ? Q1.1 后端都需要什么樣的庫文件? ? ?? ?因為現(xiàn)在的APR工具盡量把所有的功能都整合進去,所以需要的庫文件也是五花八門,雜亂繁復, ? ?? ?(Synopsys會把這些文件整合到一起,存在milkyway里面) ? ?? ?physical: LEF 和 GDS ? ?? ?timing: LIB, (分為NLDM, CCS 和 ECSM 三種,有一個基本上就可以了) ? ?? ?RC delay: capTable, QRC tech, QRC lib 或者 TLU+ ? ?? ?route rule: tech lef 或者 tech file ? ?? ?xtalk: cdb 或者 ? ?? ?power: VoltageStorm tech, VoltageStorm lib 或者 ? ? Q1.2 與設計有關(guān)的文件要哪些? ? ?? ?網(wǎng)表,時序約束,IO file, scan DEF ? ? Q1.3 時序約束需要修改嗎? ? ?? ?有時需要, ? ?? ?如果綜合時使用了過小的clock period,要還原回來 ? ?? ?可以去掉SDC里面的wire load, operation condition, ideal net, max area ? ?? ?有些為綜合而設置的dont_touch, dont_use ? ?? ?有些為綜合而設置的clock latency ? ? Q1.4 APR之前要做什么樣的檢驗? ? ?? ?檢查所有庫是否一致,版本是否一樣,使用單位是否一樣,是否有重名 ? ?? ?用zero wire load model 來 report timing,結(jié)果應該和同樣條件下DC/RC的結(jié)果非常一致 ? ?? ?check timing 保證所有的單元都有約束 ? ?? ?check design,不能看到任何input懸空,不能有3態(tài)門以外的ouput短路 ? ?? ? (2) 一個好的floorplan ? ?? ?如果問我APR里面那步最重要的話,我會選floorplan。因為它的好壞,可以直接影響到timing,congestion,IR-drop,以及芯片的大小和價格。 ? ? Q2.1??什么是一個好的floorplan? ? ?? ?簡單講就是讓上面幾條都過得去的。 ? ?? ?一個好的floorplan應該是macro擺放井然有序,走線密度剛好達到congestion可以承受的上限,標準單元的擺放不可過于松散,標準單元的區(qū)域最好是大片相連的,IO的排放按照功能分類,順序與其他芯片的順序一致,沒有供電困難的死角。 ? ? Q2.2 做floorplan時要考慮哪些因素? ? ?? ?IO的排放順序 ? ?? ?power和IR-drop ? ?? ?模擬信號與數(shù)字信號的隔離 ? ?? ?內(nèi)部數(shù)據(jù)的流程 ? ?? ?macro的面積和連接 ? ?? ?critical timing模塊的距離 ? ?? ?congestion模塊的走線資源 ? ? Q2.3 如何得到一個好的floorplan? ? ?? ?與系統(tǒng)工程師討論IO的排放 ? ?? ?和前端工程師商量內(nèi)部數(shù)據(jù)的流向,critical timing模塊 ? ?? ?向mix signal工程師請教模擬模塊的位置,間隔 ? ?? ?然后讓APR工具擺幾個方案,以供參考 ? ?? ?最后還是要自己手動調(diào)整。對絕大多數(shù)設計來講,把macro放在四周,中間留給標準單元 ? ?? ?大macro放外圈,小macro放內(nèi)圈 ? ?? ?大的macro之間一般要留一些空間給標準單元,因為clock buffer,signal repeater等跨過大macro的信號需要那些空間插入buffer ? ?? ?小的macro之間可以沒有空間,幾個小的可以擠在一堆,堆與堆之間留出一點空間就可以了 (3) 時序收斂 ? ?? ?這是后端的核心任務之一,也是判斷一個工具好壞的重要標準。各家EDA公司為之努力了幾十年,至今也沒有得到圓滿的解決。初學者經(jīng)常會問,如何讓ICC時序收斂啊?為什么做了optDesign,encounter還有setup violation啊?建議以后就別這么問了,如果有一個好方法,可以從頭跑到尾,自動把時序收斂了,那家公司就可以一統(tǒng)天下。到時,我們也就都可以下崗了! ? ?? ?每個EDA工具都有一定的局限性,我們要做的不是去挑戰(zhàn)它的極限,而是為它準備一個好的條件,讓它達到我們的要求。 ? ?? ?這節(jié)不用問答的形式 ? ? 3.1 了解每個工具的特性,預測最后的結(jié)果,在開始時預留一定的余量。 ? ?? ?? ? APR大致分為3步,place,CTS 和route,每步都有相應的時序優(yōu)化,每一步,不同的工具會給出不同的的結(jié)果。以ICC為例,place (如果沒有特別說明,以后所說每步均包含相應的優(yōu)化)后,會比綜合的時序差一點,CTS后會更差,route后會比CTS好一些,但是達不到place后的水平。encounter是一路向下。Azuro (現(xiàn)在已經(jīng)被cadence購買)的CTS會把時序拉回來。所以ICC的place + Azuto CTS + ICC route可以得到比較好的結(jié)果。 ? ?? ?? ? 知道了這個特點,在place時,如果有可能的話,多留些余量,也就是把時序設得更緊一些 ? ? 3.2 MMMC ? ?? ?? ? 每個設計可能會有多個function mode,還有多個DFT mode,還有foundry建議的不同PVT,加不同RC的setup和hold的檢查,這種組合出來的timing mode有幾十上百種,要收斂這么多的時序,絕不是一件容易的事,所以出現(xiàn)了MMMC。EDA公司號稱為我們迎接挑戰(zhàn),已經(jīng)準備好了需要的工具,但是可信嗎?我們搭得起這么多的運行時間嗎?所以還是不要把這么多的mode全丟給工具,仔細的選幾個最困難的setup和hold mode給工具,其他mode的時序基本上會被這幾個選上的mode涵蓋的。 有一個帖子討論過選哪幾個mode。 ? ?? ?? ? 有一種比較高超的技巧,經(jīng)過仔細分析各個mode下,時鐘的關(guān)系,可以把其中幾個合并成一個,比如function和mbist。但是這種方法并不是放之四海而皆準的,而且要求精通SDC命令的使用。 ? ? 3.3 每步都干什么? ? ?? ?? ? place之后,只優(yōu)化setup。使用粗糙的RC抽取,global route ? ?? ?? ? CTS之后,可以只優(yōu)化setup,也可以優(yōu)化setup和hold。使用粗糙的RC抽取,global route,如果clock net 已經(jīng)route過了,clock就用detail route的結(jié)果。 時鐘走線要double width和double space,高速(>500MHz)時鐘要shielding ? ?? ?? ? route之后,要優(yōu)化setup和hold ? ?? ?? ? 可以試著多做幾次優(yōu)化,從中挑一個最好的結(jié)果,但是,一般情況下,不要重復(同樣的命令和選項)超過3次。 ? ? 3.4 出現(xiàn)congestion怎么辦? ? ?? ?? ? congestion說明走線太多,要把那一塊的cell推開一些; 避免使用端口太多(>6個)太密的組合邏輯單元; 不要把單元放在M2的power mesh下; macro邊上不要放單元; 使用congestion driven的place和opt; 遇到十分嚴重的congestion時,減小global route可以使用的資源,比如在encounter里面可以讓trail route在若干條走線后,空出一根走線。 ? ? 3.4 仔細分析timing violation,再找解決方法 ? ?? ?? ? 出現(xiàn)timing violation后的第一步是分析那條path,找出違反的原因,然后才是解決辦法。造成timing violation的原因很多,隨便列幾個常見的, ? ?? ?? ? clock tree不平衡:CTS的定義有錯誤;不合理的FF位置,比如,放在了一個很細很長的通道中。利用useful skew消除setup違反 ? ?? ?? ? 起始FF與終點FF的距離太長:用group把它們拉近 ? ?? ?? ? xtalk的干擾:加大線間距離,不要用infinit timing window算xtalk ? ?? ?? ? detour走線造成的大的延遲:解決congestion問題 ? ?? ?? ? fanout太大:忘記set_max_fanout,或者設定不合理,或者對某些net set_dont_touch了 ? ?? ?? ? 單元的驅(qū)動能力太小:去掉大驅(qū)動能力cell的dont_use屬性,檢查是否局部placement太密,沒有空間sizeup了 ? ?? ?? ? hold timing violation與setup violation同時存在,工具無法做了。這種情況多半是SDC的問題,很少是真的,除非那是一個非常特殊的IO timing (4) 低功耗 ? ?? ?? ? 低功耗與高速度是相互矛盾的,要事先確定你更想要哪個,可以犧牲哪個. ? ?? ?? ? 后端對低功耗可以做的事情并不是很多,power island,multiple supply voltage,DVFS等都不是由后端決定的。 ? ?? ?? ? 后端能主導的有, ? ?? ?? ? Multi-Vth單元的替換:建議先不要用LVT單元 ? ?? ?? ? ICG單元在CTS里的位置:當然是在時序容許的條件下,越靠近clock root越好。 ? ?? ?? ? 最后在時序收斂后,再做一次power優(yōu)化 (5) ECO ? ?? ?? ? ECO分為post mask ECO 和pre mask ECO,也就是只修改metal layer的ECO和任何layer都可以動到的ECO ? ?? ?? ? post mask ECO是利用預先留好的備用單元,做的邏輯修改。現(xiàn)在的標準單元庫中,有些FILL cell是帶transister,只要用metal1/2把它們連起來,就可以搭成需要的邏輯單元。這種ECO受限與spare cell的位置,如果附近找不到的話,就比較麻煩了,所以它的修改規(guī)模十分有限。 ? ?? ?? ? pre mask ECO比post mask的要靈活得多。在tapeout之前,如果發(fā)現(xiàn)有修改的地方,就是用這種方法。它可以改幾百個,甚至上千個單元。 ? ?? ?? ? ECO修改組合邏輯比較容易,如果動到FF的話,有格外小心,因為它有可能影響clock tree,進而造成大量的時序違反。 ? ?? ?? ? 做ECO要前端后端聯(lián)手完成,如何單反的一意孤行,不會得到正確的結(jié)果。前端找到要修改的邏輯單元 ==> 后端找到相應的物理位置,檢查周圍是否有足夠的spare cell或者空間做ECO ==》 檢查時序,預估ECO后的時序 ==》后端建議使用的ECO cell ==》 前端修改netlist ==》 后端做ECO place/route ==》 ... ... | |
總結(jié)
以上是生活随笔為你收集整理的数字后端之我见的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。