第四章 數位積體電路與FPGA介紹
4.4 FPGA 的設計流程
FPGA和ASIC兩者的前段設計大致是相同的,因為所設計的電路在經過電 腦輔助設計工具合成、功能驗證等,都沒有牽涉到合成出來的電路要放置什麼 樣的元件(CPLD、FPGA等),所以前段設計FPGA和ASIC設計流程是相同的,
設計流程圖如圖4-4所示。前段各設計部分說明如下:
1. 規格訂定(Specification):
在設計初期必須訂立規格,如操作頻率、工作電壓、IC的輸入輸出接腳
(I/O Pins)、臨界路徑、功能區塊等。規格定義的越清楚,往後在設計 IC時,就會避免很多不必要的麻煩。
2. 電路架構設計(Architecture Design):
在訂立好規格之後,依據此規定去設計電路架構,該利用並行架構設 計(Pipeline Design)或是先進先出(First in First out)的設計,都要架構設 計的重點。
3. 設計輸入(Design Entry):
利用HDL硬體描述語言,如VHDL、Verilog…等,以電路圖、波形圖、
狀態圖作為設計輸入,在傳統的設計幾乎都是使用電路圖輸入的方式,
這種設計的優點為一目了然,然而現今設計的複雜度越來越高,使用傳 統電路圖設計已不敷使用,所以電路圖設計幾乎都使用較小的設計上。
所以為了因應現今越來越大的電路設計上,可利用硬體描述語言,來加 快產品上市的時間,所以在好幾百萬閘的IC設計上,HDL以大部分取代 了電路圖輸入的方式。當然也可以使用波形圖或狀態表設計輸入,但是 難度相對的提高很多,可能電路合成不出或是合成的結果非預期,除非 很有經驗的設計工程師,否則建議最好使用HDL設計輸入的方式。
4. 功能模擬(Function Simulation):
功能模擬最主要的是告訴設計者,所撰寫的程式語法是否正確,也可以 得知設計者所寫的HDL程式碼是否能達到設計的目的,語法是否正確。
目前常見的電腦輔助設計工具(ModelSim、MaxpluxⅡ…等),一般設計 者在模擬器中看到的結果大部分是波形圖,設計者可以設計測試平台 (Test bench)以產生輸入訊號並送入設計中,從波形圖看出是不是設計者 想要的結果,如果不是則需修改HDL程式碼,反覆的做功能上的模擬,
直到設計可以達到規格所需。不過要注意的是,由於功能模擬只能檢驗 功能上是否正確,而不能檢驗出時序上的錯誤,時序上的錯誤要等到做 繞線配置(P&R)之後產生實際的物體模型之後,才會有延遲的發生,詳 細描述於後續P&R再行探討。
5. 合成(Synthesis):
將設計者所寫的HDL合成出電路並且將電路最佳化,也就是說合成出來 的電路都是最簡化設計。其中在合成的過程中,設計者需要下設計規範 (Design Constraint),明白確定操作的頻率要跑多少?面積是否要最小?
是否並行處理等等?都要告訴合成器(Synthesizer),合成器會將你的需求 轉換成所需的設計,合成器所產生的檔為連線檔(netlist file),也就是Cell 和Cell的連線關係。
以上五點為前段設計部分,後段ASIC和FPGA的設計流程就不盡相同,其 中FPGA的後段設計部分說明如下: