- 熱門關鍵詞:
- 武漢LED顯示屏
- 武漢LED電子屏
- 武漢LED廣告屏
- LED顯示屏安裝
- LED顯示屏批發
前端設計(front-end) 一般是指芯片從RTL設計到生成可以布局布線的門級網表(Netist) 的階段,按照工作內容進行劃分,主要包括設計、驗證和綜合三大部分,如圖2.4所示。
在前端設計之前,需要對芯片的系統和功能進行規范和定義,其中涉及到的工作有撰寫規格書(Spec), 進行系統框架規范與功能設計等。系統的規范是對電子系統性能的整體描述,是對系統較高層次的抽象描述,主要包括系統的功能、性能、設計模式、物理尺寸、制造工藝等方面。功能設計則是為了確定系統功能的可實行方案,一-般需要給出系統時序圖以及各個子模塊之間的數據流程圖,并附上簡單的說明文字,如此才能更加清楚地說明系統內部的設計及結構。同時,為了讓整個設計更加容易理解,在描述完設計預期功能后,還需對系統內各個模塊及其連接關系也進行描述說明。另外,從系統的應用角度來看,描述還需要說明設計的適用場合、功能特性以及I/O接口間的數據變換。
前端的RTL設計
數字前端設計需要借助特定的EDA工具。早期的硬件IC系統通常采用原理圖輸入的方法進行設計,雖然這種方法直觀、可控性好,并且效率也較高,但設計復雜,可移植性差,在大規模設計時耗時耗力。隨著芯片邏輯規模的不斷攀升和計算機技術的發展,這種落后的設計方式越來越顯得力不從心,取而代之的是計算機代碼輸入的方式,即硬件描述語言HDL (Hardware Description Language)逐漸成為主流設計硬件IC系統的方法。 本文RTL設計采用的就是Verilog HDL語言,如圖2.5所示,為SPI接口協議的部分Verilog 硬件描述語言。
寄存器傳輸級(RTL)是一種對數字邏輯電路的抽象模型層級,是對信號在寄存器之間的變換過程的建模,也是建模信號在總線上的傳輸過程的建模,能合 理的模擬同步數字系統的工作過程。RTL編碼設計的好壞及其規范性直接影響后續工作的迭代次數及產品的較終質量,在整個芯片設計過程中占有非常關鍵的地位。RTL長期以來是“可綜合”的較高抽象層級,和同步數字系統設計方法學高度契合,目前依然是EDA工具支持較完善的一個抽象層級。
RTL設計中需要注意很多問題,比如異步設計問題、時鐘設計問題、可綜合性、電路的面積及響應速度等,這些都是RTL編碼中的常見問題。
前端的驗證
RTL編碼完后的驗證工作,遵循三個原則:隨機化,高覆蓋率,可測試性。.在數字芯片開發過程中,驗證占有十分重要的地位,可以說,一邊開發一 邊驗證,其目的就是在無延遲的理想情況下,通過大量的仿真,發現電路設計過程中人為或者非人為引起的BUG。驗證在芯片設計中又稱為“前仿”。
目前芯片的驗證環境主要為UVM,全稱為通用驗證方法論,其前身是OVM.UVM是通用的驗證平臺,基于它能夠產生大量、復雜且可定制化的隨機激勵,可顯著提高大型驗證工程的擴展性和協作性。舉例說明,UVM框架如軟件開發過程中的分層結構,只要定義好統一的接口,工程中的各個層次就可以分配給不同的研發團隊進行開發。驗證的項目同樣如此,即使產生激勵的工程有改動,也不會影響到“觀察波形”的團隊。而UVM在驗證工作中如同一個管家,可以將“輸入激勵”和“觀察波形”的過程統一管理了起來。如圖2.6所示,為基于UVM開發的驗證示意圖,其中DUT為待驗證模塊,產生激勵模塊即編寫的TestBench。 激勵信號傳入DUT中,輸出需要觀察的波形或者結果,通過與預期的結果比較的過程,來判斷編寫的RTL代碼是否正確。
芯片驗證一般有以下兩個層面,一個是 RTL級或者Netlist, 這個也是一般意義上的芯片驗證工作,不但對Verilog語言編寫的RTL進行驗證,也要對前后端工具處理的Netlist文件進行驗證,保證芯片的功能滿足要求以及RTL編碼正確;另一個是FPGA級的,某種意義上講也是RTL,不同的是該級需下載到了FPGA中,借助硬件環境來做實驗驗證。
驗證的工作量在芯片設計中一般會占據了大部分時間和精力,因為無論哪一種驗證,都需要搭建測試平臺(Test Bench),讓驗證平臺能夠從軟件結構上來模擬芯片的工作環境。測試平臺中的被測芯片是RTL級的數字模塊,測試向量或施加的激勵可以是Verilog硬件描述語言,該語言本身就具有行為級描述功能,能夠滿足大部分測試平臺搭建和測試激勵產生的工作。但由于測試激勵是串行的,即按時間順序進入和流出芯片,因此驗證中也越來越多地使用--些軟件上的技術,比如面向對象的編程技術,目前常用的驗證語言有SystemVerilog,SpecmanE等。
前端的綜合
綜合(Synthesis)是將高層次的RTL級編碼轉換為Nestist (門級網表)的過程,網表中包含了RTL中所有的邏輯信息,此外還可能有DFT (Design For Test)、clocking gating、 IO等信息,用于后端布局布線等流程。日前主流的綜合工具為Synopsys公司發布的“Design Compiler”軟件,簡稱“DC”。它通過改進電路延遲時間的計算方法,能夠顯著地縮短設計時間和提高設計性能。
綜合一般由三部分組成, 分別是翻譯(Translate). 邏輯優化(Optimizing)和映射(mapping)。 如圖2.7所示,為綜合過程的示意圖。如圖2.8所示,為綜合需要用到的庫及文件。
其中,翻譯是將RTL級的VerilogHDL代碼轉換成GTECH庫中單元表示的網表;邏輯優化是與工藝無關的階段,指運用布爾變換或代數變換技術,根據設.計者設定的時延、面積、線負載模型等綜合約束條件來對門級網表做進一步邏輯優化的過程:映射通常是指將GTECH庫元件映射到某- -特定的半導體工藝上,此時門級網表中就包含了相關的工藝參數。(注:文中提到的GTECH庫是Synopsys公司提供的通用的、獨立于工藝的元件庫)
綜合的目的是為了將RTL代碼映射為與工藝庫(由Foundry提供)相關的網表,同時為實現芯片設計工作中性能、功耗和面積等要求的平衡而進行優化, 為此需設定時間、環境、面積等方面的約束,由此使較終的流片滿足市場需求。其中較重要的部分是時序的設計,只要滿足時序約束條件,才能使芯片工作正常。而時序設計的實質則是滿足每一個觸發器建立時間(Setup) 和保持時間(Hold)的要求。定義如下:
(1)建立時間:觸發器在時鐘上升沿到來之前,其數據輸入端的數據必須保持不變的較小時間。
(2)保持時間:觸發器在時鐘上升沿到來之后,其數據輸入端的數據必須保持不變的較小時間。
這是因為觸發器內部數據的采樣需要一定的時間,如果不滿足建立和保持時間,觸發器會進入亞穩態,輸出不穩定的結果,數據將在0和1之間變化,需要經過一段恢復時間輸出數據才能穩定,但穩定后的數據又不一定是所需要的值。
為此,綜合過程需要多種工具來保障對時序的要求。比如可測試性設計(DFT)、形式驗證(Formal Verification)、靜態時序分析( Static Timing Analysis,STA)、功能仿真( Functional Simulation)等。如圖2.9所示,為綜合所需工具的流程示意圖。
值得一提的是, 從邏輯綜合開始,基本每做一步大的調整,都會進行STA, .特別是插入了時鐘樹(Clock Tree)后,需要后端工具( ICC/Encounter)反標出的標準延遲文件(SDF)來進行分析,在延遲等近似芯片實際I作的條件下進行時序仿真(后仿),觀察功能是否仍能保持正常。