IC Compiler指南——數據準備

一、概述

????????ICC數據設置的文件關系框圖如圖:

?????????后端工具在數據設置階段需要對兩大類數據進行設置,包括從前端設計繼承的綜合數據 以及后端設計需要的物理數據。

  • 綜合數據主要包括前端邏輯綜合已經設置過的邏輯與時序庫文件、設計約束文件sdc以 及綜合網表文件。
  • 物理數據主要包括標準單元、內存RAM等IPJO管腳三類物理庫文件,工藝和設計規則 檢查相關的技術文件tf以及建模信號互連線延遲的RC模型的TLU+文件。

????????如下圖所示為ICC數字芯片后端設計主要步驟流程圖。圖中第一層準備的三部分數據,分別是綜合映射的門級設計(網表)、約束文件sdc、邏輯與物理庫文件。本文講述的就是第一 層數據設置階段。

?二、邏輯庫設置

????????邏輯庫提供:標準單元(與非門、或非門、異或門、寄存器等)的時序和功能信息;提供宏塊 (RAMROMIP如處理器核心等)的時序信息;定義驅動和負載的設計規則(design rule),如最大/最小扇出Max/Min fanout、最大/最小電容負載Max/Min capacitance、最大/最小信號轉換時延Max/Min transitiono。通常,邏輯庫與前端綜合工具Design Compiler(DC)中的設置相同,通過目標庫target library與鏈接庫link library變量指定。

1、讀入門級網表????????

????????ICC可以打開Milkyway數據庫,讀入由DC創建的門級設計文件,讀入文件類型包括:?ddc、Verilog、VHDL等,其中ddc文件可包含設計屬性信息。ICC可一次讀入多個設計文件, 讀入設計文件(門級網表)的命令具體如下:

read_ddc	                    #讀入ddc	
read_verilog	                #讀入.v文件	
read_vhdl	                    #讀入.vhd文件	
read_verilog filel.v file2.v …	#讀入多個文件

2、多次實例化設計調整

????????IC Compiler不支持有多個實例(non-uniquified)的設計。如下圖中的頂層設計中實例化3PARSER模塊是不允許的。

????????對于包含多個實例的設計,ICC腳本命令需要使用current_ design命令,該命令指定了當前的頂層設計名稱,并執行uniquify命令,實現實例唯一化,即對參考設計實例化模塊的 唯一拷貝

current_design MY_TOP_DESIGN
uniquify

????????對比uniquify操作之前、之后,會發現被多次調用的模塊的模塊名自動添加后綴名,實現 各個模塊的唯一實例化。例如被3次實例化的PARSER的模塊名通過uniquify命令自動改為PARSER_1PARSER_2PARSER_3uniquify命令對于前端以及后端設計的意義在于允許ICC對相同的實例根據各自情況(輸入驅動、輸出負載、輸入和輸出信號的時序要求)獨立優化邏輯,改進設計結果

3、邏輯庫設置

? ? ? ? 這里可以參考DC的設置,

Design Compiler指南——預綜合過程_滄海一升的博客-CSDN博客主要說明Design Compiler的啟動、設置各種庫文件、創建啟動腳本文件、讀入設計文件、DC中的設計對象、各種模塊的劃分等。https://blog.csdn.net/qq_21842097/article/details/120368910????????大致腳本如下:

lappend search_path ./design_data ./scripts MYMMW_libs	#搜索路徑
lappend search_path [glob MYMMW_libs/* /LM]set link_library H* gates_max.db io_max.db rams_max.db"	#鏈接庫
set target_library "gates_max.db"	                    #目標庫
set symbol_library	gates.sdb io.sdb rams.sdbn	        #符號庫

三、物理庫設置

1、物理參考庫

????????物理參考庫(physical reference libraries)用于物理設計的數據庫設置。

????????物理參考庫包含標準單元、宏塊、管腳的布局布線的必要信息。icc的物理參考庫采用的是Milkyway參考庫格式,庫文件夾以mw為后綴名。物理參考庫提供的信息包括:

  • 定義布局的單元塊(tile);
  • 標準單元布局行的行高;
  • 標準單元最小寬度單位(即單元塊的寬度);
  • 布線方向;
  • 布線軌道(track)的間距。

????????物理參考庫設置命令采用創建設計庫命令create_mw_lib,并選項 -mw_reference_library指定設計的物理參考庫。

create_mw_lib -mw_reference_library ...

????????如下圖所示,物理庫包含了芯片加工和底層設計需要的標準單元、宏塊IP以及IO管腳的物理信息。具體包括單元的尺寸、引腳位置、參考點、方向等。

? ? ? ?上圖中符號F作為對稱標識,指示單元是否旋轉或水平/垂直鏡像。布局的標準單元與單元塊(tile)的關系如上圖圖右所示。所有標準單元cell都是tile的面積整數倍,任意一個單元都可以由一個或多個tile 橫向拼接而成tile與標準單元保持相同高度,即標準單元行高。但標準單元的寬度為tile寬度的整數倍。基于單元tile的標準單元版圖設計圖設計簡化了布局排列規則,便于EDA工具建模和電路實現。

????????物理參考庫的信息被保存在Milkyway數據庫中,主要包括以下三種視圖:

  1. CEL:完全的版圖視圖;
  2. FRAM:布局布線中使用的抽象視圖,在布局布線中使用。FRAM包含的信息是CEL 的一部分,占用更少存儲空間;
  3. LM帶時序和功耗信息的邏輯模型LM庫為可選設置)。

????????如下圖所示為saed 32nm物理參考庫文件層次結構,包含三個子文件夾內容。該參考庫文件層次結構顯示的是后端參考庫的標準單元子庫。復雜的后端工藝庫針對不同的工藝角(corner)和不同工作模式(mode)獨立建立后端參考庫的LM db庫文件,以反映不同工作條件下的時序等信息。

2、技術文件的格式與功能

????????技術文件簡稱tf文件(后綴名為.tf)o對于每一種工藝(如IBMO .13umTSMC 90nm)都 需要單獨定義tf文件。tf文件包含金屬層的參數,具體包括:

? ? ? ? tf文件示例如下:

3、指定tlu+文件

????????tlu+(tlu plus)文件為寄生RC模型文件。從布局到布線的各個環節都需要參考tlu+文件提供的RC數據,計算信號線的時間延遲。


????????Cell單元延時由輸入信號電平轉換時間(transition)和門的輸出負載(負載電容之和,包括線網電容Cnet和與線網連接的驅動單元的管腳電容Cpin)決定。

????????線網時延由線網的寄生阻抗Rnet和線網連接負載電容Cnet決定

????????線網和單元的時延分開計算,ICC需要知道線網 的寄生阻抗和電容值。


????????tlu+模型通過線網的幾何信息和文件存儲的查找表計算線網的C和R值。

4、創建設計庫

????????create_mw_lib命令創建設計庫,設計庫是設計的容器,后綴名為mw。物理參考庫與技術文件是在創建Milkyway設計庫時指定。創建設計庫舉例如下:創建設計庫,指定技術文件 和物理參考庫,創建完成后打開庫。打開設計庫的過程類似于其他設計軟件打開一個新建的 工程。

create_mw_lib design_lib_orca -open \           #創建設計庫design_lib_orca并打開
-technology abc_6m.tf \                         #指定技術文件 
-mw_reference_library "sc ram32 io"	            #指定mw參考庫,即物理庫# sc:標準單元庫,io管腳庫,ram32存儲器庫set_check_library_options -all                  #設置檢查庫設置為全部檢查
check_library	                                #檢查庫

? ? ? ? 這里需要說明的是設計庫、設計單元、參考庫和輸入文件關系,如下圖:

????????Milkyway設計庫的UNIX /Linux文件結構如下圖。圖中的lib、lib_1、lib_bak等文件中存儲了內容列表(T.O.C)、導入的技術文件、指向參考庫的指針等。

?????????新創建的設計庫中不包含設計單元,因此在執行create_mw_lib命令后, 只能看到在當前工作路徑下創建了與設計庫同名的文件夾,其中包含lib、lib_1、lib_bak等文 件,但不包含CEL文件夾。執行輸入v格式或者ddc格式的設計后,將自動創建CEL文件 夾,并在CEL中保存與設計頂層模塊同名的設計單元,如orca_init:1。

????????save_mw_cel命令保存CEL視圖。單元名稱中的冒號(:)和數字后綴表示單元保存的文件編號。設計單元在設計庫中保存后,在CEL文件夾中可能存儲多個單元名稱相同,但冒號后數字編號不同的設計文件,這些數字編號不同的文件共同構成了設計單元。

?5、保存和導入設計

????????在導入ddc或者v文件格式的設計后,當設置完成后,保存Milkyway設計的命令為save_mw_cel,舉例如下

save_mw_cel -as xxx

????????選項-as設置保存單元名稱。關鍵設計階段后建議保存設計單元,以便后期設計工作有問題時打開前期設計結果,重復前面階段的設計工作。注意保存單元后,當前ICC 打開的設計還是保存前的設計單元。

????????默認鏈接庫link_library、搜索路徑search_path、目標路徑target_libraryTLU +設置 保存在設計CEL中。如果庫文件更新或者保存位置發生變化,這些設置需要重新加載。如果重新打開CEL,默認保存的設置不會重新加載,除非先進行以下設置(自動重置cel lib設置):

set auto_restore_mw_cel_lib_setup true 
open_mw_cel xxx 

四、檢查及其他操作

1、檢查庫正確加載

????????完成邏輯庫和物理庫設置后,使用check_library命令檢查庫的不一致性,例如在邏輯庫和物理庫之間的cell單元和管腳差異、物理庫內缺少CELFRAM視圖以及多個參考庫中有重復單元等。?

set_check_library_options -all  # 設置檢查庫選項打開
check_library	                #檢查庫命令
check_tlu_plus——files	        # tlu+ 文件檢查單獨完成

????????使用list_libs命令,列出所有邏輯庫文件的名稱、文件、路徑,便于核對。在讀入網表和完成鏈接后,才能使用list_libs命令。list_libs顯示信息的示例如下:

2、定義邏輯電源與地信號連接

????????采用derive_pg_connection命令,定義電源和地網絡P/G名稱,定義單元的電源管腳和地管腳名稱,并將各個單元的電源引腳和地引腳連接到P/G網絡。采用derive_pg_connection 命令,把單元的固定連接高、低電平的管腳用-tie選項控制連接到電源網絡VDDVSS。采 用check_mv_design命令和-power_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
check_mv_design	-power_nets	

3、應用時序約束并檢查

????????ICC的時序約束要與DC綜合階段相同,最好采用兼容的sdc格式。時序約束應用并檢查腳本見表:

????????sdc文件確保包含對時鐘約束偏移、延時、電平轉換時間。采用report_clock? -skew查看設計的時鐘信息。

????????在數據設置階段要確保時鐘沒有定義為傳播時鐘(CTS步驟后時鐘網絡建立后傳播時鐘才有意義),采用report_clock命令查看。

? ? ? ? 此外,在進行設計布圖規劃和布局之前,有必要確保設計沒有被過度時序約束。約束需要和設計指標對應。下面面腳本里顯示了 ZIC (零互連延遲檢查)檢查步驟。首先設置打開互連線零時延模式,忽略線網傳輸時延;再檢查時序,看是否有明顯時序違例;檢查后關閉互連線零時延模式。

set_zero_interconnect_delay_mode true
report_constraint -all
report_timing
set_zero_interconnect_delay_mode false

4、去除不需要的理想線網和網絡

????????在數據設置階段去除不需要的理想網絡,這些網絡一般是高扇出網絡,如復位Reset、置位Set、使能Enable、選通Select等系統控制信號。如下圖所示,當Enable使能信號去掉后,ICC才能根據時序約束和布局走線的幾何信息,合理插入緩沖電路。

?????????理想網絡屬性通過remove_ideal_network命令去除,例子如下:

remove_ideal_network [get_ports Enable Select Reset]

5、數據設置腳本示例

????????包括創建設計庫、設置物理參考庫、設置技術文件、 設置tlu +文件、設置并邏輯連接電源和地網絡信號,以及對完成的各項設置檢查。

createjnw_lib design_lib_orca -open - technology techfile.tf \ -mw_reference_library “sc io ram32" set_check_library_options -all 
check_library set_tlu_plus_files - max_tluplus cbl3_6m_max.tluplus \ -min_tluplus cbl3_6m_min.tluplus \ -tech2itf_map cbl3_6m.mapcheck_tlu_plus_files import_designs design. v -format verilog - top ORCA list_libs 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 check_jnv_design -power_netsread_sdc constraints.sdc  #如果讀入包含約束信息的ddc,可忽略該步驟 check_timing  report_timing_requirements 
report_disable_timing 
report_case_analysis r
eport_clock
report_clock -skewsource tim_opt_ctrl.tcl #調用時序優化控制腳本 set_zero_interconnect_delay_mode true 
report_constraint -all 
report_timing set_zero_interconnect_delay_mode false remove_ideal_network Eget_ports "Enable Select Reset"] save_mw_cel - as xxx_setup

? ? ? ? 其中,時序和優化控制腳本中設定的變量和命令影響ICC后續步驟,因此需要在設計規劃(布圖)之前設定。示例如下:

#tim_opt_ctrl.tclset_app_var timing_enablejnultiple_clocks_per_reg true 
set_app_var case_analysis_with_logic_constants true 
set_fix_multiple_port_nets -all -buffer_constants 
set_auto_disable_drc_nets -constant false 
set_dont_use < off_limit_cells> 
set_prefer - min < hold_fixing_cells> 
set_app_var physopt_delete_unloaded_cells false 
set_ideal_network [all_fanout -flat -clock_tree] 
set_cost_priority {max_transition max_delay} 
set_app_var enable_recovery_removal_arcs true 
set-max_area 0 
set_app_var physopt_power_critical_range < t> 
set_app_var physopt_area_critical_range < t>

? ? ? ? 更多的變量和命令設置,可以查看ICC軟件幫助或用戶手冊。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/253416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS Xcode全面剖析

前言 前幾天在公司內部做了一次關于iOS的入門分享&#xff0c;聽眾有PHP、Web、Android、測試、產品、UI等&#xff0c;主旨是力求不懂iOS的人能了解iOS的開發流程&#xff0c;聽后都能創建一個iOS項目并打印HelloWorld。&#xff08;這是背景&#xff09;你想想就這么點需求&a…

VS2013編譯OBS源碼

obs源碼來之&#xff1a;https://sourceforge.net/projects/obsproject/ 下載源碼之后直接打開sln索引文件就行 項目打開之后 obs作為啟動項 直接編譯就行&#xff0c;正常應該一下就能編譯成功。 在運行的時候可能會報錯&#xff1a; 這個問題就需要制定一下編譯輸出路徑&…

Y/C分離/2/3D濾波器

待整理http://blog.csdn.net/yangzhifu/article/details/7388101 http://wenku.baidu.com/view/f997d705cc1755270722086d.html

構建之法閱讀筆記04

敏捷開發是一系列價值觀和方法論的集合。在敏捷的大旗下&#xff0c;我們可以看到好幾種軟件開發的方法論&#xff0c;我們在這里主要分析Scrum這個方法論。 從Scrum方法論中分析&#xff0c;敏捷開發一共分四步&#xff1a; 第一步&#xff1a;找出完成產品需要做的事情——Pr…

js圖片切換

1.不同方式的圖片切換 功能點:   1.頁面默認循環切換,循環切換按鈕獲得焦點   2.點擊順序切換時,順序切換按鈕獲得焦點     點擊上一張時,當圖片為第一張時,圖片不再進行切換,圖片張數和描述也不在變動;     點擊下一張時,當圖片為最后一張時,圖片不再進行切換,圖片…

網絡攝象機常用傳輸協議

多播路由是一個很好的技術&#xff0c;在Internet上實現了對數據的“廣播”&#xff0c;不同于廣播的是&#xff0c;由于廣播風暴的問題&#xff0c;路由器是禁止廣播數據跨路由傳送的。而多播則很好的解決了這個問題。現在M$軟件如&#xff1a;Netmeeting&#xff0c;WMS就廣泛…

CIS關鍵工藝技術概覽

相機作為一種媒介&#xff0c;可以記錄光所體現的物體&#xff0c;使人們能夠主觀或客觀地表達各種情感和思想。當代人類身處于一個所謂的“數字游牧時代”&#xff0c;人們攜帶各類移動數碼設備&#xff0c;生活不受時空的限制。在當今時代&#xff0c;相較于膠片相機&#xf…

Properties

Properties配置文件說明 Properties類對應.properties文件。文件內容是鍵值對&#xff0c;鍵值對之間使用""或空格隔開。開頭是"#"的表示注釋Properties類在加載.properties文件時使用的iso8859-1的編碼。所以這個文件中的中文要特殊處理&#xff1a;如果這…

1215 - Cannot add foreign key constraint

2019獨角獸企業重金招聘Python工程師標準>>> 參考網頁 https://blog.csdn.net/yiwangxiblog/article/details/52269527 https://blog.csdn.net/ytm15732625529/article/details/53729155 原因--親測 兩張表的存儲引擎不一致。主鍵所在表和外鍵所在表的存儲引擎改成一…

陳敏敏-130242014024-實驗一

實驗報告一 課程 軟件體系結構與設計 實驗名稱 軟件設計的網絡環境 第 頁 專業 軟件工程 班級 1班 學號 130242014024 姓名 陳敏敏 實驗日期&#xff1a; 2017 年 9 月 14 日 報告退發 (訂正 、 重做) 一、實驗目的 1.復習軟件工程的重要概念&…

音頻編碼

http://jsjdmtjs.jpk.dlpu.edu.cn/jxzy/kecheng/4-2.html

jquery 滾動條位置的

$(#fixedHead).width()//div的寬度 $(#fixedHead)[0].scrollWidth//滾動條的寬度 兩者的差為滾動條的寬度var b1$("#div1").height();//div的高度 var b2$(this)[0].scrollTop;//滾動條距離頂端的位置 var b3$(this)[0].scrollHeight;//滾動區的高度 b3b1b2滾動條到底…

Css3實現波浪線效果1

一、波浪線 &#xff0c;常用 .info::before {content: ;position: absolute;top: 30px;width: 100%;height: 0.25em;background:linear-gradient(135deg, transparent, transparent 45%, #008000, transparent 55%, transparent 100%),linear-gradient(45deg, transparent, tr…

ZZUOJ 10508: 數列游戲IV

題目鏈接&#xff1a;http://acm.zzu.edu.cn:8000/problem.php?id10508 題目大意&#xff1a;給定一個序列&#xff0c;長度為N&#xff0c;每次詢問為一組區間[Li,Ri],輸出Li到Ri中出現恰好兩次的不同數的個數. N,M<2*10^5&#xff0c;序列中元素<10^9 解題思路&#x…

dm368ipnc 重寫架構中的swosd 實現中文osd

appro的ipnc中只實現了英文的osd疊加&#xff0c;就連小小的ascii碼表都沒有覆蓋全&#xff0c;而且該swosd架構灰常凌亂。 其實無非就是兩個功能&#xff0c;一是疊加文字&#xff0c;而是疊加圖片&#xff0c;由于考慮到兼容不同的分辨率的視頻流&#xff0c;所以處理的分支相…

JAVA加密算法系列-AesCBC

package ***;import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;/** * AES 是一種可逆加密算法&#xff0c;對用戶的敏感信息加密處理 * 對原始數…

dubbo系列(一)

進入官網之后&#xff0c;找到 http://dubbo.apache.org/en-us/docs/user/quick-start.html 有一個鏈接跳轉到這里 http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html 使用git將項目下載下來 修改如下Service實現類 1 /*2 * Licensed to the Apache Softw…

基于Flask實現后臺權限管理系統 - 表設計

1.1. 設計 1.1.1. 用戶表 用戶表記錄系統中的所有用戶&#xff0c;是權限管理系統最基本的部分&#xff0c;和其他權限表都有一定的關聯關系&#xff0c;同時&#xff0c;一個還有一個重要的功能&#xff1a;系統登陸。 名稱 數據類型 允許空值 默認值 描述 ID VARCHAR …

DM8168的McSPI/McASP/McBSP接口

McSPI接口 SPI管腳&#xff1a; 管腳 類型 描述 SPI_SCLK I/O SPI串行時鐘&#xff08;MASTER時&#xff1a;輸出&#xff1b;SLAVE&#xff1a;輸入&#xff09; SPI_D0 I/O 能被配置為輸入或輸出&#xff08;MOSI&#xff1a;master out&#xff0c;slave in或MISO&…

Sencha ID的注冊

sencha id的注冊用不著翻墻&#xff0c;直接訪問下面的地址https://www.sencha.com/forum/register.php輸入你的個人信息敞開來注冊&#xff0c;我的注冊名為charlie2018w非常順利的過程你免費注冊的id只能用30天。擁有這個id你就可以在eclipse或者sencha artchitect3或者webst…