ModelSim

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Beschreibung

Modelsim ist eine mächtige Simulationsumgebung für HDLs. Diese erlaubt die taktsynchrone oder timinggenaue Simulation von digitalen Logikelementen. Anders, als reine Logiksimulatoren erlaubt Modelsim auch das Berechnen und Darstellen von Analogwerten, da Integer und Dezimaltypen intern als normale Variablen (Real) gehandhabt werden. Somit lassen sich auch analoge Modelle verwenden, wenn man sie zuvor in eine gerasterte digitale Darstellung (Signalbus oder Integer) überführt.

Versionen

Kommerzielle Versionen

Derzeit werden folgende Versionen von ModelTech vertrieben:

  • ModelSim SE (Special Edition)
  • ModelSim LE (Linux Edition)
  • ModelSim PE (Personal Editon)
  • ModelSim Designer

SE ist dabei die leistungsfähigste Version und auch für Unix sowie 64bit-Systeme verfügbar. Die Linux Edition (LE) kann kein VHDL (nur Verilog HDL, 07/2008) und die Personal Edition arbeitet nur mit 40% der Geschwindigkeit von SE und enthält z. B. keinen Optimizer (vopt). Der Designer entspricht ungefähr der PE-Version und besitzt die Möglichkeit VHDL per Schaltplan zu erzeugen.

Vergleichen lassen sich die Versionen direkt auf der ModelTech-Seite. Zu Einschränkungen/ Geschwindigkeit der Xilinx Edition (XE) bzw. XE Starter siehe auch folgenden Forumsbeitrag.

Freie Versionen

Eine kostenlose Simulationsumgebung für Xilinx Bausteine war z. B. im ISE WebPack (Version 11.1, 2010) als ModelSim XE III Starter enthalten, das kostenlos bei Xilinx erhältlich ist. Sie simuliert bei mehr als 10000 Codezeilen nur noch mit geringerer Geschwindigkeit (siehe Xilinx-Answer Record). Inzwischen setzt Xilinx auf den eigenen ISim-Simulator.

Für die Alteraumgebung, gibt es eine kostenlose "ModelSim Altera Starter Edition" [1].

Tips und Tricks

Unter Modelsim XE Altera Bauteile simulieren

Für die Simulation Altera-spezifischer Bausteine wie BRAM, DDR, IOs, PLL werden die Libraries von Altera benötigt, die eingebunden werden müssen.

Dazu die Modelsim Altera Version downloaden und installieren, das Verzeichnis Modelsim ae/altera nach modelsim xe/altera kopieren und die INI-Datei im Modelsim_xe verzeichnis folgendermassen erweitern:

[Library]

  • std = $MODEL_TECH/../std
  • ieee = $MODEL_TECH/../ieee
  • verilog = $MODEL_TECH/../verilog
  • vital2000 = $MODEL_TECH/../vital2000
  • std_developerskit = $MODEL_TECH/../std_developerskit
  • synopsys = $MODEL_TECH/../synopsys
  • modelsim_lib = $MODEL_TECH/../modelsim_lib
  • lpm = $MODEL_TECH/../altera/vhdl/220model
  • alt_vtl = $MODEL_TECH/../altera/vhdl/alt_vtl
  • altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf
  • altgxb = $MODEL_TECH/../altera/vhdl/altgxb
  • cyclone = $MODEL_TECH/../altera/vhdl/cyclone
  • sgate = $MODEL_TECH/../altera/vhdl/sgate

Modelsim_xe starten, die neu hinzugekommenen Libraries rekompilieren

Farben

Schriftfarbe beim Waveform Print Postscript ändern

Bsp Schwarz in der .ps Datei 0.5 0.5 0.5 durch 0.0 0.0 0.0 ersetzen.

Waveform

Viele wissen nicht, daß man sowohl den Namen als auch den Graphen eines Signales einfärben kann. (Eigenschaften). So wird die Darstellung erheblich verbessert.


Simulation von Speicherinhalten von Quartus unter Modelsim

Der Inhalt des Speichers muss im Intel hex Format vorliegen. Falls dies nicht der Fall ist müssen folgende Schritte durchgeführt werden:

  • Quartus öffnen
  • Speicher Datei öffnen (mif)
  • Datei/speichern unter..
    • hex als Dateiendung wählen
  • Hinweis: Dateiname und Endung immer klein schreiben!!!

Im Design muss noch die File Endung von mif in hex geändert werden.

  • init_file => "prog.hex"

Hinweis: Der Speicherinhalt kann unter View/debug/memory angeschaut werden.


Crash

Falls in der vish_stacktrace.vstf nach dem Crash sowas drin steht:

Exception c0000005 has occurred at address 10229069. Traceback:
# 0    0x10229069: 'TkWinGetDrawableDC + 0x9'
# 1    0x1022918d: 'XCopyArea + 0x3d'
# 2    0x10275e25: 'Tk_CreatePhotoImageFormat + 0x2e25'
...

dann könnte es am /3GB-Switch von Windows XP liegen (boot.ini).