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.
Folgende Beiträge könnten Dich auch interessieren:
Schlagworte: Konsole, make, Makefile, VHDL, Vim







