
LEC2 Workbench是萊迪思推出的一系列技術博客文章,重點關注使用萊迪思產品的應用開發。這些文章由萊迪思教育能力中心(LEC2)的 FPGA 設計專家撰寫,LEC2是與萊迪思半導體密切合作推出的完整培訓和教育計劃。該計劃將包含萊迪思半導全部的FPGA產品、解決方案集合、設計工具和方法。
在芯片設計的前期,低功耗FPGA平均由幾千個查找表(LUT)組成。然而,隨著深亞微米制造技術的進步,如今的低功耗FPGA可以支持多達100K LUT或更多。這些更為復雜的FPGA還結合了處理器、存儲器模塊和其他IP模塊。FPGA日益復雜,因而需要結構更加優化的設計流程,不僅需要有擴展性,還要為FPGA設計人員提供足夠的靈活性來定義無縫的設計方法。
FPGA開發的主要目標是設計符合應用性能要求的安全可靠的電路。因此,FPGA設計過程中最重要的一個步驟就是合理地說明和驗證設計的時序約束,確保它們針對模塊的時序和性能要求進行了優化。這同樣也適用于未約束的路徑,因為未能對其進行驗證意味著它們不僅不會被優化,而且也不會被報告。萊迪思Radiant?設計軟件包括了FPGA開發人員滿足這兩種要求所需的工具。
時序約束
時序參數約束和驗證的基本路徑類型是以鐘控單元開始和結束的路徑。這種類型的路徑可能存在于典型FPGA設計的不同位置。我們來看一些例子。
FPGA輸入路徑(示例1)

在上面的示例中,FPGA的輸入信號由外部組件生成。一般來說,CLKA和CLKB時鐘是不同的。

Radiant時序約束編輯器為用戶提供了合適的模板,可顯著減少輸入參數所需的工作量。
FPGA內部路徑(示例2)

這種常見的路徑類型如上圖所示。與示例1不同的是,源觸發器和目標觸發器都在FPGA內部。這里的區別在于,除了時鐘約束之外,無需明確其他時序參數,因為Radiant軟件已經知道內部時序參數值。下列約束通常就足夠了。

但也有例外。在最簡單的情況下,時序約束定義了要開發的系統中時鐘(或多個時鐘)的工作頻率。然而,設計中并非所有時鐘的時序關系都可以詳細分析。異步時鐘就是這樣一個例子,因為無法準確地確定它們的相位。
同步時鐘具有可預測的時序/相位關系。主時鐘及其衍生時鐘通常都是如此,因為兩者同源(根)并有著共同的周期。
異步時鐘沒有可預測的時序/相位關系。異步時鐘基于不同的根。
你可以借助約束文件和周期組聲明來設置周期路徑之間的關系。例如,如果在FPGA中使用兩個異步時鐘(CLKB1和CKKB2),則可以使用以下約束。

在一個典型的FPGA設計中,我們還必須處理所謂的時序例外(也稱為多周期路徑)。時序例外是每隔一個時鐘周期才需要的結果。例如,在下圖中,EN信號每隔一個周期才會出現一次。

時序例外的另一個例子是當兩個時鐘同步時,數據從較慢的時鐘系統傳輸到較快的時鐘系統(反之亦然)。最后,錯誤路徑也被認為是一種時序例外。

通過提前識別時序例外,時序引擎可以集中資源優化更關鍵的路徑,提供更高質量的結果。
FPGA輸出路徑(示例3)

在上面的示例中,FPGA的輸出信號從外部組件接收額外的處理。一般而言,時鐘CLKB和CLKC是不同的,但也可以相同。

在本示例中,Radiant時序約束編輯器為用戶提供了合適的模板,顯著減少了輸入參數所需的工作量。
時序約束分析
Radiant軟件包括了一個時序分析器,用于檢查指定的時序參數。該分析器可以創建報告,顯示所有已明確的和未約束的時序路徑的結果和分析。時序約束編輯器和時序分析器相結合,簡化了FPGA的優化。