ASIC設計約束與SDC命令介紹

2023-07-12 12:23:26 來源:FPGA算法工程師

在數字IC設計中,重要的ASIC設計約束分為兩類,主要是:

1.優化約束

2.設計規則約束(DRC)


【資料圖】

根據ASIC邏輯設計,優化的約束是速度和面積。在物理設計中,我們需要對面積、速度和功率進行優化設計。根據所需的技術節點和策略進行更好的功耗規劃,總是有助于獲得芯片的布局。

DRC是晶圓鑄造規則,主要是傳輸、扇出和容量。

約束可用于在邏輯和物理綜合的各個綜合階段優化設計。

這些約束在設計的模塊、頂層和芯片級別。例如考慮如圖所示的處理器架構,可以為各種功能塊指定塊級約束,這些功能塊包括ALU、浮點引擎、高速接口等。頂層約束將在綜合過程中使用,它們用于集成所有功能塊。

處理器頂層架構

如果滿足模塊級約束,并不意味著設計將滿足頂層約束。在物理設計期間,需要滿足干凈布局的芯片級約束。

對于處理器的綜合,以下可能是較好的策略:

為不同的時鐘組執行綜合。使用自底向上的綜合并提取模塊級約束。在模塊級綜合過程中優化設計,以滿足面積和速度的要求。指定頂層約束。執行頂層綜合并優化設計以滿足頂層約束。如果不滿足約束條件,則使用策略來調整RTL架構。

1. 重要設計概念

1.1 時鐘樹

時鐘樹綜合是在物理設計流程中進行的,而在邏輯設計流程中我們沒有時鐘分布的信息。也就是說,我們將嘗試使用具有可用統計數據的Synopsys DC設置來指定時鐘和時鐘延遲。

1.2復位樹

具有多個功能塊初始化復位的設計需要與主復位同步。如果復位是在時鐘的有效邊緣期間產生的,則復位樹可用于避免亞穩態輸出。

要考慮的重要參數是:

1.復位恢復時間

2.復位移除時間

1.3 時鐘和復位策略

在邏輯設計過程中,以下策略可能會對復位和時鐘有所幫助。

1.對于多個時鐘域,在數據和控制路徑中使用同步器。

2.使用統計數據來引入時鐘延遲,并指定邏輯綜合過程中的設置和保持不確定性。

3.在邏輯設計期間手動實例化時鐘。

4.使用復位同步器將復位與主復位同步。

1.4 影響設計性能的是什么?

ASIC設計應滿足速度和面積的優化約束。我們將在物理設計期間使用功率限制和DRC。以下是在綜合過程中需要解決的要點:

模塊級約束:對于復雜的ASIC設計,如果我們考慮多個功能塊或IP,那么應該指定塊級約束。功能塊的塊級約束應該滿足。例如,處理器邏輯工作在250MHz的工作頻率,但整個芯片工作在500MHz。在這種情況下,與頂層約束相比,設置和保持的總體不確定性是不同的。因此,應該在塊級綜合期間使用塊級Tcl腳本。頂層約束:在完成所有功能塊的綜合后,對于自底向上的綜合,進行頂層集成。需要為特定的時鐘組指定頂層約束,主要在Tcl腳本中,應該使用以下命令:

(a)時延信息

(b)輸入時延

(c)輸出時延

(d)setup不確定性

(e)hold不確定性

如果滿足模塊級約束,但不能保證滿足頂層約束。可能原因是這樣的:

1. 如果設計分區不在順序邊界上,則會產生額外的延遲。2. 數據到達速度快,且設計中存在缺陷。3. 數據到達緩慢,并且設計存在設置沖突。4. 如果在綜合過程中,由于多循環和假路徑,會出現定時異常。5. 由于同步策略不佳導致數據完整性降低。6. 如果設計有層次結構,并且DC不能優化粘合邏輯。在這種情況下,設計需要扁平化以提高優化。

2. 約束說明

需要為Verilog文件指定的模塊和頂層綜合的重要約束是面積、速度和功率。讓我們排除功率,因為功率優化不是使用DC進行的。作為一名設計師和綜合團隊成員,我們的目標是對設計有功能性的理解,以及對設計的整體面積和速度要求。

2.1 面積約束

在邏輯綜合期間,該區域是由于使用的邏輯和宏。標準單元信息在庫中可用,并且需要特定的宏來實現設計的低級抽象。整體面積優化可以在過程中進行:

RTL設計:使用資源共享、資源分配、消除死區、使用括號和摸索等概念。綜合:通過使用工具指定的命令和使用區域優化命令,可以優化區域。

2.2 速度約束

速度是特別重要的因素,因為它決定了設計的整體性能。設計的速度約束需要根據特定技術節點的庫中可用的統計數據來制定,并且要滿足這些約束。由于實際的布局布線在邏輯綜合期間不可用,因此目標是仔細查看以消除塊和頂層設計的設置沖突。綜合和STA團隊需要指定以下內容:

1. 時鐘2. 時鐘延遲3. 建立并保持不確定性4. 輸入和輸出最大和最小延遲5. 選擇多周期路徑6. 指定偽路徑

2.3 功率約束

功率是另一個約束條件,在功率規劃中,我們將約束條件指定為漏電和動態功率。為了實現低功耗感知架構和設計,我們將在各個設計階段使用統一功率格式(UPF)。以下是一些優化功率的策略:

