Auf Grund des Pollin Threads habe ich nun ise 6.3 installiert - es
reicht -doch- erst mal kleine Brötchen zu backen.
Die Bestätigung folgt sofort: ich schaffe es nicht, eine
Verhaltenssimulation zu starten. Und zwar finde ich gar nicht, wo das
gemacht wird.
Vielleicht hilft mir wer: ich habe, eben um es leicht zu haben, einen
Minicode eingegeben:
1
libraryIEEE;
2
useIEEE.STD_LOGIC_1164.ALL;
3
useIEEE.STD_LOGIC_ARITH.ALL;
4
useIEEE.STD_LOGIC_UNSIGNED.ALL;
5
6
entitylogicis
7
port(A,B:inSTD_LOGIC;
8
C,D:outSTD_LOGIC
9
);
10
endlogic;
11
12
architectureBehavioraloflogicis
13
14
begin
15
16
C<=AandB;
17
D<=AorB;
18
19
endBehavioral;
So dann mit Rechtsklick auf dieses vhdl file, <new Source>, Test bench
waveform hinzugefüht. Da dann A und B verdreht. Hängt im Projekt Baum
auch unter der vhdl datei.
Wie und Wo kann ich denn nun die Simulation starten? User constraits
oder ähnliches habe ich nicht eingegeben, aber das sollte für das
Verhalten doch auch unerheblich sein oder?
Was ich unter ise 6 Tutorial gefunden habe ist das Selbige nur für ise 8
und das stürtzt sich zudem auch auf modelsim.
Vielleicht hilft mir ja wer auf dem kleinen Dienstweg, denn ich hoffe ja
doch, daß mich die Entwicklungsumgebung nciht in die Knie zwingen wird
:-)
danke
Also ich bin auf der xyz.tbw, hab also noch rechts die diversen
Zeitverläufe und muss dann unten in dem consolenfenster einen run Befehl
eingeben, damit die simulation losläuft?
Kein Menupunkt im Process_View ala "Check Syntax" oder generell
"implement"?
Kann nur nichts in die console tippen, falls das der einzige Weg ist.
:-(
@J.H.:
Besorg Dir mal ein aktuelles Modelsim XE. Der in ISE integrierte
Simulator wurde erst mit der Version 8 langsam brauchbar (ist aber immer
noch kein Vergleich zu Modelsim).
Duke
Ok alles klar, danke euch ich habe jetzt model sim installiert und das
scheint auch zu funktionieren.
3 fragen hab ich noch die packe ich hier rein um nicht das Forum mit
neuen threads zu sehr zu zu müllen. (Wie wäre es da übrigens mit einer
Anfänger Sektion mit solchen dämlicheren Fragen um das zu trennen?)
1) Kann man auch interne signale im model sim verfolgen? Ich habe die
Testbench jetzt über "add new Source" + "Testbench waveform" erstellt,
da sind aber nur die Portsignale verfügbar.
2) / 3)
habe folgendes ausprobiert und simuliert: vielleicht sinnvefreit, aber
sollte ein Frequenzteiler sein, den man abschalten kann. Blöde
zugegeben, aber das sind ja alle rein akademischen Aufgaben irgendwie...
2) Muss ich das enable 'EN' irgendwie dieser ominösen Eintaktung
unterziehen? In der Simulation habe ich da von tristate bis gewollten
start ein Fitzel übrig bis zum nächsten CLK erscheint mir auch logisch.
Einziger Weg wäre, enable auch nur parallel zum takt auszuwerten?
3) Ist in dem prozess das if(...clk...) ... end if in ordnung ohne ein
else? Allgemein las ich ja auf Lothars Homepage die Notwendigkeit voller
if Konstrukte wegen der Latch Problematik. Hier gehts ja ohne Latch
eigentlich gar nicht - hilfe_int muss ja gespeichert werden.
Und, in dem Zusammenhang, was ist das schlimme, wenn ungewollt ein latch
entsteht? Geht das nur auf die Laufzeiten oder den Platzbedarf, oder
was?
bin aber schon ganz froh, daß ich Kleinigkeiten probieren und simulieren
kann - es ist nur hart zu überprüfen, ob das was man gedengelt hat auch
sinnvoll ist oder gegen jede Sinnhaftigkeit und Regel verstößt.
Nachher gewöhne ich mir noch Mist an.
@ J.H. (Gast)
>1) Kann man auch interne signale im model sim verfolgen?
Sicher. Im Fenster Structure auf dein VHDL-Objekt clicken, dann
erscheinen im Fenster Signals die internen Signale. Alle markieren und
mit Menu View-> Wave_Selected anzeigen.
> Ich habe die>Testbench jetzt über "add new Source" + "Testbench waveform" erstellt,>da sind aber nur die Portsignale verfügbar.
+ Logisch, das ist die automatisch generierte Testbench +Anzeige.
Praktisch wertlos. Das macht man alles selber
<Chraskurs>
Im Modelsim Kommandofenster Menu Transcript -> clear
in der Modelsim Kommandozeile "restart -force -nowave"
Dann wie oben beschrieben die Signale ins Wave bringen
Im Modelsim Kommandofenster Menu Transcript -> Save, Alle bisherigen
Kommandos werden in einem Script gespeichert
In der Kommandozeile run 10ms eingeben (oder welche Zeit auch immer
Diese Script kann man dan leicht über Macro -> Execute Macro wieder
aufrufen.
</Chraskurs>
>2) Muss ich das enable 'EN' irgendwie dieser ominösen Eintaktung>unterziehen?
nein.
>3) Ist in dem prozess das if(...clk...) ... end if in ordnung ohne ein>else?
Ja.
> Allgemein las ich ja auf Lothars Homepage die Notwendigkeit voller>if Konstrukte wegen der Latch Problematik.
Nöö, das gilt nur für rein kombinatoreisch Prozesse, nicht für
getaktete.
> Hier gehts ja ohne Latch>eigentlich gar nicht - hilfe_int muss ja gespeichert werden.
Das macht man hier aber mit FlipFlops, schliesslich steht da was von
rising_edge(clk) ;-)
>Und, in dem Zusammenhang, was ist das schlimme, wenn ungewollt ein latch>entsteht?
Ist ne längere Geschichte. Resultat. LASS ES!!
> Geht das nur auf die Laufzeiten oder den Platzbedarf, oder>was?
Vieles.
MFG
Falk
>Und, ..., was ist das schlimme, wenn ungewollt ein latch entsteht?
Dass es ungewollt entsteht, das ist das Schlimme daran :-o
Latches an sich sind nicht schlimm (das ist sogar eine eigene
Betriebsart der FFs in den FPGA-Slices bei Xilinx), aber wenn du das
ungewollt produzierst, passiert es gern, dass deine Simulation nicht
mehr zur Realität passt.
> Ist ne längere Geschichte. Resultat. LASS ES!!
Is so.
Wenn bei der Synthese Warnungen und Meldungen mit "... Latch ..."
auftauchen, ist jede einzelne es wert, genauer angeschaut zu werden.