1、說明
阿里的平頭哥在github上開源了riscv項目-wujian100_open。本文是使用vivado對該項目進行綜合。
本文介紹方法,沒有按開源項目的readme所說的synplify綜合網表的方式,而是全程採用vavido新建項目進行的綜合。
主要問題是:1、 頭文件屬性;2、約束;3、其它小問題。
2、過程
工具採用win10下的vavido2018.2;代碼採用2019.10.22日晚github上版本。
- 建立目錄workarea(名字任意),目錄下:git下載的wujian100_open、syn、sim1目錄同級,如下:
- 在syn下新建xilinx的項目,選擇對應器件(fpga目錄的tcl文件裏器件類型是對的,xdc裏的封裝說錯了。型號應該是:xc7a200tfbg484-2)。
- add source,選擇目錄直接加最簡單,加xdc。注意問題:語法有顯示錯的4個文件,編譯項目也會報錯。通過vivado的界面,把這幾個文件的屬性改爲verilog head type。按一般設計規範,這幾個v文件,應該採用vh後綴。
- 再次編譯,xdc裏報錯:
[Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets PAD_JTAG_TCLK_IBUF] >
PAD_JTAG_TCLK_IBUF_inst (IBUF.O) is locked to IOB_X0Y92
and padmux_cpu_jtg_tclk_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y5,
錯誤點在:
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets PAD_JTAG_TCLK_c] (去掉_c)
#===========================================
# C-SKY JTAG interface: J8
#===========================================
set_property PACKAGE_PIN AA15 [get_ports PAD_JTAG_TCLK]
另外問題:
還有2個未約束的管腳,在xdc的pin約束語句是被註釋了,去掉註釋符。
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets POUT_ELS_OBUF]
- 得到最終綜合結果
其ram採用了寄存器數組的寫法,可以避免器件依賴性;
資源使用情況如下: