由於兩個開發環境經常都能遇到,用了一個忘了另一個,這裡詳細描述一下兩個軟體開發的使用流程。

Quartus篇

1、創建一個工程

建議不要關閉quartus的歡迎界面,因為它很好用呀!直接點擊New Project Wizard 就可以創建一個新的工程

2、選擇目錄,填寫項目名稱

由於第三個框框要填頂層模塊的名稱,所以建議把項目名稱命名成頂層的名稱(填了一個,另一個自動填充,跟後面的testbench一樣)

3、選擇器件

4、選擇模擬器

一般新版的quartus自帶modelsim-altera,建議使用,調用獨立modelsim的話,每次都要編譯庫,特別慢,modelsim-altera已經編譯好了(如何使用modelsim獨立模擬可以參見專欄另一篇文章)

這時就已經建立完一個空的工程了,一般我都是在別的編輯器寫好代碼來quartus進行其他的操作,所以這裡就選擇添加文件,如果使用quartus的編輯器,直接new一個verilog HDL file/VHDL file就行了

5添加文件

下拉project navigator 選擇files,然後右鍵files文件夾添加文件,選擇目錄添加文件,多個文件它自己就直接添加了,單個文件需要點擊add,完成添加,這裡注意,建議把源代碼單獨放到一個文件夾裏,如果testbench文件也在這個目錄的話,不要添加它,因為它不需要綜合,現在添加的都要綜合,不然每次改動testbench項目都會過期,需要重新編譯,testbench在模擬的時候添加就可以了

6、返回層次級界面,就是添加files之前的目錄

雙擊你個頂層模塊名,它就可以自動打開相應的文件了,如果你一開始設置的頂層模塊名和實際的不一致,就是第2條提到的頂層模塊名,這時只要右鍵,setting,general,修改top-level entity保持一致就可以了

修改一致以後雙擊頂層,就可以打開代碼了

7、分析和綜合

設計流程的所有流程幾乎都在這個task窗口,直接點擊相應的功能即可,分析和綜合完成之後,你的各個模塊的層次結構就可以顯示在project navigator窗口了,每個模塊包含了那些模塊,層次特別清晰,下拉三角就可以展開了

8、功能模擬

綜合完成之後就可以功能模擬了,先要添加testbench,打開setting(右鍵頂層,或者工具欄assignments找到,下文中介紹過的選項卡就不再詳細說在哪了)找到eda tool setting中的simulation,選擇工具和語言,然後點擊compile testbench,選擇文件

同樣需要文件名和模塊名,建議保持一致,填寫兩個名字,添加文件,其他默認,一路確定就好了。

然後點擊tools,run simulation tool,rtl simulation,就可以自動調用你前面設置的模擬器了

如果需要調用獨立的modelsim,需要打開tools,options,找到EDA tool options設置modelsim的目錄即可

然後即可等待模擬運行。

注意:quartus沒有嵌入的模擬器,只有modelsim-altera,另外,同一個工程之只能打開一個modelsim,再開會報錯

9、時序分析

點擊工具欄中那個表一樣的圖標就可以打開(但是隻有佈局布線完成才能生成時序網表,查看報告)

首先創建一個時序網表,讀取或者添加sdc文件(約束文件)

有sdc文件的可以直接read,如需要新建的,點工具欄constraints,create clock,起一個名字,設置週期(默認百分之五十佔空比)選擇目標,然後點擊list會列出所有目標,雙擊相應的項,然後點擊tasks欄最下方的wirte sdc file即可保存剛才建立的約束,此時即可查看相應的報告

生成了約束之後(也可以直接使用tcl命令建立sdc文件),為佈局布線添加約束,setting,time quest timing analyzer添加sdc文件,重新編譯運行即可按照相應的約束進行

然後裏面有各種詳細的時序違規的分析,這裡就不再展開,後續的下載調試,因為我都是在xilinx上實現的,這裡使用較少就不誤導了

