天天看點

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

上次我們用開源EDA工具iverilog在Linux系統上成功仿真了wujian100_open,那麼這次我們将使用Xilinx的FPGA開發工具vivado綜合和實作wujian100,并最終生成可以直接下載下傳到FPGA裡的比特流檔案。

不過這次我們不用Linux系統了,因為我之前已經在Windows系統上安裝了Vivado 2018.3,沒在Linux上裝vivado,vivado這個軟體也挺龐大的,下載下傳安裝有點兒麻煩,而且我也沒在Linux上裝别的綜合工具(比如官方推薦的Synplify),是以我就直接在Windows系統上用vivado實作吧。

  • 确定工程所用檔案

因為官方是用在Linux系統上用Synplify + Vivado生成比特流的,我們要在Windows系統上實作的話,就不能直接用官方的腳本檔案啊啥的了,那麼我們第一步就是要搞清楚,工程要用到哪些檔案。我們打開synplify目錄下的“wujian100_open_200t_3b.prj”檔案,看看Synplify工程的建立細節。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

好了,工程所用的源檔案我們現在知道了,到時候用vivado建立工程的時候再對照着添進去就行了。注意,添加的時候要仔細看好,不要不要添錯了哦,别一股腦地 全選,添加。

這裡注意一下“wujian100_open_200t_3b.prj”檔案下面的内容。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

紅色框框的那裡是時序限制檔案,“wujian100_open-masterfpgaxdcXC7A200T3B.xdc”這個限制檔案隻是管腳限制,到時候我們還要把紅色框框那個檔案裡的時序限制内容添到“XC7A200T3B.xdc”裡。藍色框框裡的是包含檔案,添源檔案時别忘記把“soc/param”裡的包含檔案也添進去。綠色框框裡是器件資訊,到時候建立工程時選器件要用上。

然後我們來看一下“wujian100_open.sdc”這個限制檔案裡有什麼内容。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
# Clocks
#top
define_clock   {n:PIN_EHS} -name PIN_EHS  -freq 20 -clockgroup clkgroup_2
define_clock   {n:PAD_JTAG_TCLK} -name PAD_JTAG_TCLK  -freq 2 -clockgroup clkgroup_3
define_clock   {n:x_aou_top.x_rtc0_sec_top.x_rtc_aou_top.x_rtc_clk_div.i_rtc_ext_clk} -name I_RTC_EXT_CLK -freq 1 -clockgroup clkgroup_4
define_clock   {n:x_aou_top.x_rtc0_sec_top.x_rtc_aou_top.x_rtc_clk_div.rtc_clk_div} -name RTC_CLK_DIV -freq 0.5 -clockgroup clkgroup_4
#pwm
define_clock   {n:x_pdu_top.x_sub_apb0_top.x_pwm_sec_top.x_pwm.x_pwm_ctrl.clkdiv} -name CLKDIV  -freq 5 -clockgroup clkgroup_2
#           

完了之後,再把下面圖檔中的紅色框框中的“_c”給删掉(看了群友的博文,說不然後面會報錯,本着不給自己找麻煩的原則,咱也删了嘻嘻……)。然後儲存。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

好的我們現在可以打開vivado,建立工程了。

  • 用建立Vivado工程并綜合實作

打開vivado,點選左側的“create project”建立工程。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

選“RTL Project”。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

點選“Add Files”添加源檔案,選擇準備好的源檔案。完了之後紅框框裡的全給勾上。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

點選“Add Files”添加限制檔案,選擇準備好的限制檔案。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

器件選擇“XC7A200TFBG484-2L”。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

然後工程建立成功之後會自動打開。工程打開後,在“Sources”視窗中,切換到“Compile Order”,在“Design Sources”下找到“wujian100_open_fpga_top.v”,右鍵點選它,然後在彈出的菜單中點選“Move to Top”這個選項,調整綜合順序。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

然後我們就可以開始綜合實作了。點選“Run Implementation”,進行綜合實作。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

然後,我們等待它完成。

  • 根據綜合實作結果更改限制檔案重新綜合實作

    綜合實作完成之後,我們看一下結果如何。
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

我們看到WHS為負,保持時間不滿足。我們輕按兩下檢視詳細的實作報告。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

點選紅色框框的數字,檢視時序違例的具體路徑。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

輕按兩下違例路徑“Path 31”檢視詳細情況。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

我們看到時鐘路徑和資料路徑的終點都是同一個元件。我們再右鍵點選“Path 31”,選擇“Schematic”,打開這條路徑的電路原理圖。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

再輕按兩下器件的時鐘端口C(紅色框框處),檢視器件時鐘的連接配接。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

我們可以看到器件的時鐘端口C和資料端口D是連在一起的,導緻這一條路徑不滿足保持時間要求。要把這條“奇怪的路徑”設為時序例外,靜态時序分析時跳過這條路徑。

此外,我們看一下實作後有哪些“warning”。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

有三個時鐘無法建立,找不到對應的端口(我之前在實作的時候也有這個報錯,我到電路原理圖上一層層找,也沒有找到對應的cell)。我不太清除是我的文法錯誤還是其他原因,無法建立這三個時鐘,那就隻留下主時鐘和邊界掃描時鐘吧,那三個時鐘就不建立了。

是以我們修改“XC7A200T3B.xdc”檔案,去掉那三個時鐘,增加一條僞路徑,修改一下時鐘組。增加僞路徑的語句如下:

set_false_path -from [get_ports PIN_EHS] -to [get_pins x_cpu_top/CPU/x_cr_tcipif_top/x_cr_coretim_top/refclk_ff1_reg/D]           
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

儲存.xdc檔案後,點選“Run Implementation”,重新進行綜合實作。

又是一番等待之後(論有一台好電腦的重要性!),Implementation終終終于Complete了。我們來看看結果如何。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

好了,這次成功了。

  • 生成比特流檔案

實作成功之後,我們可以生成比特流檔案了。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案

等待一會兒之後,成功生成比特流檔案。

wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
wujian100_open的FPGA實作——如何用vivado生成wujian100_open的比特流檔案
  • 把比特流檔案下載下傳到FPGA上

有了比特流檔案之後呢,就可以連接配接FPGA開發闆,把比特流檔案下載下傳到FPGA上,這樣,你設計的電路就真正實作在FPGA(硬體)上了,然後你就可以在FPGA上運作、驗證你所設計的的電路啦~~

不過我手上沒有開發闆,這一步就做不了了~

終于肝完了,啥也不懂的小白 + 慢的一匹的電腦 + 又傻又軸的死腦筋 = 肝……不過雖然這樣,這次對“限制”特别是“時序限制”有了更深一步的了解,之前對限制尤其是時序限制一竅不通,全靠别人寫好的限制續命,碰到時序違例更是不知所措,這次查了很多資料,終于了解了一點點,以後再做東西會比之前好很多。總之,這次收獲還是不少的,肝就肝了吧。

最後,一如既往地歡迎大家拍磚哦~~(飒~

原文作者:Lianglonghui

點選檢視原文

繼續閱讀