大多數 FPGA 設計人員都充滿熱情地開展專業(yè)化問題解決和創(chuàng)造性工作,當然,他們工作壓力也相當大,工作流程也非常單調乏味。幸運的是,EDA 公司和 FPGA 廠商不斷開發(fā)新的工具和方法,推進繁瑣任務的自動化,幫助設計團隊集中精力做好創(chuàng)造性工作。下面我們就來看看 FPGA 工具流程的演進發(fā)展,了解一下現代 FPGA 團隊是如何利用 RTL分析、約束生成和綜合導向來減少設計迭代的。
如果您已經是一名 FPGA 設計專業(yè)人士,那么將擁有輝煌的職業(yè)發(fā)展前景,因為越來越多傳統上需要 ASIC 實現的設計
現已改用 FPGA。隨著新一代芯片工藝技術的推出,設計 ASIC的成本正呈幾何級數增加。與此同時,FPGA 廠商則能利用最新工藝技術實現新一代產品,且不會讓客戶承擔過重的成本負擔。
但不容樂觀的是,FPGA 設計相當復雜,需要跟 ASIC 流程一樣復雜的工具流程,這往往需要整個設計團隊的共同努力才能完成,而不能光靠一名設計人員。因此,FPGA 設計團隊在著手ECO 或新項目之前應認真分析現有的工具套件。那么好消息呢?就是新一代EDA 工具如雨后春筍般涌出,可助他們一臂之力。設計人員可選擇采用標準數據格式且易于安裝和使用的工具,簡化流程集成工作,而且能夠在選定的平臺(不管是 Windows 還是 Linux)上實現本機運行。
FPGA 工具流程的發(fā)展演進
這些年來,FPGA 設計日趨復雜,工具流程也隨之發(fā)展,而且越來越像 ASIC流程。上世紀 90 年代,FPGA 流程(見
圖 1 的流程 A)跟當時的簡易 ASIC 流程一樣,最初以 RTL 為基礎,并采用綜合及布局布線工具。隨著設計變得進一步復雜化,FPGA 團隊在流程中增加了時序分析功能,幫助客戶確保設計能按指定的頻率運行。今天的 FPGA已經發(fā)展為龐大的系統平臺,設計團隊通常要通過 RTL 分析來最小化設計迭代,并確保設計能夠實現相應的性能目標。
進而言之,由于今天的 FPGA 設計項目非常龐大復雜,所以設計人員需要想盡一切辦法更好地了解設計的規(guī)模和復雜性,以便更好地控制流程中的工具,加速設計上市進程。現代FPGA 設計團隊正在采用一種新型方法,那就是在整個設計流程中貫穿約束機制。我們不妨看看當下最流行的、現已得到賽靈思最新 Vivado ™ 流程支持的一種約束方法——Synopsys 設計約束 (SDC) 格式,以及了解如何通過 SDC 讓設計項目受益。
什么是 SDC ?
SDC 是一款基于 Tcl 的格式,可用來設定設計目標,包括設計的時序、功耗和面積約束。一些產品能讀取或寫入 SDC。一些示例 SDC 約束包括時序約束(如創(chuàng)建時鐘、創(chuàng)建生成時鐘、設置輸入延遲和設置輸出延遲)和時序例外(如設置錯誤路徑、設置最大延遲、設置最小延遲以及設置多周期路徑)。這些 SDC 約束通常應用于寄存器、時鐘、端口、引腳和網絡(連線)等設計對象。
需要指出的是,盡管 SDC 是標準化格式,但生成的 SDC 和讀取 SDC之間還是略有差異(不同工具之間有差異)。了解這些差異并積極采取措施,有助于避免意外情況的發(fā)生。
SDC 不應過于復雜
SDC 最常見的應用就是約束綜合。一般說來,設計人員要考慮設計的哪些方面需要約束,并為其編寫 SDC。設計人員通常要執(zhí)行流程 B 中描述的流程,首次肯定無法進行時序收斂。隨后要反復手動盲目嘗試添加 SDC,以實現時序收斂,或讓設計能在指定的頻率上工作。許多從事過上述工作的設計人員都抱怨說設計迭代要花好幾個星期,往往會拖延設計進程。
迭代的另一個問題在于,數名設計人員可能在不同的地點為 SDC 設計不同的模塊。這樣設計工作會變得非常復雜,設計團隊必須想辦法驗證SDC,避免在芯片級封裝階段出現層級名稱的沖突。要確保進行有效的設計協作,就必須采用適當的工具和方法。
流程 C 是現代化流程,除了流程B 的工具之外還采用了分析、SDC 約束和高層次綜合技術,在解決上述問題方面發(fā)揮了重大作用。
綜合向導
對典型的 FPGA 設計而言,綜合解決方案還處于探索階段,不管是面積、速度還是功耗的優(yōu)化,都存在多個局部最大值和局部最小值。利用智能向導,我們能實現最佳解決方案,避免綜合工具聚集到任意的局部最小值。最有效的向導之一就是采用錯誤路徑和多周期路徑,避免綜合工具為不必要的組件浪費寶貴的優(yōu)化時間。
不過,找到設計中的所有錯誤路徑 (FP) 和多周期路徑 (MCP) 并不容易?;ㄉ献銐虻臅r間,我們能找到一些簡單的 FP 和 MCP,不過一些涉及狀態(tài)機和計數器的復雜 FP 和 MCP(特別是在多個層級中)則很難找到。幸運的是,FPGA 設計人員可采用Blue Pearl Software 等創(chuàng)新公司推出的工具執(zhí)行自動化 FP 和 MCO 生成,從而確保完整性、全面性和準確性。此外,這些工具還能為每個 FP 和MCP 提供不同的機制,包括原理圖、斷言和審核路徑,從而讓用戶驗證其正確性。
由于 FPGA 廠商和商用 EDA 廠商的合作進一步加強,采用通用接口,設計團隊就能夠將 Blue Pearl 軟件套件集成到他們所青睞的工作流程中。既然賽靈思的最新 Vivado 設計套件支持 SDC,那么在不同工具之間溝通設計意圖就變得極其簡單(圖 2)。
除了與賽靈思及其他 FPGA 廠商協作外,Blue Pearl 公司還同Synopsys 開展密切合作。這兩家公司共同研究如何讓綜合工具接受盡可能多的自動生成的 SDC,同時避免設計人員進行任何手動修改。由于 SDC 格式對不同工具的使用差異很小,因此工作團隊快速明確命名方案是順利實現互操作性的一大挑戰(zhàn)。
這里的解決方案是在綜合的第一階段(編譯)后截取映射名稱,在 BluePearl 軟件套件的 SDC 生成工具中使用名稱(見圖 3),并為綜合工具的第二階段(優(yōu)化)提供適當的 SDC。該方法給 FPGA 設計人員提供了一個最佳解決方案,無需花時間處理格式化問題。
以下給出非優(yōu)化型約束編寫示例:
set_false_path -from
[get_cells
{i_tv80_core.SP[*]}] -to
[get_cells
{i_tv80_core.i_reg.RegsL}]
優(yōu)化后則為:
set_false_path -from
[get_cells
{i_tv80_core.SP[*]}] -to
[get_cells
{i_tv80_core.i_reg.RegsL_2[
7:0]}]
能取得哪些實際的效果?
Blue Pearl 軟件套件能實現一些任務的自動化, 設計人員對其結果質量(QoR) 很滿意。表 1 顯示了用 Blue Pearl 軟件套件自動生成 SDC,能將示例設計的 QoR 提升 20%,該示例采用多個 IP 核,其中包括 Verilog 的R1200 和 VHDL 的 AES 加密。
運行 1 未采用 Blue Pearl 軟件,結果沒有實現時序收斂。設計人員用RTL 設計或工具約束進行迭代以滿足60MHz 的要求很容易就要花上好幾個星期的時間。在運行 2 中,Blue Pearl軟件套件幾分鐘就能生成 SDC,而自動生成的SDC 足以指導下游工具滿足時序要求。
顯然,對 FPGA 設計人員來說,降低壓力、簡化工作的一個好辦法就是跟別人一樣添加 RTL 分析、SDC 生成和綜合向導工具。如欲了解更多信息,歡迎訪問: www.bluepearlsoftware.com 。