Hauptseite

Tools zur VHDL Entwicklung in der Linux Konsole

25. März 2009 von zimon

Wie versprochen hier ein Toolset zu VHDL in der Linux Konsole.

Um sich das ganze geklicke zum Synthetisieren und Implementieren unter ISE zu ersparen, hat Torsten Meißner ein Makefile mit einigen Batch Dateien erstellt, die von Simon Schulz erweitert wurden. Auf seiner Website kann man sie herunter laden (und darauf beziehe ich mich im Folgenden).

Wenn das Archiv entpackt ist, kann man seine vhd Dateien in den Ordner ./rtl kopieren. In der Datei ./config/settings werden grundlegende Einstellungen vorgenommen. Die ucf-Datei kommt in das Verzeichnis ./layout.

Nach einem make project sollte eigentlich alles Funktionieren. Jedoch wird in den Dateien ./syn/src/implement.sh und ./syn/src/synthesize.sh die nichtexistente Datei ~/Xillinx/settings.sh importiert, die einige Umgebungsvariablen definieren soll. Diese Definitionen habe ich einfach statt dem Aufruf der Datei in dei beiden Dateien geschrieben. Der Pfad zum ISE Verzeichnis muss entsprechend angepasst werden:

#set envirement for ise
#. ~/Xilinx/settings.sh
export PLATFORM=lin
export XILINX=/path/to/ISE
export LMC_HOME=${XILINX}/smartmodel/${PLATFORM}/installed_lin
export PATH=${XILINX}/bin/${PLATFORM}:${PATH}
export LD_LIBRARY_PATH=${XILINX}/bin/${PLATFORM}:/usr/X11R6/lib
export NPX_PLUGIN_PATH=${XILINX}/java/${PLATFORM}/jre/plugin/i386/ns4
export myxilinxrc=${HOME}/.qt/xilinxrc

In der Makefile hat das Target bitup bei mir nicht funktioniert, da ich die libusb-driver benuzte. Daher hab ich das Ziel durch folgendes ersetzt (der Pfad zu ISE muss entsprechend angepasst werden):

#upload bit to fpga
bitup :
    bash -c 'export LD_PRELOAD=/usr/lib/libusb-driver.so; /path/to/ISE/bin/lin/impact -batch impact/impact_upload_bit.cmd'

Da das Makefile im Verzeichnis ./syn/src liegt, die vhd Dateien jedoch in ./rtl ist ein Aufruf von make aus vim heraus nur umständlich möglich. Daher habe ich ein kleines Makefile generiert, welches man ins Verzeichnis ./rtl kopieren kann.
Es wechselt für jedes Ziel das Verzeichnis und ruft das echte Makefile mit dem entsprechenden Ziel auf:

#rule for synthesis
syn :
    cd ../syn/src && make syn
 
#rule for implementation
imp :
    cd ../syn/src && make imp
 
#project file generation
project :
    cd ../syn/src && make project
 
#upload bit to fpga
bitup :
    cd ../syn/src && make bitup
 
#upload prom to fpga
promup :
    cd ../syn/src && make promup
 
#generate prom
promgen :
    cd ../syn/src && make promgen
 
#reset/unlock pport cable (if impact says cable locked)
unlock_cable :
    cd ../syn/src && make unlock_cable
 
#rule for all
all : clean syn imp bitup
 
#rule for cleaning
clean :
    cd ../syn/src && make clean

Nun funktioniert alles und man kann aus vim heraus mit :make all den kompletten Vorgang starten.

Mittels

  • :make clean werden alle temporär erstellten Dateien gelöscht (inklusive Bit-Datei)
  • :make syn wird die Synthese gestartet
  • :make imp wird die Diesign Implementation gestartet (Map, Place & Route,…) und die Bit-Datei erstellt
  • :make bitup wird die Bit-Datei in den FPGA geladen
  • :make all werden alle 4 Vorgänge nacheinander gestartet

Nachdem Dateien hinzugefügt oder gelöscht wurden muss man die Datei ./config/settings anpassen und erneut make project ausführen.


Schlagworte: , , , ,



Kommentieren

Kommentarlinks könnten nofollow frei sein.


Bloggeramt.de frisch gebloggt Blogverzeichnis - Blog Verzeichnis bloggerei.de