XIlinx FPGA開發基本流程(一)(總介紹)
目錄
前言
介紹
設計輸入
綜合(SYnthesize)
綜合流程
綜合要點:
設計實現
翻譯
映射
布局布線
生成配置文件
驗證
器件配置
前言
這篇博文先總的說一下 Xilinx FPGA開發的基本流程(不包括實例介紹),實例介紹在另有博文介紹。
Xilinx FPGA的開發在ISE(Integrated Software Environment)(集成軟件環境)平臺上完成,FPGA的設計流程主要分為以下幾個部分:
設計輸入
綜合
設計實現
驗證
器件配置
先給出流程圖
介紹
下面分別進行簡單介紹:
設計輸入
設計輸入是將概念設計轉化為硬件描述的過程,ISE支持多種描述方式,分別為CORE Generator,第三方網表,原理圖設計,HDL描述(Verilog HDL或VHDL),設計約束。
(設計輸入階段,主要是使用硬件描述語言(HDL)對要設計的電路進行描述,可以使用的硬件描述語言分別為Verilog HDL和VHDL(Very High Speed Integrated Circuit Hardware Description Language),這個時候可能要配合IP CORE Generator 生成IP核來輔助設計,當然電路的設計還可以使用原理圖設計方式,但這并不主流,且幾乎不能用來設計大規模電路。)
綜合(SYnthesize)
綜合就是將HDL(硬件描述語言)描述轉化為針對特定架構的網表描述(門級電路)的過程。
此時,XST(XIlinx Synthesis Tool)的輸入為:HDL(例如:Verilog HDL)的源文件和綜合庫;
XST的輸出:NGR和NGC網表文件,分別對應RTL Viewer 和 Technology Viewer;
如下圖,ISE中的RTL Schematic和Technology Schematic就分別對應NGR和NGC網表文件。
其他表達方式:
綜合優化(Synthesize)是將硬件語言或原理圖等設計輸入翻譯成由與,或,非門、RAM、觸發器等基本邏輯單元組成的邏輯連接(網表),并根據約束條件優化生成的邏輯連接。
2018/8/31更新部分:
所謂邏輯綜合就其實質而言是設計流程中的一個階段,在這一階段中將較高級抽象層次的描述自動地轉換成較低層次描述。就現在達到的水平而言,所謂邏輯綜合就是通過綜合器把HDL程序轉換成標準的門級結構網表,而并非真實具體的門級電路。而真實具體的電路還需要利用ASIC和FPGA制造廠商的布局布線工具根據綜合后生成的標準的門級結構網表來產生。為了能轉換成標準的門級結構網表,HDL程序的編寫必須符合特定綜合器所要求的風格。
綜合流程
1、語言檢查(Check Syntax)
2、HDL綜合
將HDL描述轉化為硬件電路原語(Primitive),硬件宏(如MUX,RAM等),并進行狀態機提取及編碼優化,對硬件宏進行資源共享優化等邏輯優化。
(就目前的層次來看,綜合優化(Synthesis)是指將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門級電路。
真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據綜合后生成的標準門級結構網表來產生。)
低層次優化
將HDL綜合的網表進行架構級(不同系列的FPGA就屬于架構級)的邏輯優化。
綜合要點:
充分挖掘某些XIlinx特有的資源(如LUT、進位鏈、塊RAM、移位寄存器等)
對FPGA而言,低層次優化過程是時序驅動的,依據的是Perold,Offset等時序約束信息。
設計實現
將綜合輸出的邏輯網表適配到特定的器件上,并生成用于配置FPGA的位流文件。
翻譯
主要完成統一標準工作,將各種網表文件(EDN、NGC、NMC)及約束文件翻譯成Xilinx 標準的NGD文件格式,全部由各種NGD原語構成。
映射
具體工作為把由NGD原語描述的網表映射到特定FPGA器件中的相應資源(CLB, IOB等)。
輸入為NGD文件,輸出為NCD文件(本地電路描述文件),該文件是由目標器件的特定資源所表示的原始設計。
布局布線
布局是將NCD所描述的資源根據約束文件,互聯的情況及可用的布線資源情況映射到FPGA器件中的特定位置;
布線則根據布局情況將各模塊間的連接分配到FPGA的內部互聯網絡上。
布局可以被理解挑選可實現設計網表的最優的資源組合,而布線就是將這些查找表和寄存器資源以最優方式連接起來。
輸入輸出均為NCD文件,但文件中將根據布局布線情況添加或修改與目標器件特定資源有關的使用信息。
生成配置文件
將FPGA內部全部可用資源的配置信息輸出,用于控制芯片以實現特定功能。
驗證
將設計所要求的功能的完整性及系統性能進行的檢測和測試。
仿真
行為仿真(功能仿真):也稱為RTL仿真,或是綜合前仿真,是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的仿真沒有延遲信息,僅對初步的功能進行檢測。
門級仿真:也稱為綜合后仿真,綜合后仿真檢查綜合結果是否和原設計一致。
在仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確。目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合后仿真來確認問題之所在。
時序仿真:是指將布局布線的延時信息反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象。時序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實際工作情況。由于不同芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的。
STA
靜態時序分析
IN-Circuit驗證
板級驗證
器件配置
參考文獻
http://xilinx.eetop.cn/viewnews-51(參考視頻)
https://blog.csdn.net/zqh6516336520/article/details/40505297
https://blog.csdn.net/yangshoub/article/details/74011436
從賽靈思FPGA設計流程看懂FPGA設計
以后會通過實例,讓認識更加的深刻。
這篇文章的實例:全過程實現一個最簡單的FPGA項目之PWM蜂鳴器控制,由于實驗規模小,所以就沒有添加時序約束。
FPGA 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。