ICC教程 - Flow系列 - 概念系列 - ECO (理論+實踐+腳本分享)


本文轉自:自己的微信公眾號《集成電路設計及EDA教程》

《ICC教程 - Flow系列 - 概念系列 - ECO (理論+實踐+腳本分享)》

 

這篇推文講一下數字IC設計中的post mask ECO和premask ECO,並講解一下在ICC中Apply ECO的流程。

 

理論:

ECO分為post mask ECO和premask ECO,也就是只修改metal layer的ECO和任何layer都可以動到的ECO。

Post mask ECO:

Post mask ECO是利用預先留好的備用單元(Spare Cell),做的邏輯修改。如果后期發現Timing存在問題(或者想小動Function),可以利用附近的Spare Cell搭配上層金屬連線來修改電路結構。這種ECO受限於Spare Cell的位置,如果附近找不到的話,就比較麻煩了,所以它的修改規模十分有限。

Spare cell: 

Foundry提供一種服務,允許客戶在wafer加工到poly以及M1層的時候,讓大部分wafer暫時停止加工,而少量wafer繼續加工直至完成。之后可以對這些完成了的wafer上的die進行測試,如果發現存在功能或者時序上的問題,那么可以通過利用那些預布在die上的spare cell來解決。由於絕大部分的金屬層都沒有加工,因此在不修改標准單元布局的情況下(也就是不用改動M1以及poly、NW、SP、SN等這些base層的mask,在流片過程中這些層的光刻也是最貴的),只用改動幾層金屬的mask並利用spare cell去修復這些問題。如此一來,也大大降低了流片的風險,試想,如果直接讓所有的wafer都加工完成,測試后發現存在bug,那么幾百萬刀的流片費用變付之東流,這個還不是最重要的,最重要的是產品上市時間delay了。而Post mask ECO則提供了一種根據silicon測試結果進行Debug的方法。

Premask ECO:

Premask ECO比post mask的要靈活得多。在tapeout之前,如果發現有任何需要修改的地方,都可以用這種方法。它可以改幾百個,甚至上千個單元。該操作主要是針對靜態時序分析和后仿真中出現的問題,對電路的網表直接進行修改,待網表修改完畢之后反饋到PR工具中對標准單元的布局和連線進行小范圍的改動。當然,直接對網表進行修改是存在風險的,所以之后一定要進行形式驗證(formal verification)。

ECO修改組合邏輯比較容易,如果動到FF的話,要格外小心,因為它有可能影響clock tree,進而造成大量的時序違反。

 

流程、實踐與腳本分享:

下面以ICC中用ECO的方法修hold違反為例簡單講解ICC中進行premask的ECO方法。

首先在PT中用以下命令修hold:

>fix_eco_timing -hold

之后通過下面的命令來導出PT對網表做出的改動,格式為ICC的tcl腳本格式。

>write_changes -format icctcl -output eco_fix_hold.tcl

接着便可以開始ICC中的ECO流程了,先在ICC中加載PT導出的tcl文件來更改ICC中的網表。

>eco_netlist -by_tcl_file eco_fix_hold.tcl

接着便是在版圖中放置那些網表中新加入的Cell,如果設計中之前已經加過Core Filler了,需要執行下面的命令:

>place_eco_cells -eco_changed_cells \

-legalize_only \

-remove_filler_references "$FILLER_CELL_METAL $FILLER_CELL"

如果之前還沒有加入Core Filler,那么只需要執行下面的命令即可:

>place_eco_cells -eco_changed_cells -legalize_only

放置完新加入的Cell之后還需要對設計重新插入Core Filler,即先插入帶金屬的Filler,再插入那些不帶金屬的Filler。

之后進行電源地的邏輯連接,

# Connect PG nets

> derive_pg_connection \

-power_net {VDD} -power_pin {VDD} \

-ground_net {VSS}  -ground_pin {VSS}

> derive_pg_connection -power_net {VDD} \

-ground_net {VSS} -tie

其中,legalize_placement可以使用check_legality -verbose查看是否有不合法的標准單元布局。由於此時的布線只是少量改動,因此完全可以禁用時序驅動以減少運行時間。

## 然后進行ECO route

>set_route_zrt_global_options -crosstalk_driven false \

-timing_driven false

>set_route_zrt_track_options-crosstalk_driven false \

-timing_driven false

>set_route_zrt -detail_options -timing_driven false

>route_zrt_eco -reroute modified_nets_first_then_others

執行ECO后如果有DRC問題,可以緊接着執行route_zrt_detail,這可以修復絕大部分DRC。

>route_zrt_detail -incremental true \

-max number iterations 20

 

如果ECO改動比較小,可以用一個包含網表編輯命令組成的Tcl文件以及eco_netlist -by_tcl_file命令來更新整個設計。如果使用的是freeze silicon的ECO flow,則必須在該命令后邊加上-freeze_silicon選項。當然也可以直接在命令行中輸入這些網表編輯命令,或者直接source該Tcl文件。

無約束ECO flow中的網表編輯命令有:

下篇推文講解一下在PT中進行ECO的方法並分享一下腳本。

 

更多資料歡迎移步微信公眾號《數字集成電路設計及EDA教程》

 

網易雲課堂視頻課程

  

鏈接:https://study.163.com/course/introduction/1005909004.htm

Calibredrv教程-提高流程自動化

##  為了方便大家交流討論  ##

##  建了一個QQ群  ##

## 集成電路設計及EDA教程  ##

## 加群請備注:EDA  ##

##  群二維碼如下  ##

# 本公眾號有個紅包和資料福利微信群  #

#  集成電路設計及EDA教程福利群  #

#  為了避免亂七八糟的人加進來  #

#  可以先加我微信,我拉你進群  #

#  加我微信 請備注下面問題的答案  #

#       ASIC的全稱       #


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM