本文介紹了數(shù)字IC設(shè)計(jì)中重要的概念,包括時(shí)鐘樹,復(fù)位樹,以及在綜合期間重要的SDC約束命令。
在數(shù)字IC設(shè)計(jì)中,重要的ASIC設(shè)計(jì)約束分為兩類,主要是:
1.優(yōu)化約束
2.設(shè)計(jì)規(guī)則約束(DRC)
根據(jù)ASIC邏輯設(shè)計(jì),優(yōu)化的約束是速度和面積。在物理設(shè)計(jì)中,我們需要對(duì)面積、速度和功率進(jìn)行優(yōu)化設(shè)計(jì)。根據(jù)所需的技術(shù)節(jié)點(diǎn)和策略進(jìn)行更好的功耗規(guī)劃,總是有助于獲得芯片的布局。
DRC是晶圓鑄造規(guī)則,主要是連接、扇出和容量。
約束可用于在邏輯和物理綜合的各個(gè)綜合階段優(yōu)化設(shè)計(jì)。
這些約束在設(shè)計(jì)的模塊、頂層和芯片級(jí)別。例如考慮如圖所示的處理器架構(gòu),可以為各種功能塊指定塊級(jí)約束,這些功能塊包括ALU、浮點(diǎn)引擎、高速接口等。頂層約束將在綜合過程中使用,它們用于集成所有功能塊。
處理器頂層架構(gòu)
如果滿足模塊級(jí)約束,并不意味著設(shè)計(jì)將滿足頂層約束。在物理設(shè)計(jì)期間,需要滿足干凈布局的芯片級(jí)約束。
對(duì)于處理器的綜合,以下可能是較好的策略:
1. 為不同的時(shí)鐘組執(zhí)行綜合。
2. 使用自底向上的綜合并提取模塊級(jí)約束。
3. 在模塊級(jí)綜合過程中優(yōu)化設(shè)計(jì),以滿足面積和速度的要求。
4. 指定頂層約束。
5. 執(zhí)行頂層綜合并優(yōu)化設(shè)計(jì)以滿足頂層約束。
6. 如果不滿足約束條件,則使用策略來調(diào)整RTL架構(gòu)。
1
重要設(shè)計(jì)概念
1.1 時(shí)鐘樹
時(shí)鐘樹綜合是在物理設(shè)計(jì)流程中進(jìn)行的,而在邏輯設(shè)計(jì)流程中我們沒有時(shí)鐘分布的信息。也就是說,我們將嘗試使用具有可用統(tǒng)計(jì)數(shù)據(jù)的Synopsys DC設(shè)置來指定時(shí)鐘和時(shí)鐘延遲。
1.2復(fù)位樹
具有多個(gè)功能塊初始化復(fù)位的設(shè)計(jì)需要與主復(fù)位同步。如果復(fù)位是在時(shí)鐘的有效邊緣期間產(chǎn)生的,則復(fù)位樹可用于避免亞穩(wěn)態(tài)輸出。
要考慮的重要參數(shù)是:
1.復(fù)位恢復(fù)時(shí)間
2.復(fù)位移除時(shí)間
1.3 時(shí)鐘和復(fù)位策略
在邏輯設(shè)計(jì)過程中,以下策略可能會(huì)對(duì)復(fù)位和時(shí)鐘有所幫助。
1.對(duì)于多個(gè)時(shí)鐘域,在數(shù)據(jù)和控制路徑中使用同步器,這已經(jīng)在《IC設(shè)計(jì)中的多時(shí)鐘域處理方法總結(jié)》一文中進(jìn)行了介紹。
2.使用統(tǒng)計(jì)數(shù)據(jù)來引入時(shí)鐘延遲,并指定邏輯綜合過程中的設(shè)置和保持不確定性。
3.在邏輯設(shè)計(jì)期間手動(dòng)實(shí)例化時(shí)鐘。
4.使用復(fù)位同步器將復(fù)位與主復(fù)位同步。
1.4 影響設(shè)計(jì)性能的是什么?
ASIC設(shè)計(jì)應(yīng)滿足速度和面積的優(yōu)化約束。我們將在物理設(shè)計(jì)期間使用功率限制和DRC。以下是在綜合過程中需要解決的要點(diǎn):
1. 模塊級(jí)約束:對(duì)于復(fù)雜的ASIC設(shè)計(jì),如果我們考慮多個(gè)功能塊或IP,那么應(yīng)該指定塊級(jí)約束。功能塊的塊級(jí)約束應(yīng)該滿足。例如,處理器邏輯工作在250MHz的工作頻率,但整個(gè)芯片工作在500MHz。在這種情況下,與頂層約束相比,設(shè)置和保持的總體不確定性是不同的。因此,應(yīng)該在塊級(jí)綜合期間使用塊級(jí)Tcl腳本。
2. 頂層約束:在完成所有功能塊的綜合后,對(duì)于自底向上的綜合,進(jìn)行頂層集成。需要為特定的時(shí)鐘組指定頂層約束,主要在Tcl腳本中,應(yīng)該使用以下命令:
(a)時(shí)延信息
(b)輸入時(shí)延
(c)輸出時(shí)延
(d)setup不確定性
(e)hold不確定性
如果滿足模塊級(jí)約束,但不能保證滿足頂層約束。可能原因是這樣的:
1. 如果設(shè)計(jì)分區(qū)不在順序邊界上,則會(huì)產(chǎn)生額外的延遲。
2. 數(shù)據(jù)到達(dá)速度快,且設(shè)計(jì)中存在缺陷。
3.數(shù)據(jù)到達(dá)緩慢,并且設(shè)計(jì)存在設(shè)置沖突。
4. 如果在綜合過程中,由于多循環(huán)和假路徑,會(huì)出現(xiàn)定時(shí)異常。
5. 由于同步策略不佳導(dǎo)致數(shù)據(jù)完整性降低。
6. 如果設(shè)計(jì)有層次結(jié)構(gòu),并且DC不能優(yōu)化粘合邏輯。在這種情況下,設(shè)計(jì)需要扁平化以提高優(yōu)化。
2
約束說明
需要為Verilog文件指定的模塊和頂層綜合的重要約束是面積、速度和功率。讓我們排除功率,因?yàn)楣β蕛?yōu)化不是使用DC進(jìn)行的。作為一名設(shè)計(jì)師和綜合團(tuán)隊(duì)成員,我們的目標(biāo)是對(duì)設(shè)計(jì)有功能性的理解,以及對(duì)設(shè)計(jì)的整體面積和速度要求。
2.1面積約束
在邏輯綜合期間,該區(qū)域是由于使用的邏輯和宏。標(biāo)準(zhǔn)單元信息在庫中可用,并且需要特定的宏來實(shí)現(xiàn)設(shè)計(jì)的低級(jí)抽象。整體面積優(yōu)化可以在過程中進(jìn)行:
1. RTL設(shè)計(jì):使用資源共享、資源分配、消除死區(qū)、使用括號(hào)和摸索等概念。
2. 綜合:通過使用工具指定的命令和使用區(qū)域優(yōu)化命令,可以優(yōu)化區(qū)域。
2.2 速度約束
速度是特別重要的因素,因?yàn)樗鼪Q定了設(shè)計(jì)的整體性能。設(shè)計(jì)的速度約束需要根據(jù)特定技術(shù)節(jié)點(diǎn)的庫中可用的統(tǒng)計(jì)數(shù)據(jù)來制定,并且要滿足這些約束。由于實(shí)際的布局布線在邏輯綜合期間不可用,因此目標(biāo)是仔細(xì)查看以消除塊和頂層設(shè)計(jì)的設(shè)置沖突。綜合和STA團(tuán)隊(duì)需要指定以下內(nèi)容:
1.時(shí)鐘
2.時(shí)鐘延遲
3.建立并保持不確定性。
4.輸入和輸出最大和最小延遲
5.選擇多周期路徑
6.指定偽路徑
2.3功率約束
功率是另一個(gè)約束條件,在功率規(guī)劃中,我們將約束條件指定為漏電和動(dòng)態(tài)功率。為了實(shí)現(xiàn)低功耗感知架構(gòu)和設(shè)計(jì),我們將在各個(gè)設(shè)計(jì)階段使用統(tǒng)一功率格式(UPF)。以下是一些優(yōu)化功率的策略:
1. 架構(gòu)設(shè)計(jì):具有低功耗架構(gòu)設(shè)計(jì),具有上電順序和電源關(guān)閉策略。
2. 使用低功率單元:在設(shè)計(jì)過程中使用低功率單元,但設(shè)計(jì)師需要更好地了解單元的特性,因?yàn)檫@些單元的使用對(duì)設(shè)計(jì)速度有重大影響。
3.RTL設(shè)計(jì):在RTL設(shè)計(jì)中,使用時(shí)鐘門控單元來降低動(dòng)態(tài)功率。
3
設(shè)計(jì)中的問題
以下是ASIC綜合過程中的重要挑戰(zhàn):
1.邏輯的修改。
2.未連接的端口和網(wǎng)絡(luò)滿足了模塊級(jí)速度限制,但在頂層設(shè)計(jì)上失敗了。
3.雖然RTL驗(yàn)證成功,但設(shè)計(jì)的模塊級(jí)連接存在缺失。
4
綜合期間的重要SDC命令
本節(jié)討論在綜合過程中使用的重要DC命令,這些命令對(duì)于指定約束很有用。
4.1Synopsys DC命令
在ASIC綜合過程中使用的一些SDC命令記錄在本節(jié)中。
1.Reading the design(讀取設(shè)計(jì))
以上命令用于讀取設(shè)計(jì)。
2.Analyze the design(分析設(shè)計(jì))
analyze –format < format_type >
用于分析設(shè)計(jì)。它用于報(bào)告語法錯(cuò)誤,并在擁有通用邏輯之前執(zhí)行設(shè)計(jì)轉(zhuǎn)換。通用邏輯是synopsys通用技術(shù)獨(dú)立庫的一部分。這些組件被命名為GTECH。這個(gè)邏輯是布爾函數(shù)的未映射表示。
3. Elaborate the design(細(xì)化設(shè)計(jì))
elaborate –format < format_type >
用于細(xì)化設(shè)計(jì),并可用于在細(xì)化過程中為相同的分析設(shè)計(jì)指定不同的架構(gòu)。
重要的是要了解Read、Analyze和Elaborate命令的區(qū)別。以下是關(guān)鍵點(diǎn):
1. 在進(jìn)行細(xì)化設(shè)計(jì)的同時(shí),通過分析和細(xì)化來傳遞所需的參數(shù)。
2. 在輸入DC中預(yù)編譯的設(shè)計(jì)或網(wǎng)絡(luò)列表時(shí)使用讀取。
3.使用analyze和elaboration命令,可以在精化過程中為相同的分析設(shè)計(jì)指定不同的架構(gòu)。
4. read命令不允許使用不同的架構(gòu)。
4.2設(shè)計(jì)檢查
在使用DC讀取設(shè)計(jì)之后,使用check_design來檢查設(shè)計(jì)問題,如短路、斷路、多個(gè)連接、實(shí)例化和無連接。
4.3clock定義
需要使用命令create_clock指定時(shí)鐘,并且在時(shí)序分析期間將其用作參考時(shí)鐘。使用create_clock命令定義時(shí)鐘的示例如下。
create_clock–name
該命令用于為設(shè)計(jì)創(chuàng)建時(shí)鐘,作為時(shí)序分析時(shí)的參考時(shí)鐘。如果設(shè)計(jì)沒有時(shí)鐘,那么它將被視為虛擬時(shí)鐘。
時(shí)鐘有不同的占空比
如果設(shè)計(jì)者希望使用具有0.5 ns上升沿和2 ns時(shí)鐘周期的可變占空比時(shí)鐘,則create_clock命令可以修改為
create_clock –name clock - period 2 –waveform {0.5,2} –name processor_clock
虛擬時(shí)鐘
如果設(shè)計(jì)沒有時(shí)鐘引腳,則使用以下命令創(chuàng)建虛擬時(shí)鐘。
下列命令生成頻率為500mhz,占空比為50%的虛擬時(shí)鐘。
create_clock –name clock -period 2
下列命令生成頻率為500mhz的虛擬時(shí)鐘,具有可變占空比,上升沿為0.5 ns,下降沿為2 ns。
create_clock –name clock -period 5 –waveform {0.5,2}
4.4skew定義
正如前面的文章所討論的,偏差是時(shí)鐘信號(hào)到達(dá)之間的差異。如果源觸發(fā)器的時(shí)鐘相對(duì)于目標(biāo)觸發(fā)器延遲,則該偏差稱為負(fù)時(shí)鐘偏差,對(duì)hold有用。如果與源觸發(fā)器相比,目標(biāo)觸發(fā)器的時(shí)鐘延遲,則該偏差稱為正時(shí)鐘偏差,對(duì)setup很有用。原因是目標(biāo)觸發(fā)器的時(shí)鐘延遲,數(shù)據(jù)可能由于偏差而延遲到達(dá)。
設(shè)計(jì)編譯器將無法綜合時(shí)鐘樹,所以為了克服這個(gè)問題,時(shí)鐘傾斜是用來指定延遲的!
下列命令由設(shè)計(jì)編譯器用于指定設(shè)計(jì)的時(shí)鐘傾斜
set_clock_skew –rise_delay -fall_delay
4.5Input /output delay 定義
可以分別使用set_input_delay和set_output_delay命令指定輸入和輸出延遲。用于指定輸入和輸出延遲的命令如下所示。
set_input_delay –clock
用于定義輸入延遲。
set_output_delay –clock
用于定義輸出延遲。
4.6指定min/max delay
輸入和輸出延遲可以根據(jù)設(shè)計(jì)需要指定為最小或最大。
Maximum Input Delay
set_input_delay –clock
用于定義最大輸入延遲。
Minimum Input Delay
set_input_delay –clock
用于定義最小輸入延遲。
set_output_delay –clock
用于定義最大輸出延遲。
Minimum Output Delay
set_output_delay –clock
用于定義最小輸出延遲。
4.7設(shè)計(jì)綜合
compile命令用于執(zhí)行設(shè)計(jì)綜合。如前一節(jié)所討論的,我們需要將設(shè)計(jì)約束、庫和Verilog文件作為綜合工具的輸入。設(shè)計(jì)綜合可以使用不同的努力水平(如低、中、高)來執(zhí)行。
編譯命令指定為:
compile –map_effort
4.8保存設(shè)計(jì)
write命令用于保存設(shè)計(jì)。設(shè)計(jì)人員可以將綜合輸出保存為Verilog (.v)或數(shù)據(jù)庫(.ddc)格式。該命令可以如下所示指定:
write –format
5
約束驗(yàn)證
下表列出了用于驗(yàn)證設(shè)計(jì)的重要命令。
6
DRC、功率和優(yōu)化約束
下表列出了用于指定設(shè)計(jì)規(guī)則、功率和優(yōu)化約束的重要命令。
7
本文總結(jié)
總結(jié)本文的要點(diǎn):
1.設(shè)計(jì)約束包括優(yōu)化約束和設(shè)計(jì)規(guī)則約束。
2. 綜合是從較高層得到較低層設(shè)計(jì)抽象的過程。
3.綜合工具使用Verilog文件、庫和約束作為輸入。
4. 綜合工具的輸出是門級(jí)網(wǎng)表。
5. 模塊級(jí)和頂層設(shè)計(jì)的約束應(yīng)該記錄在單獨(dú)的Tcl文件中。
6. Synopsys DC沒有針對(duì)功率進(jìn)行優(yōu)化。
7. 在邏輯綜合過程中,目標(biāo)是優(yōu)化設(shè)計(jì)的面積和速度。
-
asic
+關(guān)注
關(guān)注
34文章
1205瀏覽量
120600 -
數(shù)字IC
+關(guān)注
關(guān)注
1文章
38瀏覽量
12598 -
SDC
+關(guān)注
關(guān)注
0文章
49瀏覽量
15561
原文標(biāo)題:ASIC設(shè)計(jì)約束與SDC命令
文章出處:【微信號(hào):FPGA算法工程師,微信公眾號(hào):FPGA算法工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論