架構設計:具有低功耗架構設計,具有上電順序和電源關閉策略。使用低功率單元:在設計過程中使用低功率單元,但設計師需要更好地了解單元的特性,因為這些單元的使用對設計速度有重大影響。RTL設計:在RTL設計中,使用時鐘門控單元來降低動態功率。

3. 設計中的問題

以下是ASIC綜合過程中的重要挑戰:

1. 邏輯的修改。2. 未連接的端口網絡滿足了模塊級速度限制,但在頂層設計上失敗了。3. 雖然RTL驗證成功,但設計的模塊級連接存在缺失。

4. 綜合期間的重要SDC命令

本節討論在綜合過程中使用的重要DC命令,這些命令對于指定約束很有用。

4.1 Synopsys DC命令

在ASIC綜合過程中使用的一些SDC命令記錄在本節中。

1.Reading the design(讀取設計)

**read–format **

以上命令用于讀取設計。

2. Analyze the design(分析設計)

**analyze –format < format_type > **

用于分析設計。它用于報告語法錯誤,并在擁有通用邏輯之前執行設計轉換。通用邏輯是synopsys通用技術獨立庫的一部分。這些組件被命名為GTECH。這個邏輯是布爾函數的未映射表示。

3. Elaborate the design(細化設計)

**elaborate –format < format_type > **

用于細化設計,并可用于在細化過程中為相同的分析設計指定不同的架構。

重要的是要了解Read、Analyze和Elaborate命令的區別。以下是關鍵點:

1. 在進行細化設計的同時,通過分析和細化來傳遞所需的參數。2. 在輸入DC中預編譯的設計或網絡列表時使用讀取。3. 使用analyze和elaboration命令,可以在精化過程中為相同的分析設計指定不同的架構。4. read命令不允許使用不同的架構。

4.2 設計檢查

在使用DC讀取設計之后,使用check_design來檢查設計問題,如短路、斷路、多個連接、實例化和無連接。

4.3 clock定義

需要使用命令create_clock指定時鐘,并且在時序分析期間將其用作參考時鐘。使用create_clock命令定義時鐘的示例如下。

**create_clock–name -period **

該命令用于為設計創建時鐘,作為時序分析時的參考時鐘。如果設計沒有時鐘,那么它將被視為虛擬時鐘。

時鐘有不同的占空比

如果設計者希望使用具有0.5 ns上升沿和2 ns時鐘周期的可變占空比時鐘,則create_clock命令可以修改為

create_clock –name clock - period 2 –waveform {0.5,2} –name processor_clock

虛擬時鐘

如果設計沒有時鐘引腳,則使用以下命令創建虛擬時鐘。

下列命令生成頻率為500mhz,占空比為50%的虛擬時鐘。

create_clock –name clock -period 2

下列命令生成頻率為500mhz的虛擬時鐘,具有可變占空比,上升沿為0.5 ns,下降沿為2 ns。

create_clock –name clock -period 5 –waveform {0.5,2}

4.4 skew定義

正如前面的文章所討論的,偏差是時鐘信號到達之間的差異。如果源觸發器的時鐘相對于目標觸發器延遲,則該偏差稱為負時鐘偏差,對hold有用。如果與源觸發器相比,目標觸發器的時鐘延遲,則該偏差稱為正時鐘偏差,對setup很有用。原因是目標觸發器的時鐘延遲,數據可能由于偏差而延遲到達。

設計編譯器將無法綜合時鐘樹,所以為了克服這個問題,時鐘傾斜是用來指定延遲的!

下列命令由設計編譯器用于指定設計的時鐘傾斜

**set_clock_skew –rise_delay -fall_delay **

4.5 Input /output delay 定義

可以分別使用set_input_delay和set_output_delay命令指定輸入和輸出延遲。用于指定輸入和輸出延遲的命令如下所示。

**set_input_delay –clock **

用于定義輸入延遲。

**set_output_delay –clock **

用于定義輸出延遲。

4.6 指定min/max delay

輸入和輸出延遲可以根據設計需要指定為最小或最大。

Maximum Input Delay

**set_input_delay –clock -max **

用于定義最大輸入延遲。

Minimum Input Delay

**set_input_delay –clock -min **

用于定義最小輸入延遲。

**set_output_delay –clock -max **

用于定義最大輸出延遲。

Minimum Output Delay

**set_output_delay –clock -min **

用于定義最小輸出延遲。

4.7 設計綜合

compile命令用于執行設計綜合。如前一節所討論的,我們需要將設計約束、庫和Verilog文件作為綜合工具的輸入。設計綜合可以使用不同的努力水平(如低、中、高)來執行。

編譯命令指定為:

**compile –map_effort **

4.8 保存設計

write命令用于保存設計。設計人員可以將綜合輸出保存為Verilog (.v)或數據庫(.ddc)格式。該命令可以如下所示指定:

**write –format -output **

5. 約束驗證

下表列出了用于驗證設計的重要命令。

6. DRC、功率和優化約束

下表列出了用于指定設計規則、功率和優化約束的重要命令。

7. 本文總結

總結本文的要點:

設計約束包括優化約束和設計規則約束。綜合是從較高層得到較低層設計抽象的過程。綜合工具使用Verilog文件、庫和約束作為輸入。綜合工具的輸出是門級網表。模塊級和頂層設計的約束應該記錄在單獨的Tcl文件中。Synopsys DC沒有針對功率進行優化。在邏輯綜合過程中,目標是優化設計的面積和速度。

標簽:

上一篇:STM32CubeMx入門教程(8):SDIO應用
下一篇:最后一頁