Verilog 的設計方法與設計流程


Verilog 的設計方法與設計流程

Verilog的設計方法有兩種,一種是自頂向下(top_down)的設計方法,一種是自底向上(bottom_up)的設計方法。設計流程是指從一個項目開始從項目需求分析,架構設計,功能驗證,綜合,時序驗證,到硬件驗證等各個流程之間的關系。

  1. 設計方法
  • 自頂向下的設計方法:

即先定義頂層模塊功能,進而分析要構成頂層模塊的必要子模塊;然后進一步對各個模塊進行分解、設計,直到到達無法進一步分解的底層功能塊。這樣,可以把一個較大的系統,細化成多個小系統,從時間、工作量上分配給更多的人員去設計,從而提高了設計速度,縮短了開發周期。一般一個系統的Verilog 設計包含激勵測試文件(testbench.v), 頂層模塊(top level design file),子模塊( sub module)等。每個子模塊也含有類似的結構便於設計、仿真與驗證。

%title插圖%num

圖1

  • 自底向上的設計方法:

與自頂向下的設計方法正好相反,先從底層子模塊開始設計,仿真與驗證。然后由各級子模塊組裝成系統。

一般在系統比較復雜,模塊較多,需要多人甚至多團隊聯合設計、仿真驗證的系統都是采用自定向下的設計方法。先由系統架構工程師分析系統架構,編寫架構文件,划分功能模塊,定義模塊接口,行為仿真,最后一級級分配到各組及個人。但是當系統規模較小,架構簡單清晰,從事設計的人員較少,甚至只有一兩個人從事項目設計時往往采用自底向上的設計方法,這樣避免因為對早期架構理解的不透徹,定義的不准確,頻繁修改架構而浪費時間。后面在復雜的工程訓練中會以實例詳細介紹FPGA及verilog的設計方法。

2. 工程管理

工程管理如流程圖2所示。

%title插圖%num

圖 2

3.設計流程

設計流程一般包括需求分析,工程估計,項目描述,功能划分,文本描述,功能仿真,邏輯綜合,布局布線,時序仿真(后仿真),板級驗證,生產交付,后期維護,如圖3。

  • 需求分析

工作人員需要對用戶提出的功能要求進行分析理解,做出整體規划,形成較詳細的技術指標,確定初步方案。例如,設計一個通信系統,需要考慮供電方式、時鍾頻率、通信速率,通信協議,軟硬件划分,產品體積、成本、功耗等,電路實現采用 ASIC 還是選用 FPGA/CPLD 器件等。

  • 功能划分

正確地分析了用戶的電路需求后,就可以進行邏輯功能的總體設計,設計整個電路的功能、接口和總體結構,考慮功能模塊的划分和設計思路,各子模塊的接口和時序(包括接口時序和內部信號的時序)等,向項目組成員合理分配子模塊設計任務。

  • 文本描述

可以用任意的文本編輯器,也可以用專用的 HDL 編輯環境,對所需求的數字電路進行設計建模,保存為 *.v 文件,同時編寫清晰的設計文檔,會議匯報,審閱等。

  • 功能仿真(前仿真)

對建模文件進行編譯,對模型電路進行功能上的仿真驗證,查找設計的錯誤並修正。

此時的仿真驗證並沒有考慮到信號的延遲等一些 timing 因素,只是驗證邏輯上的正確性。

  • 邏輯綜合

綜合(synthesize),就是在標准單元庫和特定的設計約束的基礎上,將設計的高層次描述(Verilog 建模)轉換為門級網表的過程。邏輯綜合的目的是產生物理電路門級結構,並在邏輯、時序上進行一定程度的優化,尋求邏輯、面積、功耗的平衡,增強電路的可測試性。

但不是所有的 Verilog 語句都是可以綜合成邏輯單元的,例如時延語句。

  • 布局布線

根據邏輯綜合出的網表與約束文件,利用廠家提供的各種基本標准單元庫,對門級電路進行布局布線。至此,已經將 Verilog 設計的數字電路,設計成由標准單元庫組成的數字電路。

  • 時序收斂

時序收斂是指布局布線后利用EDA綜合工具,對時序參數提取,形成報告文件,根據報告文件對設計電路的建立時間,保持時間,資源占用給出詳細信息,對於不滿足要求的時序應在設計上調整。通常的方法是,對局部加約束提高綜合、布局布線的優化能力,來達到設計要求。如果采用綜合、布局布線方法優化的不能達到設計要求,應該參考一些優秀的設計(如算法優化,流水線,資源優化等),修改源代碼以達到要求。

  • 時序仿真(后仿真)

布局布線后,電路模型中已經包含了時延信息。利用在布局布線中獲得的精確參數,用仿真軟件驗證電路的時序。單元器件的不同、布局布線方案都會給電路的時序造成影響,嚴重時會出現錯誤。出錯后可能就需要重新修改 RTL(寄存器傳輸級描述,即 Verilog 初版描述),重復后面的步驟。這樣的過程可能反復多次,直至錯誤完全排除。

  • FPGA/CPLD 下載或 ASIC 制造工藝

完成上面所有步驟后,就可以通過開發工具將設計的數字電路目標文件下載到 FPGA/CPLD 芯片中,然后在電路板上進行調試、驗證。如果要在 ASIC 上實現,則需要制造芯片。一般芯片制造時,也需要先在 FPGA 板卡上進行邏輯功能的驗證。

  • 生產與后期維護:

如在后期使用中,局部功能修改,解決在前期測試中未發現的 bug等。

%title插圖%num

圖3

Quartus II 軟件工具的設計流程

%title插圖%num

圖4

從圖可以看出,在綜合工具軟件中,Quartus II 編譯設計(Compile Design)提供:

  • 分析與綜合(Analysis & Synthesis),
  • 適配    Fitter (Place & Route),也就是布局布線
  • 裝配Assembler (Generate Programming files) ,也就是生成FPGA的下載文件(*.sof)
  • 時序分析(Timing Analysis),
  • 仿真網表EDA Netlist Writer
  • 器件編程(下載到FPGA Program Device)

Vivado軟件設計流程

 


%title插圖%num

圖5

Vivado軟件的設計流程與QuartusII 的表現形式略有不同,但也是包含了上面介紹的各個流程環節。在Project Navigator的管理下,仿真(simulation),綜合(Synthesis),應用(IMPLEMENTATION),編程與調試(PROGRAM AND DEBUG )。其中IMPLEMENTATION實現布局布線,以及時序參數的提取。PROGRAM AND DEBUG實現FPGA下載文件的生成,這與QuatusII的FITTER相對應。

這些過程正好配合設計流程的各個環節,幫助完成整個設計。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM