chipsalliance/rocket-chip-fpga-shells

Issue when using vc707 in chipyard

Closed this issue · 4 comments

Hi, I'm currently using vc707 with the chipyard project. During compilation, vivado emits an error and quits. The terminal shows something like this

****** Vivado v2021.2 (64-bit)                                                                                                           
  **** SW Build 3367213 on Tue Oct 19 02:47:39 MDT 2021                                                                                  
  **** IP Build 3369179 on Thu Oct 21 08:25:16 MDT 2021                                                                                  
    ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.                                                                             
                                                                                                                                         
source /home/loriland/Documents/chipyard/fpga/fpga-shells/xilinx/common/tcl/vivado.tcl                                                   
# set scriptdir [file dirname [info script]]                                                                                             
# source [file join $scriptdir "prologue.tcl"]                                                                                           
## set ip_vivado_tcls {}                                                                                                                 
## while {[llength $argv]} {                                                                                                             
##   set argv [lassign $argv[set argv {}] flag]                                                                                          
##   switch -glob $flag {                                                                                                                
##     -top-module {                                                                                                                     
##       set argv [lassign $argv[set argv {}] top]                                                                                       
##     }                                                                                                                                 
##     -F {                                                                                                                              
##       # This should be a simple file format with one filepath per line                                                                
##       set argv [lassign $argv[set argv {}] vsrc_manifest]                                                                             
##     }                                                                                                                                 
##     -board {                                                                                                                          
##       set argv [lassign $argv[set argv {}] board]                                                                                     
##     }                                                                                                                                 
##     -ip-vivado-tcls {                                                                                                                 
##       set argv [lassign $argv[set argv {}] ip_vivado_tcls]                                                                            
##     }                                                                                                                                 
##     -pre-impl-debug-tcl {                                                                                                             
##       set argv [lassign $argv[set argv {}] pre_impl_debug_tcl]                                                                        
##     }                                                                                                                                 
##     -post-impl-debug-tcl {                                                                                                            
##       set argv [lassign $argv[set argv {}] post_impl_debug_tcl]                                                                       
##     }                                                                                                                                 
##     -env-var-srcs {                                                                                                                   
##       set argv [lassign $argv[set argv {}] env_var_srcs]                                                                              
##     }                                                                                                                                 
##     default {                                                                                                                         
##       return -code error [list {unknown option} $flag]                                                                                
##     }                                                                                                                                 
##   }                                                                                                                                   
## }                                                                                                                                     
## if {![info exists top]} {                                                                                                             
##   return -code error [list {--top-module option is required}]                                                                         
## }                                                                                                                                     
## if {![info exists vsrc_manifest]} {                                                                                                   
##   return -code error [list {-F option is required}]                                                                                   
## }                                                                                                                                     
## if {![info exists board]} {                                                                                                           
##   return -code error [list {--board option is required}]                                                                              
## }                                                                                                                                     
## set commondir [file dirname $scriptdir]
## set boarddir [file join [file dirname $commondir] $board]
## source [file join $boarddir tcl board.tcl]
### set name {vc707}
### set part_fpga {xc7vx485tffg1761-2}
### set part_board {xilinx.com:vc707:part0:1.3} 
## set constraintsdir [file join $boarddir constraints]
## set srcdir [file join $commondir vsrc]
## set wrkdir [file join [pwd] obj]
## set ipdir [file join $wrkdir ip]
## create_project -part $part_fpga -force $top
create_project: Time (s): cpu = 00:00:04 ; elapsed = 00:00:07 . Memory (MB): peak = 2506.340 ; gain = 0.000 ; free physical = 20050 ; fre
e virtual = 60480
## set_param messaging.defaultLimit 1000000
## set_property -dict [list \
##      BOARD_PART $part_board \
##      TARGET_LANGUAGE {Verilog} \
##      DEFAULT_LIB {xil_defaultlib} \
##      IP_REPO_PATHS $ipdir \
##      ] [current_project]
ERROR: [Board 49-71] The board_part definition was not found for xilinx.com:vc707:part0:1.3. The project's board_part property was not se
t, but the project's part property was set to xc7vx485tffg1761-2. Valid board_part values can be retrieved with the 'get_board_parts' Tcl
 command. Check if board.repoPaths parameter is set and the board_part is installed from the tcl app store.
INFO: [Common 17-17] undo 'set_property'

    while executing
"rdi::add_properties -dict {BOARD_PART xilinx.com:vc707:part0:1.3 TARGET_LANGUAGE Verilog DEFAULT_LIB xil_defaultlib IP_REPO_PATHS /home/
loriland/Docum..."
    invoked from within
"set_property -dict [list \
        BOARD_PART $part_board \
        TARGET_LANGUAGE {Verilog} \
        DEFAULT_LIB {xil_defaultlib} \
        IP_REPO_PATHS $ipdir \
        ] [current_..."
    (file "/home/loriland/Documents/chipyard/fpga/fpga-shells/xilinx/common/tcl/prologue.tcl" line 78)

    while executing
"source [file join $scriptdir "prologue.tcl"]"
    (file "/home/loriland/Documents/chipyard/fpga/fpga-shells/xilinx/common/tcl/vivado.tcl" line 7)
INFO: [Common 17-206] Exiting Vivado at Mon Nov 14 21:01:25 2022...
make: *** [Makefile:129: /home/loriland/Documents/chipyard/fpga/generated-src/chipyard.fpga.vc707.VC707FPGATestHarness.RocketVC707Config/
obj/VC707FPGATestHarness.bit] Error 1

Went to xilinx/vc707/tcl/board.tcl to check, found that if I modify the part_board value from xilinx.com:vc707:part0:1.3 to xilinx.com:vc707:part0:1.4, program runs correctly.

Not sure if this is a bug, but probably need a fix

Verified on running instances of Vivado. Running get_board_parts in tcl mode returned
In 2021.2:

xilinx.com:k26c:part0:1.2 xilinx.com:k26c:part0:1.3 xilinx.com:k26i:part0:1.2 xilinx.com:k26i:part0:1.3 xilinx.com:kv260_som:part0:1.2 xilinx.com:vc707:part0:1.4 xilinx.com:vc709:part0:1.8

In 2022.2:

xilinx.com:k26c:part0:1.2 xilinx.com:k26c:part0:1.3 xilinx.com:k26c:part0:1.4 xilinx.com:k26i:part0:1.2 xilinx.com:k26i:part0:1.3 xilinx.com:k26i:part0:1.4 xilinx.com:kr260_som:part0:1.0 xilinx.com:kr260_som:part0:1.1 xilinx.com:kv260_som:part0:1.2 xilinx.com:kv260_som:part0:1.3 xilinx.com:kv260_som:part0:1.4 xilinx.com:vc707:part0:1.4 xilinx.com:vc709:part0:1.8 xilinx.com:vcu118:part0:2.0 xilinx.com:vcu118:part0:2.3 xilinx.com:vcu118:part0:2.4 xilinx.com:vcu1525:part0:1.3

Because Xilinx has removed support for board_part=xilinx.com:vc707:part0:1.3 for over two years, this must be fixed to avoid breakage.

resolved by #7

Hello, @Lorilandly. My team intends to buy a vcu118 evaluation board for evaluate the prototype based on chipyard. But seems that there are Rev1 and Rev2 versions of vcu118. I don't know which one We should choose so that the official chipyard design will work. I am new to FPGA. I want to know if the REV1 and REV2 are the same in terms of chipyard mapping, thanks!

@jerryhethatday I’m really not an expert and have not used vcu118 before. I hope this document from xilinx can help.