Vivado篇

這裡vivado自帶說明書(xilinx documentation navigator)裡面有相應的所有教程,左邊的design hub view裡面的vivado design hubs有所有的設計流程的使用教程,簡單易用,下面簡單介紹一下使用流程

1、創建工程

起名字(這裡可以隨便起,比quartus強),添加源文件(testbench調整為 模擬,其他的模擬&綜合),添加IP,添加約束,選擇器件

2、添加IP核

在project manager目錄下打開IP catalog添加IP(這裡以常用的時鐘管理為例)

選擇系統時鐘作為輸入,選擇兩個輸出時鐘,可以修改名字,設置埠

把它存在默認目錄下就好,vivado的默認目錄很人性化,然後確定生成IP

選擇out of context per IP,這裡指的單獨綜合,global即和整體設計一起綜合,別的地方有改動IP也要重新綜合

然後打開IP source選項卡,就可以看到生成的文件,包括模板,約束等一系列文件,打開模板複製埠到設計中就可以完成例化了

簡單瀏覽

在軟體的左邊顯示了設計的所有流程,按照順序即可進行相應的步驟

3、RTL analysis

第一步首先進行RTL分析,進行詳細描述,可以生成RTL視圖,個人感覺沒啥用,因為我感覺我沒怎麼用過它

4、simulation

選擇好testbench文件之後可以直接進行模擬,沒有quartus那麼麻煩,第一步如果沒有添加的話,可以選擇創建相應的文件,在project manager裏add source 即可選擇添加對應的文件,包括約束,源文件,模擬文件等,這裡比較好的是創建完就不用另外添加,quartus需要自己添加模擬文件和約束文件。

設置好模擬文件之後,點擊run simulation可以看到5種模擬,分別是功能模擬,綜合後功能,綜合後時序,實現後功能,實現後時序,這裡一般只使用功能模擬,時序的話進行綜合後功能模擬就可以了,其他的運行時間特別慢不建議使用,還不如直接debug。

5、綜合

第一次的話首先run synthesis,這裡可以看到clk IP核是不參與整體設計的綜合的,因為採用的是OOC設置,完成之後open synthesized design,進行約束

第一步,時序約束,直接edit timing constraints就可添加時序約束,如果使用了時鐘管理類的IP核它會自己進行默認的約束,例如我使用的默認系統時鐘,它會自己添加一個200M的時鐘約束,不允許修改(輸出時鐘好像不需要約束)

第二步,IO約束,分配管腳,這裡我是用的是圖形化的約束,綜合完成之後,選擇工具欄的layout為IO planning,選擇左下角的group by interface and bus展開所有列表,進行管腳分配

第三步,添加debug,為後面的debug添加mark,綜合後,打開綜合後的設計,選擇netlist就可以看到所有的nets,然後選擇想要觀察的信號,右鍵,mark debug

然後set up debug就可以看到剛才你mark的所有信號,點擊下一步,選擇深度,勾選兩個高級觸發和存儲設置,完成

然後保存所有設計,debug實質是添加了ILA的IP核,以約束的方式實現的,所以完成這三步,實際只對約束文件進行了修改

6、實現

完成上述的綜合以及約束之後就可以進行實現了(對應quartus的佈局布線),完成之後就可以查看時序報告和其他報告了

7、板級調試

實現完成之後就可以生成比特流文件,其實可以直接點生成比特流文件如果沒有綜合和實現,它會先綜合實現然後再進行文件生成,然後點開program and debug 的hardware manager連接器件,然後program device就可以下載到板子上了

添加了debug會自動彈到ILA界面,需要進行條件觸發,不同的時鐘域會生成不同的ILA核,然後在trigger setup界面選加號,添加並設置觸發條件

然後run trigger for this ila core就進入等待觸髮狀態了,然後進行複位觸發之後就可以進行數據採樣了

以上就是兩個軟體的簡單的設計流程


推薦閱讀:
相關文章