A non-working mcs file generated for e300artydevkit

The downloaded mcs file (freedom-e310-arty-1-0-2.mcs) from sifive homepage works with no problem.
However, while trying to run the process of generating the mcs file through make -f Makefile.e300artydevkit mcs I got many compilation errors.

I reached completion of compilation only when I made the following modifications, but still once I download the mcs file and press PROG it freezes.

  1. changed fpga/e300artydevkit/script/board.tcl to

set name {arty_e300devkit}
set part_fpga {xc7a200tfbg676-2}
set part_board {xilinx.com:ac701:part0:1.1}
set bootrom_inst {rom}

  1. Added

set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
set_property SEVERITY {Warning} [get_drc_checks NSTD-1]

right before source [file join $scriptdir ip.tcl] in fpga/e300artydevkit/script/init.tcl

  1. Added

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets iobuf_jtag_TCK_o]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ip_mmcm/inst/clk_in1_mmcm]

at the end of fpga/e300artydevkit/constrs/arty-master.xdc

  1. Removed from fpga/e300artydevkit/script/ip.tcl


each of the these modifications was made upon recommendation of the compiler output log.

The generated mcs file has 5 times more lines than the working one that was downloaded from sifive homepage. They are different as well in the first lines.

I am using 2014.3.1 vivado version (due to some other errors in more recent versions) running on Ubuntu 16.04.

Thanks for reporting the cleanup steps! We’ll look into cleaning up the flow.

What do you mean by “it freezes”? Please be aware that this process doesn’t include any actual software in the image. To get software included in your MCS that you build yourself, please see this thread:

I actually proceeded according to the steps described in the guidelines. First I download the mcs file then I download the software mentioning for instance demo_gpio.
When using this mcs file (freedom-e310-arty-1-0-2.mcs), few seconds after pressing PROG the LED near the PROG button is released and turns back on.
But when I use the self-generated mcs the LED near the PROG button doesn’t turn on back again. It remains off even after I press reset button. And then later when I download a software using make upload PROGRAM=demo_gpio BOARD=freedom-e300-arty, it doesn’t work.

Concerning the modification I have done I am not sure if they caused a problem or maybe it’s because of the old version of vivado that the mcs generation procedure went wrong.

Does compiling mcs has to include a binary to a certain software ?

Thank you

The software has to be compatible, and the demo_gpio program as compiled with the Freedom E SDK should work. If the LED near PROG buttons isn’t turning on it seems likely something is wrong with your MCS build.

Why did you make the changes in your step (1)? Specifically the FPGA part number seems wrong:

set name {arty_e300devkit}
set part_fpga {xc7a35ticsg324-1L}
set part_board {digilentinc.com:arty:part0:1.1}
set bootrom_inst {rom}

I made the change in 1) because I get this error.
vivado couldn’t detect the board part in this path as well opt/Xilinx/Vivado/2014.3.1/data/boards/board_parts/artix7/ac701/1.1

source script/board.tcl
set name {arty_e300devkit}
set part_fpga {xc7a35ticsg324-1L}
set part_board {digilentinc.com:arty:part0:1.1}
set bootrom_inst {rom}
source script/prologue.tcl
set scriptdir [file dirname [info script]]
set commondir [file dirname $scriptdir]
set srcdir [file join $commondir src]
set constrsdir [file join $commondir constrs]
set wrkdir [file join [pwd] obj]
set ipdir [file join $wrkdir ip]
set top {system}
create_project -part $part_fpga -in_memory
ERROR: [Coretcl 2-106] Specified part could not be found.

while executing
"create_project -part $part_fpga -in_memory "
(file “script/prologue.tcl” line 11)
INFO: [Common 17-206] Exiting Vivado at Wed May 24 13:04:53 2017…
Makefile:20: recipe for target ‘obj/system.mcs’ failed
make[1]: *** [obj/system.mcs] Error 1

What version of Vivado are you using? It seems that it does not support the FPGA which is on the Arty board. You can download a free license for the newer Vivado WebPack if your version is too old.

I was using 2014.3.1 I downgraded it due to a confusion between vivado lab and vivado design suite where the former didn’t have vivado binary.
Currently I am using the most recent version 2017.1 I got a slightly different error.

ERROR: [Board 49-71] The board_part definition was not found for digilentinc.com:arty:part0:1.1. The project’s board_part property was not set, but the project’s part property was set to xc7a35ticsg324-1L. 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’.

The get_boards_parts command shows only the following board parts as valid.

xilinx.com:ac701:part0:1.0 xilinx.com:ac701:part0:1.1 xilinx.com:ac701:part0:1.2 xilinx.com:ac701:part0:1.3 xilinx.com:kc705:part0:0.9 xilinx.com:kc705:part0:1.0 xilinx.com:kc705:part0:1.1 xilinx.com:kc705:part0:1.2 xilinx.com:kc705:part0:1.3 xilinx.com:kc705:part0:1.4 xilinx.com:kc705:part0:1.5 xilinx.com:vc707:part0:1.0 xilinx.com:vc707:part0:1.1 xilinx.com:vc707:part0:1.2 xilinx.com:vc707:part0:1.3 xilinx.com:vc709:part0:1.0 xilinx.com:vc709:part0:1.1 xilinx.com:vc709:part0:1.2 xilinx.com:vc709:part0:1.3 xilinx.com:vc709:part0:1.4 xilinx.com:vc709:part0:1.5 xilinx.com:vc709:part0:1.6 xilinx.com:vc709:part0:1.7 xilinx.com:vc709:part0:1.8

and nothing came out related to board parts from tcl app store.

to solve the problem I chose set part_board {xilinx.com:ac701:part0:1.1}.
In addition to that I still had to keep the changes 2) 3) and 4) in order to compile without error. After downloading and pressing PROG button the LED near PROG button still isn’t turning on.

When you install a new verision of Vivado, you need to add the board support for the Arty. You can get the board support package from the Digilent site here.

Now I got it working. thanks a lot for the support.