概述
時至今日,不管從國際形勢還是國家對于“中國芯”的扶持,“國產化”這一話題越來越要付出實踐,對于FPGA這一“萬能芯”也是很多企業會優先考慮的,
從華為被“卡脖子”到集成電路正式成為國家學科,都能看出國家對于國產芯的迫切發展,滿懷愛國情懷的我,聽說有從事CAD(EDA)工具開發機會時,既欣喜又擔憂,欣喜,有一個投身科研的機會;欣喜,有一個為打破國外芯片軟體產業壟斷做貢獻的機會;擔憂的是,當然是怕竹籃打水一場空,這將是一個試圖改變我國FPAG EDA軟體環境,通過自研來爭取改變國際壟斷卻又被現實痛擊而不斷成長的故事,但我相信,中國集成電路要完善、崛起,就需要有更多人加入,一起貢獻想法和力量,群策群力,多元碰撞,所以勇敢向前,通過行動吸引更多的人來從事這個行業,讓這個行業碰撞出如互聯網一樣的火花!
FPGA EDA工具的前世今生
在二十世紀七十到八十年代,設計人員依靠手工完成電路圖的輸入、布局和布線,依靠手工在坐標紙上描繪出晶體管圖形,輸入到圖形發生器再用“刻紅膜”的方式制作光刻版,到了70年代中期,可編程邏輯技術出現了,開發人員嘗試將整個設計工程自動化,這個時期的CAD主要功能是互動圖形編輯,晶體管級版圖設計、布局布線、設計規則檢查,門級電路模擬和驗證等,這是EDA的雛形時期,
當下FPGA 市場份額主要被國外三家FPGA廠商霸占、壟斷,這些FGPA主流廠商是:

經過半年的艱苦奮斗、歷經挫折團隊實作了在不使用任何Xilinx公司EDA工具的情況下, 將verilog語言硬體描述代碼,轉換為可燒寫在xilinx v7_330t FPGA上的bit碼流檔案;
團隊在不使用任何Xilinx CAD(EDA) 工具下實作了以下功能
1.邏輯綜合
2.技術映射
3.打包
4.布局
5.布線
6.碼流生成
FPGA開發流程

1) 系統功能設計
在系統設計之前,首先要進行的是方案論證、系統設計和FPGA芯片選擇等準備作業,系統工程師根據任務要求,如系統的指標和復雜度,對作業速度和芯片本身的各種資源、成本等方面進行權衡,選擇合理的設計方案和合適的器件型別,一般都采用自頂向下的設計方法,把系統分成若干個基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用EDA元件庫為止,
2) RTL級HDL設計
RTL級(Register Transfer Level,暫存器傳輸級)指不關注暫存器和組合邏輯的細節(如使用了多少個邏輯門、邏輯門的連接拓撲結構等),通過描述資料在暫存器之間的流動和如何處理、控制這些資料流動的模型的HDL設計方法,RTL級比門級更抽象,同時也更簡單和高效,RTL級的最大特點是可以直接用綜合工具將其綜合成為門級網表,其中RTL級設計直接決定著系統的功能和效率,
3) RTL級仿真
也稱為功能(行為)仿真,或是綜合前仿真,是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的仿真沒有延遲資訊,僅對初步的功能進行檢測,仿真前,要先利用波形編輯器和HDL等建立波形檔案和測驗向量(即將所關心的輸入信號組合成序列),仿真結果將會生成報告檔案和輸出信號波形,從中便可以觀察各個節點信號的變化,如果發現錯誤,則回傳設計修改邏輯設計,常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等軟體,雖然功能仿真不是FPGA開發程序中的必需步驟,但卻是系統設計中最關鍵的一步,
為了提高功能仿真的效率,需要建立測驗平臺testbench,其測驗激勵一般使用行為級HDL語言描述,其中RTL級模塊是可綜合的,它是行為級模塊的一個子集合,
4) 綜合
所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述,綜合優化根據目標與要求優化所生成的邏輯連接,使層次設計平面化,供FPGA布局布線軟體進行實作,就目前的層次來看,綜合優化(Synthesis)是指將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門級電路,真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據綜合后生成的標準門級結構網表來產生,為了能轉換成標準的門級結構網表,HDL程式的撰寫必須符合特定綜合器所要求的風格,由于門級結構、RTL級的HDL程式的綜合是很成熟的技術,所有的綜合器都可以支持到這一級別的綜合,常用的綜合工具有Synplicity公司的Synplify/Synplify Pro軟體以及各個FPGA廠家自己推出的綜合開發工具,
5) 門級仿真
也稱為綜合后仿真,綜合后仿真檢查綜合結果是否和原設計一致,在仿真時,把綜合生成的標準延時檔案反標注到綜合仿真模型中去,可估計門延時帶來的影響,但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確,目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合后仿真來確認問題之所在,在功能仿真中介紹的軟體工具一般都支持綜合后仿真,
6) 布局布線
實作是將綜合生成的邏輯網表配置到具體的FPGA芯片上,將工程的邏輯和時序與器件的可用資源匹配,布局布線是其中最重要的程序,布局將邏輯網表中的硬體原語和底層單元合理地配置到芯片內部的固有硬體結構上,并且往往需要在速度最優和面積最優之間作出選擇,布線根據布局的拓撲結構,利用芯片內部的各種連線資源,合理正確地連接各個元件,也可以簡單地將布局布線理解為對FPGA內部查找表和暫存器資源的合理配置,布局可以被理解挑選可實作設計網表的最優的資源組合,而布線就是將這些查找表和暫存器資源以最優方式連接起來,
目前,FPGA的結構非常復雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局布線,布線結束后,軟體工具會自動生成報告,提供有關設計中各部分資源的使用情況,由于只有FPGA芯片生產商對芯片結構最為了解,所以布局布線必須選擇芯片開發商提供的工具,
7) 時序仿真
是指將布局布線的延時資訊反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象,時序仿真包含的延遲資訊最全,也最精確,能較好地反映芯片的實際作業情況,由于不同芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響,因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的,
8) FPGA板級除錯
通過編程器將布局布線后的組態檔下載至FPGA中,對其硬體進行編程,組態檔一般為.pof或.sof檔案格式,下載的方式包括AS(主動)、PS(被動)、JTAG(邊界掃描)等方式,
v7_330t 我們來跑馬燈吧!
在Xilinx v7_330t FPGA上測驗碼流的正確性;在不使用任何Xilinx EDA工具的情況下,將跑馬燈的Verilog代碼轉為BIT檔案,并燒寫在FPGA上,上板實驗圖如下:

閃起來吧,我的燈呀!
不用xilinx公司工具實作v7-330t的verilog2bit
總結:通過上板實驗,驗證了功能的正確性
參考
FPGA開發流程
FPGA廠家
探討聯系方式
Google郵箱:centuryofmine@gmail.com
微信:centuryofchong
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/258777.html
標籤:其他
下一篇:MySQL事務淺析|由淺入深
