邏輯綜合——工藝庫

一、庫文件的設置

運行DC時需要用到的庫文件有:目標庫(target library)、鏈接庫(link library)、符號庫(symbol library)、算術運算庫(synthetic library)。

1、目標庫

目標庫是綜合后電路網表最終要映射到的庫。目標庫一般由晶圓廠(Foundary)提供,常為.db的格式。

目標庫包含各個門級單元的行為、引腳、面積、時序信息、功耗方面的參數等信息。DC在綜合時就是根據目標庫給出的單元電路的時序信息來計算延遲,并根據各個單元的延時、面積和驅動能力的不同選擇合適的單元來優化電路。下圖是工藝庫中一個cell的信息

2、鏈接庫

鏈接庫設置模塊或單元電路的引用。對于所有DC用到的庫,我們需要在鏈接庫中指定,其中包括要用到的IP。

目標庫更多的指標準單元,鏈接庫更多的指IP,如RAM,IO等

在鏈接庫的設置中必須添加“ * ”,表示DC在引用實例化電路或者單元電路時首先搜索已經調進DC memory的模塊和單元電路;否則,可能會出現無法匹配的警告信息。同時,在設置鏈接庫的時候要注意設置search_path,命令為:lappend search_path {"path name"}。則整個流程為:路徑面前加*號表示開辟一塊單獨的內存空間給DC自己使用,然后先搜尋內存中已有的庫,然后再搜尋變量link_library指定的其他庫。DC搜尋的庫為search_path指定的目錄(比如說之前讀入設計時讀入了庫a,庫a存到內存里;這時DC在進行綜合的時候,發現缺少某個東西,于是就先從庫a里面找,找不到時就會從列表里面的變量路徑中找)。

如果需要將已有的設計從工藝A轉到工藝B時,可以將當前的單元綜合庫A設為link_library,而將單元綜合庫B設為target_library,重新映射一下就可以了。

3、符號庫

符號庫是定義了單元電路顯示的schematic(原理圖)的庫。使用圖形界面查看、分析電路原理圖時需要設置。假如沒有設置,DC會用默認的符號庫取代。

4、算數運算庫

這個庫一般是synopsys的庫:DesignWare library 和標準單元庫,這里指定的就是庫的名字了。

DesignWare library 這個庫是synopsys的IP庫:當使用到synopsys公司的IP核的時候比如使用了該公司的乘法器IP,那么就要定義這個綜合庫;此外,當需要用到這個庫的一些比較高端的IP核的時候,是需要相關的證書(license)的。例如當你在代碼中用來“*”或者“+”這操作,那么DC會通過這個你指定的綜合庫進行映射或者優化這些操作符。

二、工藝庫

一般來說,運行DC時需要用到的庫文件有:目標庫(target library)、鏈接庫(link library)、符號庫(symbol library)、算術運算庫(synthetic library)。目標庫和鏈接庫合稱為工藝庫。絕大多數的數字設計流程都是基于標準單元的半定制設計流程。標準單元庫包含了反相器、緩沖、與非、或非、與或非、鎖存器、觸發器等等邏輯單元綜合模型的物理信息,標準單元是完成通用功能的邏輯,具有同等的高度(寬度可以不同),這樣方便了數字后端的自動布局布線。

1、概述

一個ASIC綜合庫包括如下信息:

  • 一系列單元(包括單元的引腳)。
  • 每個單元的面積(在深亞微米中,一般用平方微米表示,在亞微米工藝下,一般用來稱呼,至于具體的單位,可以咨詢半導體制造商)。
  • 每個輸出引腳的邏輯功能。
  • 每個輸入到輸出的傳遞延時,輸出到輸出的傳遞延時;inout到輸出的傳遞延時。

2、內容與結構

Synopsys的工藝庫是一個.lib文件,經過LC編譯后,產生.db文件。工藝庫文件主要包括如下信息:

  • 單元(cell)(的信息):(主要有)功能、時間(包括時序器件的約束,如建立和保持)、面積(面積的單位不在里面定義,可按照規律理解,一般詢問半導體廠商)、功耗、測試等。
  • 連線負載模型(wire load models):電阻、電容、面積。
  • 工作環境/條件(Operating conditions):制程(process)(電壓和溫度的比例因數k,表示不同的環境之間,各參數縮放的比例)
  • 設計規則約束(Design ):最大最小電容、最大最小轉換時間、最大最小扇出。

工藝庫的結構如下所示:

? ? ? ? ? ? ? ??

文本描述如下所示:

        ??

        

           ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

       ??

