LinuxCNC / hostmot2-firmware

HostMot2 FPGA firmware
19 stars 36 forks source link

build problem with 13.3 #2

Closed sirop closed 8 years ago

sirop commented 8 years ago

So I followed your advice https://github.com/LinuxCNC/hostmot2-firmware/issues/1#issuecomment-208885014 and just make without dotting Xilinx 13.3 settings before.

All went well until I got to:

./build.py i20 SV12_72 fw/5i20/SV12.BIT
build.py: build a hostmot2 firmware
...

Firmware requires one of these ise major versions to build: 10 9
make: *** [fw/5i20/SV12.BIT] Error 1
sirop commented 8 years ago

Do not know if this error message above is a false positive as ghdlis missing on my platform.

jepler commented 8 years ago

Spartan-2 devices are no longer supported by ISE after major release 10. You have to install multiple versions of ISE to build firmwares for all devices. That is what the error message is trying to indicate.

Here is the best page at xilinx I found with related information: http://www.xilinx.com/support/answers/15938.html

You can see for yourself that ise 13 refuses to build for the 5i20,

diff --git a/cards.py b/cards.py
index a13bc3f..1796998 100644
--- a/cards.py
+++ b/cards.py
@@ -120,7 +120,7 @@ class DBx4(Card):
 # Different FPGA chips
 class Spartan2_200(Card):
     chip = "2s200pq208"
-    iseversions = (10, 9)
+    iseversions = (13, 10, 9)

 class Spartan3_200_144(Card):
     chip = "3s400tq144"

will make ise 13 be the preferred version when the target chip is the Spartan2_200 as found in the 5i20. When you then build, you'll get:

./build.py i20 SV12_72 fw/5i20/SV12.BIT
using Xilinx Webpack settings '/opt/Xilinx/13.4/ISE_DS/settings64.sh'
# workdir /home/jepler/src/hostmot2-firmware/fw/5i20/SV12_work
# bash -c '. /opt/Xilinx/13.4/ISE_DS/settings64.sh; xst -intstyle ise -ifn scr'
. /opt/Xilinx/13.4/ISE_DS/EDK/.settings64.sh /opt/Xilinx/13.4/ISE_DS/EDK
. /opt/Xilinx/13.4/ISE_DS/ISE/.settings64.sh /opt/Xilinx/13.4/ISE_DS/ISE
. /opt/Xilinx/13.4/ISE_DS/PlanAhead/.settings64.sh /opt/Xilinx/13.4/ISE_DS/PlanAhead
. /opt/Xilinx/13.4/ISE_DS/common/.settings64.sh /opt/Xilinx/13.4/ISE_DS/common
ERROR:Xst:1817 - Invalid target '2s200pq208': This architecture is not supported in this software release.

# exited with 256
0:01.3-xst         0:01.3-total

firmwares-local.mk:1: recipe for target 'fw/5i20/SV12.BIT' failed
make: *** [fw/5i20/SV12.BIT] Error 1

I recommend you use the firmwares-local.txt facility to list just the firmwares you want to build. Assuming you don't want any 5i20 firmware, you should be good to go--that seems to be the only board that requires older ise.

As for ghdl, yes, you'll soon run into a problem with that missing. I have a patch floating around to dispense with ghdl, but apparently it didn't make it into our master branch yet.

jepler commented 8 years ago

The 'fuse' branch uses the simulation program 'fuse' from ISE instead of ghdl to produce pin and xml files.

sirop commented 8 years ago

I invested some time and installed ghdl with llvm. Just tried it out with:

$ more firmwares-local.txt
i24 SVST2_8
i25 STSV6_1

Both were built without errors.

I do not know much about fuse, but ghdl has the advantage of VUnit and similar.