Xilinx ISE Linux
Installation
Hier sind zwei komplette Beschreibungen (auf englisch) was zu tun ist, um das ISE von Xilinx unter Linux zu installieren. Das ISE ist recht unproblematisch zu installieren, aber der CableDriver ist recht zickig.
- Gentoo: http://en.gentoo-wiki.com/wiki/Xilinx_ISE_WebPACK
- Debian: http://www.freelabs.com/~whitis/electronics/fpga/xilinx_install_deb3.1.html
- Ubuntu: https://help.ubuntu.com/community/XilinxISE
Es ist möglich die Installation von einem Linux System ins andere zu nehmen z. B. von Debian/32 zu Debian/64. Falls ISE nicht startet, mit strace nachsehen wo es hängt, meistens fehlen 32 bit lib's. Falls z. B. libuuid1 fehlt: die lib bei www.debian.de runterladen, mit dpkg -x entpacken und in /emul/ia32-linux/lib/ kopieren.
Nutzung des CableDrivers
Der CableDriver funktioniert nur mit einem älteren Kernel, da sich dessen Infrastruktur geändert hat. Daher empfiehlt sich der auf libusb basierende User-Space-Treiber von http://www.rmdir.de/~michael/xilinx/. Bei aktuellen (2010) Distributionen müssen beim selberkompilieren die Kompatibilitäts-Header für libusb-0.1 installiert sein.
Da es speziell mit ubuntu edgy eft (Linux-Kernel 2.6.17) doch nicht ganz nach den Fahrplänen von oben funktioniert, hier ein paar Tipps:
- Es muss der WinDriver in der Version 8.11 verwendet werden, die von Xilinx mitgelieferte Version ist zu alt: http://www.jungo.com/st/download/WD811LN.tgz (es wird nur der Teil aus WinDriver/redist gebraucht)
- Ggf. muss im ./configure-script #!/bin/sh zu #!/bin/bash geändert werden. Außerdem sollte man Symlinks anlegen, wenn eine Datei fehlt
Impact und 64Bit Linux mit CableServer
Mit der derzeitige Version von Impact (ISE8.2i) ist es nicht möglich unter einem 64Bit Linux direkt einen Parallel-Port-Programmer zu verwenden, da Impact ein Kernelmodul verwendet, welches nicht für 64Bit verfügbar ist.
Stattdessen gibt es aber die Möglichkeit einen Remote-Programmer zu verwenden. Notwendig ist hierzu ein Server, der die Anfragen von Impact an den Parallel-Port-Programmer weiterleitet. Das erfreuliche ist, dass es diesen Server als OpenSource gibt, und er unter jedem Linux kompilierbar ist.
Der Vorteil der Cable-Server-Lösung ist, dass man den Win Driver nicht mehr benötigt und Impact von hausaus alle Xilinx-ICs unterstützt.
Eine inoffizielle Version des cblsrv (Version enthält einen Bugfix für das Parallel-Cable-III) gibt es hier: http://www.oxed.de/fpga/cblsrv-0.2-src.tar.bz2
ISE9.1 Impact und Cableserver
Für die Verwendung des CableServers mit der ISE9.1 Version ist es unbedingt erforderlich mindestens auf SP3 upzudaten, da sich in Impact ein Fehler im Kommunikationsprotokol mit dem CableServer eingeschlichen hat!
Impact und 64Bit Linux mit WinDriver-Emulation
Es ist auch möglich den in Impact integrierten (lokalen) Cableserver, ohne das WinDriver Kernelmodul, unter einem 64Bit Linux zu nutzen. Dazu benötigt man eine Library, die das Kernelmodul im Userspace emuliert. Die Library ist hier erhältlich: http://www.rmdir.de/~michael/xilinx/
Da Impact als 32Bit Programm keine 64Bit Libraries laden kann, muss die Library als 32Bit Library kompiliert werden. Dazu muss im Makefile bei den CFLAGS zusätzlich -m32 angegeben werden (Beispiel: CFLAGS=-Wall -O2 -fPIC -m32). Alternativ kann eine 32Bit-chroot-Umgebung benutzt werden.
Zum Kompilieren benötigt man außerdem eine 32Bit Version der libusb.a [1]. Das Paket muss/kann nicht installiert werden, aber es reicht, wenn man es entpackt und aus der enthaltenen Datei data.tar.gz die libusb.a extrahiert und nach /usr/lib32/libusb.a kopiert. Danach sollte die Library erfolgreich kompilieren.
Wenn man USB-JTAG-Kabel von Xilinx verwenden möchte, muss man sich auch noch eine 32Bit Version der libusb.so erzeugen, worauf man aber verzichten kann, wenn man nur ein Parallel-Cable-III verwendet.
Beim Parallel-Cable-III benötigt man Schreibrechte auf /dev/parport0 (Benutzer zur Gruppe lp hinzufügen; Unter Ubuntu zusätzlich in der /etc/modules "lp" auskommentieren, damit man überhaupt ein /dev/parport0 hat).
Zum Starten von impact empfiehlt es sich die Impact-Binärdatei in "impact_bin" umzubenennen und ein "impact" Script zu schreiben, welches so aussehen könnte: "export LD_PRELOAD=/path/to/libusb-driver.so && /path/to/impact_bin".
Wenn man das ISE nutzt, empfielt es sich auch die ISE Binärdatei in "ise_bin" umzubenennen und ein Script "ise" analog zum Script "impact" anzulegen, da das ISE Impact nicht über das Script "impact" startet.
[1]: http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/libusb-dev_0.1.12-2_i386.deb (Ubuntu oder Debian)
Alternative für Impact
Wer mit Spartan3-Bausteinen arbeitet, könnte xc3sprog als Alternative für Impact verwenden. Finden kann man das Programm hier: http://www.rogerstech.force9.co.uk/xc3sprog/ Das Projekt wir auf Sourceforge weiterentwickelt. Neuerungen: - XC95X, XC2C und Serial Flash programmierung bei XC3SA(N), XC3SE und XC6S - mehr unterstützte Dateiformate - Atmel AVR JTAG programmierung - Mehr unterstützte Adapter, z. B. Xilinx DLC9/10, Amontec und Olimex - Readback von CPLD und (Serial) Flash - Bessere Platformunabhängigkeit Aktuell unter: svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog oder nicht ganz so aktuell aber kompiliert: http://sourceforge.net/projects/xc3sprog/
Digilent NEXYS2-Boards
Um den Onboard-Programmer auf Digilent NEXYS2-Boards zu verwenden gibt es hier Informationen: http://www.fpgarelated.com/usenet/fpga/show/83878-1.php
Digilent Plugin für Impact
Falls nach der Installation vom Digilent Plugin Xilinx Impact abstürzt (SegFault), sobald man "Cable Setup" anklickt, könnte dieser Hinweis hilfreich sein.
PDF Viewer (Could not find PDF Viewer)
Irgendwie hat Xilinx die Konfigurationsmöglichkeit für den PDF-Viewer vergessen. Durch folgenden Eintrag in die .qt/xilinxrc verschwindet die Fehlermeldung "Could not find PDF Viewer":
8.2i/Gq/PDFViewer=/usr/bin/xpdf %1
Anwendung
ERROR:Simulator:222
Wer bei der Simulation die Fehlermeldung "ERROR:Simulator:222 - Generated C++ compilation was unsuccessful" erhält, sollte die Dateien
./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld ./gnu/gcc/3.2.3/lin/bin/ld
im Xilinx-Installationspfad umbenennen. Siehe auch: http://groups.google.de/group/comp.arch.fpga/msg/3f6c44c16d3a3f85
ERROR:Simulator:170
Falls die Simulation mit der Fehlermeldung
ERROR:Simulator:170 - work/counter/Behavioral is not compiled properly. Please recompile work/counter/Behavioral in file "C:/projects/Xilinx/tutorial2/counter.vhd" without -incremental option. ERROR:Simulator:199 - Failed when handling dependencies for entity counter_tbw, architecture testbench_arch
abbricht, kann dies ggf. daran liegen, dass der Pfad zu dem Projektverzeichnis ein Leerzeichen oder einen '.' enthält. Zumindest kann das manchmal Abhilfe schaffen.
ERROR:Simulator:607
ERROR:Simulator:607 - ISE Simulator is unable to elaborate this design due to specific coding constructs used in the design. Xilinx is actively working on reducing the number of conditions where this error occurs. For more information on this error, please consult Answer Record 24067 in Answers Database at http://www.xilinx.com/support.
Nicht ganz klar was das verursacht... Bei mir liess er sich uebrreden es dennoch zu simulieren indem ich wahllos synthetisiert / place n route / ... gemacht hab Danach ging es aufeinmal... Wobei ich auch noch die ld files gelöscht hab:
./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld ./gnu/gcc/3.2.3/lin/bin/ld
--Sssssss