實現。首先是要實現功能,方式一般采用HDL描述,如verilog,VHDL。當然對于小規模電路也可以采用電路圖輸入的方式。
驗證。得保證電路功能的正确性,也叫驗證,可以通過軟件仿真,硬件仿真等方式實現。軟件仿真一般比較直觀,方便調試,因為每一時刻的狀态都可以看到,這好比調試軟件程序。硬件仿真一般就是指FPGA驗證,就是把電路用FPGA實現,然後去跑,這個的好處就是速度很快,譬如一個視頻解碼核,解一幀圖像出來,軟件仿真就算用最好的服務器,也得跑上多少秒,但是在FPGA中實現的話,基本就是多少毫秒了。這對于一個需要大規模驗證的電路來說,是必不可少的。 前面兩步對于數字IP來說,ASIC和FPGA基本一緻,除非一些實現技巧的差别。
綜合。在你描述的電路正确性得到确保之後,你就要實現它,就是要把你寫的那些代碼變成實實在在的電路,如寄存器還是與非門,這個過程就叫綜合。由于電路規模日益複雜,一般最基本的電路就被做成了cell,如寄存器,與非門,就不會再細化到用三極管怎麼去搭的問題了。這一步對于FPGA和ASIC來說就是最小的那個單元不一樣。FPGA是做好的電路,一般顧及通用性和效能,基本電路單元就做得比較大,如LUT,就是由寄存器和與非門構成,你可能隻用了其中一個與門,但是還會占用這麼一個單元。對于ASIC來說,兩輸入的與非門,就是一個簡單的門電路,甚至為了區分驅動能力和時序特性差異,還分了好幾個等級,有的面積小,有的驅動能力強。總的來說這一步就是工具把你的描述變成基于庫的電路描述。
擺放。你得到基于庫的電路描述之後,就要考慮這些單元怎麼擺放的問題,這叫布局布線。FPGA的話連線資源有限,所以需要不斷地調整,在保證時序要求的情況下,把你的電路映射到其固定的資源分布圖中間。ASIC的話一般是根據周邊電路需求,時序要求,把你的電路放到芯片的某個位置。在擺好之後還得考慮連線是否能通,各級延時是否能滿足電路的建立和保持時間要求等等。
輸出。FPGA就是輸出一個配置文件,告訴FPGA芯片該怎麼樣去配置其電路,使其實現預期功能。該文件可以在FPGA上電之後再由PC下載進去,也可以保存在Flash裡,電路上電之後自動配置。ASIC就是輸出一個版圖文件,告訴代工廠該怎麼去腐蝕矽片,該怎麼連金屬等等。 當然在這過程中間會有各種各樣的輔助步驟。總的來說都是為了确保你設計的電路正确及正确實現你的電路。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!