(1)首先是庫的屬性的描述:

? ? ? 通用屬性描述(general attribute):主要是工藝類型、延遲模型、替代交換方式、庫特征、總線命名方式等信息

  •  工藝類型:這個庫沒有給出,主要用來說明這個庫是CMOS工藝還是FPGA工藝。默認是CMOS工藝。
  •  延遲模型:指明在計算延遲時用的那個模型,主要有generic_cmos(默認值)、table-lookup(非線性模型)、piecewise-cmos(optional)、dcm(Delay Calculation Module)、polynomial。
  •  替代交換方式:這里選的是匹配封裝的方式。具體的信息可以查閱其他治療或者詢問半導體廠商。
  •  庫特征:報告延遲計算,也就是這個庫具有延遲計算的特征。
  •  總線命名方式:定義庫中總線命名規則。例如:bus_naming_style:"Bus%spin%d";這個庫沒有進行總線規則的命名。

? ? 庫的文檔資料屬性(document attribute):主要是庫的版本、庫的日期、還有注釋。例如:

  •   用庫報告命令report_lib可顯示日期例如:Date:"Wed Jun 22 12:31:54 2005"。
  •   修正版屬性定義庫的版本號碼,例如Revision:1.3;
  •   注釋屬性用于報告report_lib命令所顯示的信息,如版權或其他產品信息。例如:Comment:"Copyright (c) 2005 Artisan Components, Inc. ?All Rights Reserved.”

? ??定義單位屬性(unit attribute):

?  ?Design Compiler工具本身是沒有單位的。然而在建立工藝庫和產生報告時,必須要有單位。庫中有6個庫級屬性定義單位:time_ unit(時間單位)、voltage_unit(電壓單位)、current_ ?unit(電流單位)、pulling_resistance_unit(上/下拉電阻單位)、capacitive_load_unit(電容負載單位)、leakage_power_unit(漏電功耗單位)。單位屬性確定測量的單位,例如可在庫中用毫微秒(nanoseconds)或皮法拉(picofar-ads)作為時間和電容負載的單位。

(2)接下來是環境描述

  主要包括操作條件(operation conditions)、臨界條件定義(threshold definitions)、默認的一些環境屬性(default attributes)、一些(時序、功耗)模型(templates)、比例縮放因子(k-factors)、I/O pad屬性(pad attributes)、線負載模型(wire-loads)。

? ? 操作條件(operation conditions):

? ? ?在工藝庫中,用操作條件設置了制程(process)、溫度(temperature)、電壓(voltage)與RC樹模型(tree_type)。

  在綜合和靜態時序分析時,DC要用到這些信息來計算電路的延遲,而庫中的這組操作條件為基礎(也就是nom_xxxx)操作條件。一個工藝庫只有這么一組基礎的操作條件,如果要使用不同的操作條件,則需要借助K參數了(見后面)。制程、溫度、電壓這些很好理解,下面主要說一下這個RC樹模型(tree_type)。

  tree-type屬性定義了布局之前延時的計算方式。此外,線負載模型是根據連線的扇出來估算連線的RC寄生參數的,RC如何分配就是根據這個tree-type屬性來的。

  連線延時(從驅動引腳的狀態變化到每個接受單元輸入引腳的狀態變化,線負載模型設每個分枝的延遲是一樣的。)的一個示例如下圖所示:

?    

  在這個簡單的電路中,BUF1的輸出驅動兩個單元:BUF2與BUF3。在物理上,這是兩根連線。而在網表中,兩根連線用一個net來表示。 ???

  在布局前,假設這兩根線有相同的寄生電阻與寄生電容,即Cwire1-Cwire2=R1-R2?。

假設我們想了解從BUF1的輸出到BUF2的輸入端的延時。這個延時實際上是給連線及BUF2的輸入引腳負載進行充、放電所消耗的時間。

????如何計算這個延時呢?tree-type就是為此而定義的。Tree-type有三種取值,這個延時就有三種計算模型。

  A:當它取值為worst-case-tree時,連線的寄生參數采用集總模型,即用Cwire*(Cwire 1+Cwire2)這個乘積表示連線的等效電容,Rwire(R1+R2)表示連線的等效電阻。C1表示BUF1輸入引腳的等效電容。C2表示BUF2輸入引腳的等效電容。從BUF 1到BUF2的延時計算模型下圖所示:

    ?

  在這種模型中,net本身的延遲為Rwire*Cwire?.

  B:當tree-type取值為best-case-tree時,計算延時的RC模型如下圖所示:

    ?

      在這種模型中,Rwire為0,因此net本身的延時為0

  C:當tree-type取值為balanced-tree時,計算延時的RC模型如下圖所示:

?      

    在這種模型中,net的延時為Rwire*Cwire/(N^2)。這里N表示負載數目,本例中取值為2.

? ? 臨界條件定義(threshold definitions):

? ? ? 主要是定義一些極限值,比如時鐘抖動的最大最小值、輸出輸出的上升下降沿的最大最小值等等信息,如下圖所示:

? ??默認的一些環境屬性(default attributes):

? ? ?主要是默認漏電流功耗密度、標準單元的漏電流功耗、扇出負載最大值、輸出引腳的電容、IO類型的端口電容、輸入引腳的電容、最大轉換時間。

? ? 一些(時序、功耗)模型(templates):

? ? ? 都是寫查找表模型,主要是功耗(比如輸入轉移時間的功耗)、時序(比如輸入線轉換的延時、建立時間和保持時間的延時)等等,根據不同的操作環境,進行查表進行選擇對應的參數。

? ??比例縮放因子(k-factors):

? ? ? ?由于一般庫中只有單元“nom_xxx”的值,為了計算不同的制程、電壓和溫度下單元的延遲(或者說是計算不同的操作條件),庫中提供了比例縮放因子

 I/Opad屬性(pad attributes):

? ? ? 主要就是定義I/O引腳的電平屬性,告訴你輸入是COMS還是TTL,什么時候達到高電平、什么時候是低電平。

? ??線負載模型(wire-loads):

 ? 工藝庫的線負載模型如下所示:

???    

?   DC采用wire-load模型在布局前預估連線的延時。通常,在工藝庫中,根據不同的芯片面積給出了幾種模型(上圖所示)。這些模型定義了電容、電阻與面積因子。此外,導線負載模型還設置了slope與fanout_length,fanout-length設置了與扇出數相關的導線的長度。

  有時候,除了扇出與長度,該屬性還包括其他參數的值(這個工藝庫沒有),例如average_capacitance、standard_deviation與number_of_nets,在DC產生導線負載模型時會自動寫出這些值。對于超過fanout-length屬性的節點,可將該導線分成斜率不同的幾段,以確定它的值。

(3)工藝庫剩下的全是標準單元(cell)的描述:如反相器、觸發器、與非門、或非門的描述等:

? ? 標準單元內容概述

  綜合庫中的每個單元都包括一系列的屬性,以描述功能、時序與其他的信息。 在單元的引腳描述中,包含了如下內容:輸入引腳的fanout-load屬性、輸出引腳的max_fanout屬性、輸入或輸出引腳的max_transition屬性、輸出或者inout引腳的max_capacitance屬性。利用這些描述,可以對設計進行DRC(設計規則檢查)。如果某個單元的輸出最大只能接0.2pF的負載,但在實際綜合的網表中卻連接了0.3pF的負載,這時候綜合工具就會報出DRC錯誤。

  通常,fanout_load與max_fanout一起使用max_transition與max_capacitance一起使用。 如果一個節點的扇出為4,它驅動3個與非門,每個與非門的fanout-load是2,則這三個與非門無法被驅動(因為3*2>4)。

  max_transition通常用于單元的輸入引腳,max_capacitance一般用于單元的輸出引腳。如果任何節點的transition時間大于引腳的max_transition值,則該節點不能連接。如果發生違例,則DC用一個具有更大max_capacitance值的單元來取代驅動單元。

  在對輸出引腳的描述中,給出了該引腳的功能定義,以及與輸入弓}腳相關的延時。輸入引腳定義了它的引腳電容與方向。這個電容值不能與max_capacitance值相混。DC利用輸入引腳的電容值進行延時計算,而max_capacitance僅用來進行設計規則檢查。

  對于時序元件中的時鐘引腳,專門用clock類型進行說明,如下所示:

?    

????注:許多設計者都會抱怨工藝庫中對單元的DRC屬性設置不當,這是由于庫的能力是有限的所致。對于一個設計,綜合庫的DRC設置可能很合適,而對于另一個設計就可能不太合適。這時候,需要設計者對綜合庫進行“剪裁”。當然,這種“剪裁”必須比庫中的定義更為嚴格。如將一個庫中buffd0的Z端的max_fanout由4.0改為2.0的命令:

? ? dc_shell> set_addribute ?find(pin, ex25/BUFFDO/Z) ?max_fanout ?2.0

上述的命令可以寫在synopsys-dc.setup文件中。

三、標準單元的內容

1、單元時序信息

在一個單元的綜合庫中,最核心的是對時序和功耗的描述。單元時序模型旨在為設計環境中的單元的各種實例提供精確的時序,模擬單元操作的實際情況。

一個單元的延時跟以下因素有關:器件內部固有的延時、輸入轉換時間(也稱為輸入上升/下降時間)、負載(驅動的負載及連線)、溫度、電壓、制程變化。前三個因素是由電路本身的特性所決定的,后三個因素是由環境決定的。在實際電路中,輸入轉換時間、負載與連接單元的電路有關,所以我們只需要列出在不同的輸入轉換時間、不同的負載下單元的延時就可以了(這個延時包括器件的內部固有延時)。在確定了之后,我們就可以根據時序模型來確定單元延時了。通常來說,標準單元的時序模型有線性模型非線性模型兩類,Synopsys支持的延時模型包括:CMOS通用延時模型、CMOS分段線性延時模型和CMOS非線性延時查找表模型(Nonlinear Delay Model)。前兩種模型精度較差,已經被淘汰,主要用非線性延時模型。

?非線性延時模型也稱為二維非線性延時模型。在該模型中,用二維列表的形式給出單元在特定的輸入轉換時間、輸出負載下的延遲(包括單元的延時和單元的輸出轉換時間)。單元的輸出轉換時間又成為其驅動的下級單元的輸入轉換時間。庫中每個單元有兩個NLDM表。對于在范圍之內的點,可以用插值的方法得到;對于在范圍之外的點,可以用外推的方法得到。線性插值如下圖所示:

?      

計算延時的公式為:

????????????????Z=A+B*L+C*S+D*L*S? ? ? ?其中,Z代表單元的延時,A, B, C, D是系數,L為輸出節點電容,S為輸入轉換時間。

2、單元功耗信息

功耗主要分為兩部分:靜態功耗和動態功耗。 其中靜態功耗是指泄漏功耗,動態功耗包括翻轉時的短路功耗及節點電容的充放電所消耗的功耗。節點電容充放電消耗的功耗僅跟VDD、節點翻轉率及節點電容有關。其中,VDD和節點電容是固定的,節點翻轉率跟輸入激勵有關,需要通過仿真激勵進行計算。因此,在綜合庫中,不列出充放電功耗。而短路功耗跟輸入轉換時間和節點電容有關,一般以查找表的形式給出(在綜合庫中,用internal_power表示)。

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

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

相關文章

weka 初練之 文本分類

0.注意weka的中文編碼RunWeka.ini-----》fileEncodingutf-81.首先對分詞后的 無新詞發現的分詞文件,轉換成arff文件 命令java weka.core.converters.TextDirectoryLoader -dir D:\weibo\catagory\data10W\nlpirSegment\noNI > D:\weibo\catagory\data10W\nlpirSe…

[COGS 0065][NOIP 2002] 字串變換

65. [NOIP2002] 字串變換 ★★ 輸入文件:string.in 輸出文件:string.out 簡單對比時間限制:1 s 內存限制:128 MB [問題描述] 已知有兩個字串A\$, B\$及一組字串變換的規則(至多6個規則): A1\$ ->…

基與datatable的分頁

在進行分頁操作前,必須知道開啟服務器模式后會向服務器發送的參數的含義: length:告訴服務器每頁顯示的數據條數 start:第一條數據的起始位置 draw:繪制計數器,(特殊:服務器接收到參數后,需要返…

linux sock_raw原始套接字編程

sock_raw原始套接字編程可以接收到本機網卡上的數據幀或者數據包,對與監聽網絡的流量和分析是很有作用的.一共可以有3種方式創建這種socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)發送接收ip數據包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|E…

邏輯綜合——施加約束

Design Compiler時一個約束驅動(constraint-driven)的綜合工具,它的結果與設計者施加的約束條件密切相關。 一、面積約束 進行面積的約束,也就是告訴DC綜合的電路面積要在多少以內。在介紹約束命令之前,先了解一下面積…

[Codevs] 1004 四子連棋

1004 四子連棋 時間限制: 1 s空間限制: 128000 KB題目等級 : 黃金 Gold題目描述 Description在一個4*4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰…

鏈接中獲取文件名

算得上是-test.pdf 獲取文件名 var str http://aaa.com/s/ddd/算得上是-test.pdf; console.log(str.match(/([^/*.])\.\w$/)) console.log(str.match(/([^/*.])\.\w$/)[0]) // 轉載于:https://www.cnblogs.com/cssfirefly/p/6163370.html

