VSIM
Schritte zur Vorbereitung einer funktionellen Simulation mit VSIM
- make newsim +path=PATH -- Erstellen eines Simulationsverzeichnis im Projekt z.B.: mit PATH = sim.
- make sim -- Erstellt alle Dateien für die Simulatin mit ModelSim
- cd sim -- in das Verzeichnis wechseln, welches unter 1. erstellt wurde wenn PATH = sim war.
- vsim & -- Starten von ModelSim (oder vsim -do testbench.fdo & dann kann Zeile 5 entfallen)
- do testbench.fdo -- auf der Konsole von VSIM eingeben.
- run 20ms -- Start der Simulation für 20 Milisekunden. (us für Mikrosekunden und ns für Nanosekunden)
Änderungen in der Datei VLOG.OPT seit der Verwendung von ChipSpope im SpartanMC Core
Während der Simulation im VSIM dürfen kein IP-Core Module wie zum Beispiel ChipScope in den Verilog Quellen eingebunden sein. Um diese bei der Übersetzung im VSIM zu sperren wurde die Variable SIMULATION eingeführt. Ist die Variable definiert, dann wird das ChipScope Modul nicht mit übersetzt. Diese Variable wird in der Datei VLOG.OPT gesetzt, welche bei der Ausführung des 1. Kommandos aus der obigen Liste in dem erstellten Verzeichnis zu finden ist. In dieser Datei muss der Schalter +define+SIMULATION vorhanden sein.+acc +incdir+/home/schoene/Eigene_Daten/spartanmc-soc/spartanmc/hardware/ +define+SIMULATION
Schritte zur Vorbereitung einer timeing Simulation mit VSIM
- make newsim +path=PATH -- Erstellen eines Simulationsverzeichnis im Projekt z.B.: mit PATH = sim.
- make sim -- Erstellt alle Dateien für die Simulatin mit ModelSim
- make timesim -- Erstellt spartanmc_timesim.v und spartanmc_timesim.sdf
- testbench.tdo erstellen -- Datei aus dem Beispiel unten in das Verzeichnis sim kopieren
- vsim & -- Starten von ModelSim
- do testbench.tdo -- auf der Konsole von VSIM eingeben.
- run 20ms -- Start der Simulation für 20 Milisekunden. (us für Mikrosekunden und ns für Nanosekunden)
Datei testbench.tdo
## NOTE: Do not edit this file. ## Auto generated by Project Navigator for Verilog Post-PAR Simulation ## # Relative path to project home # (update if you move this simulation directory) variable PROJECT_PATH .. # Specify an alternative firmware to simulate # (path is relative to project path) variable OVERRIDE_FIRMWARE # Updating and run script with SpartanMC enviroment settings # (sets /home/schoene/Eigene_Daten/spartanmc-soc) exec make -C $PROJECT_PATH tclconfig > /dev/null do $PROJECT_PATH/build/configure.tcl cp ../build/spartanmc_timesim.sdf . cp ../build/spartanmc_timesim.v . vlib work ## Compile Post-PAR Model for Module spartanmc vlog "$env(XILINX)/verilog/src/glbl.v" vlog spartanmc_timesim.v vlog testbench.v vsim -t 1ps +maxdelays -L simprims_ver -lib work testbench glbl ##set PrefMain(font) {Courier 12 roman normal} ##do testbench.udo view wave view structure view signals do wave.do run 100us ## End
Achtung!
Die von der Toolchain automatisch erzeugte testbench.v muss für die Timingsimulation angepasst werden. Hier muss der Aufruf von sim_initram RAM(); raus, da die Initialisierung das BlockRAM in diesem Falle schon in spartanmc_timesim.v enthalten ist.## NOTE: Do not edit this file. `timescale 1ns/1ps module testbench(); reg clk = 0; reg reset = 0; module_new_system UUT( .pin_P_CPU_RESET (reset), .pin_P_USB_1_TX (tx), .pin_P_USER_CLOCK (clk), .pin_P_USB_1_RX (rx) // add system ports here ); initial begin #100; reset = 1; #100; reset = 0; end always begin #10 // Halbe Periode von 50MHz clk = ~clk; end endmodule ## End
VSIM-Protokoll "Transcript"
Kommandos "showmem", "showdmem" und "showregs"