邏輯綜合——優化電路

對進行時序路徑、工作環境、設計規則等進行約束完成之后,DC就可以進行綜合、優化時序了,DC在優化過程中主要的策略將在下面進行說明。然而,當普通模式下不能進行優化的,就需要我們進行編寫腳本來改進DC的優化來達到時序要求。 DC…

DOM包裹wrap()方法

DOM包裹wrap()方法 如果要將元素用其他元素包裹起來,也就是給它增加一個父元素,針對這樣的處理,JQuery提供了一個wrap方法 .wrap( wrappingElement ):在集合中匹配的每個元素周圍包裹一個HTML結構 簡單的看一段代碼: &…

usleep函數

usleep功能把進程掛起一段時間, 單位是微秒(百萬分之一秒); 頭文件: unistd.h 語法: void usleep(int micro_seconds); 返回值: 無 內容說明:本函數可暫時使程序停止執行。參數 micro_seconds 為要暫停的微…

限制Xamarin獲取圖片的大小

限制Xamarin獲取圖片的大小在App開發中,經常會使用網絡圖片。因為這樣不僅可以減少App的大小,還可以動態更新圖片。但是手機使用網絡環境千差萬別。當網絡環境不是理想的情況下,加載網絡圖片就是一個棘手的問題了。為了避免長時間加載圖片影響…

Linux應用開發自學之路

前言 在 「關于我 」那篇博文里,朋友們應該知道了我不是科班出身,是由機械強行轉行到Linux應用開發方向。下面我就詳細向大家介紹自己這一路上的轉行歷程,希望對大家有所啟發。 我是學機械專業的,對于機械專業我還是很感興趣&…

Verdi 基礎教程

一、Verdi 功能 查看設計debugVerdi不能自己產生波形 二、Verdi使用流程 1、Verdi環境配置 .bashrc中配置 export Verdi_HOME$Synopsys_Dir/Verdi2015 #export NOVAS_HOME$Synopsys_Dir/Verdi2015 export PATH$Verdi_HOME/bin:$PATH export LD_LIBRARY_PATH"/opt/Syno…

ida和idr機制分析(盤符分配機制)

內核ida和idr機制分析(盤符分配機制) ida和idr的機制在我個人看來,是內核管理整數資源的一種方法。在內核中,許多地方都用到了該結構(例如class的id,disk的id),更直觀的說&#xff0…

MIPI CSI-2學習

CSI(Camera Serial Interface)定義了攝像頭外設與主機控制器之間的接口,旨在確定攝像頭與主機控制器在移動應用中的標準。 關鍵詞描述 縮寫解釋CCICamera Control Interface(物理層組件,通常使用I2C或I3C進行通信&…

internet網絡 checksum校驗和計算方法

http://hi.baidu.com/%CE%C4%B3%AD%B9%AB/blog/item/7d9a4e08f82d72b32eddd4cb.html

最有效的創建大數據模型的6個技巧

數據建模是一門復雜的科學,涉及組織企業的數據以適應業務流程的需求。它需要設計邏輯關系,以便數據可以相互關聯,并支持業務。然后將邏輯設計轉換成物理模型,該物理模型由存儲數據的存儲設備、數據庫和文件組成。 歷史上&#xff…

【轉】Castle Windsor之組件注冊

【轉】Castle Windsor之組件注冊 注冊方式較多&#xff0c;大體有這么幾種&#xff0c;學習得比較粗淺&#xff0c;先記錄&#xff1a;1、逐個注冊組件即對每個接口通過代碼指定其實現類&#xff0c;代碼&#xff1a;container.Register(Component.For<IMyService>() //接…

Verilog 補碼加法溢出判斷及處理

補碼加法運算溢出判斷三種方法&#xff1a; 一、符號位判斷 Xf、Yf分別兩個數的符號位,Zf為運算結果符號位。 當Xf Yf 0&#xff08;兩數同為正&#xff09;,而Zf1(結果為負)時,負溢出&#xff1b;當出現Xf Yf 1&#xff08;兩數同為負&#xff09;,而Zf0&#xff08;結果為…

Android繪制(三):Path結合屬性動畫, 讓圖標動起來!

Android繪制(一):來用shape繪出想要的圖形吧! Android繪制(二):來用Path繪出想要的圖形吧! 目錄 效果圖前言繪制屬性動畫最后效果圖 不廢話, 直接上效果圖, 感興趣再看下去. 其實不單單是效果圖演示的, 運用熟練的話各種圖標之間都是可以切換的. 前言 之前的文章也說了, path還…