Forum: FPGA, VHDL & Co. LVDS in ISE simulieren


von Andreas (Gast)


Lesenswert?

Hallo,

ich frage mich gerade, wie ich einen Takt bzw. ein Datenkanal, der per 
LVDS in den Spartan3A DSP gegeben wird, simulieren kann.

Ich bin bisher immer wie folgt vorgegangen:
New Source => Testbench waveform und dann im Fenster meinen Referenztakt 
oben rechts angegeben und dann alle Eingänge entsprechend dazu gesetzt 
oder eben nicht gesetzt.

Nun sind ja zwei Pads mit einem LVDS Signal belegt, die dann mit Hilfe 
eines IBUFDS bzw. IBUFGDS in ein verwertbares Signal gewandelt werden. 
Wie kann ich in der Simulation auf diesen Resultierenden Takt zugreifen? 
Bzw wie teile ich dem testbench mit, dass sich mein Takt/ meine Daten, 
aus zwei Pads ergeben, denn die IBUFDS bzw. IBUFGDS wird ja erst 
mitsimuliert und kann nicht einfach weggelassen werden.

DANKE!

von Christian R. (supachris)


Lesenswert?

In der Testbench einfach den Takt invertieren und auf den _P Eingang 
geben. Fertig. Oder halt einen 2. Takt mit 180° Phasenlage zum ersten 
erzeugen, wenn du dieses grafische Dingens da benutzt....

von Andreas (Gast)


Lesenswert?

Dieses "grafische Dingens" war so in dem Einsteigertutorial von Xilinx 
beschrieben. Habe bisher noch keine Anleitung dazu gefunden, wie ich 
eine Testbench selber schreiben kann. Wenn ich mir aus dem Wizzard eine 
.vhw Datei erstellen lassen, sieht das ganze auch sehr "unbekannt" aus, 
also nicht das ich mir das hätte selbst beibringen können...

Ich werd mal einen Blick in das Buch VHDL Synthese werfen, vielleicht 
steht ja dort etwas dazu.

Denn mit deinem Tip, einfach den einen Takt zu invertieren und auf das 
_p Pad zu geben, damit kann ich momentan leider noch nichts anfangen. 
Steht in meinem Kopf aktuell noch im Widerspruch zum eigentlichen 
Design, wo ja das _P Pad ein extra Eingang ist. Das würde bedeuten, dass 
ich im Testbench EIngänge auch "extern" verschalten kann?

DANKE

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Habe bisher noch keine Anleitung dazu gefunden, wie ich
> eine Testbench selber schreiben kann.
Rechtsklick in dein Projekt --> New Source --> Testbench
Und dann in diese VHDL-Datei deine Stimulidaten eingeben.

von Christian R. (supachris)


Lesenswert?

Natürlich kannst/musst du die Eingänge extra verschalten. Für eine 
normale Testbench macht es prinzipiell erst mal keinen Unterschied, ob 
sie ein einzelnes VHDL Modul oder ein ganzes Top-Level-Design incl. 
aller Unter-Module anspricht.

VHDL-Testbench erzeugt ISE automatisch: New Source -> VHDL Testbench -> 
Dann das Top-Level File auswählen und schon erzeugt der das VHDL File 
zum simulieren. Im Normalfall erkennt der auch die CLKs, da musst du nur 
noch die Periodendauer eintragen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Das würde bedeuten, dass ich im Testbench EIngänge
> auch "extern" verschalten kann?
Eine Testbench ist eine normale VHDL-Datei, mit einer Entity, die keine 
Ports nach aussen hat. In diese entity wird als Komponente dein Design 
eingebunden.

Sieh dir einfach mal eine einfache Testbench an:
http://www.lothar-miller.de/s9y/categories/46-Encoder
oder
http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung

von Andreas (Gast)


Lesenswert?

Ich habe jetzt den Testbench erstellt:
1
---------------------------------------------------------------------------
2
LIBRARY ieee;
3
USE ieee.std_logic_1164.ALL;
4
USE ieee.std_logic_unsigned.all;
5
USE ieee.numeric_std.ALL;
6
 
7
ENTITY tb_IDDR2_Dataout IS
8
END tb_IDDR2_Dataout;
9
 
10
ARCHITECTURE behavior OF tb_IDDR2_Dataout IS 
11
 
12
    -- Component Declaration for the Unit Under Test (UUT)
13
 
14
    COMPONENT LVDS_CLOCK_IN
15
    PORT(
16
         AFE_CLK_P : IN  std_logic;
17
         AFE_CLK_N : IN  std_logic;
18
         AFE_DAT_P : IN  std_logic;
19
         AFE_DAT_N : IN  std_logic;
20
         DCM_RESET : IN  std_logic;
21
         DDR_RESET : IN  std_logic;
22
         SET_DDR : IN  std_logic;
23
         CLOCK_OUT0 : OUT  std_logic;
24
         DATA_OUTQ0 : OUT  std_logic;
25
         DATA_OUTQ1 : OUT  std_logic
26
        );
27
    END COMPONENT;
28
    
29
30
   --Inputs
31
   signal AFE_CLK_P : std_logic := '0';
32
   signal AFE_CLK_N : std_logic := '0';
33
   signal AFE_DAT_P : std_logic := '0';
34
   signal AFE_DAT_N : std_logic := '0';
35
   signal DCM_RESET : std_logic := '0';
36
   signal DDR_RESET : std_logic := '0';
37
   signal SET_DDR : std_logic := '0';
38
39
   --Outputs
40
   signal CLOCK_OUT0 : std_logic;
41
   signal DATA_OUTQ0 : std_logic;
42
   signal DATA_OUTQ1 : std_logic;
43
 
44
BEGIN
45
 
46
  -- Instantiate the Unit Under Test (UUT)
47
   uut: LVDS_CLOCK_IN PORT MAP (
48
          AFE_CLK_P => AFE_CLK_P,
49
          AFE_CLK_N => AFE_CLK_N,
50
          AFE_DAT_P => AFE_DAT_P,
51
          AFE_DAT_N => AFE_DAT_N,
52
          DCM_RESET => DCM_RESET,
53
          DDR_RESET => DDR_RESET,
54
          SET_DDR => SET_DDR,
55
          CLOCK_OUT0 => CLOCK_OUT0,
56
          DATA_OUTQ0 => DATA_OUTQ0,
57
          DATA_OUTQ1 => DATA_OUTQ1
58
        );
59
   
60
   AFE_CLK_N <= NOT AFE_CLK_P;
61
62
   -- No clocks detected in port list. Replace <clock> below with 
63
   -- appropriate port name 
64
 
65
   constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
66
 
67
   AFE_CLK_P_process :process
68
   begin
69
    AFE_CLK_P <= '0';
70
    wait for AFE_CLK_Pperiod/2;
71
    AFE_CLK_P <= '1';
72
    wait for AFE_CLK_Pperiod/2;
73
   end process;
74
 
75
76
   -- Stimulus process
77
   stim_proc: process
78
   begin    
79
      -- hold reset state for 100ms.
80
      wait for 100ms;  
81
82
      wait for AFE_CLK_Pperiod*10;
83
84
      -- insert stimulus here 
85
86
      wait;
87
   end process;
88
89
END;
Nun meldet er mir in Zeile 89 einen Fehler, nahe des Ausdruckes 
constant... ich habe lediglich das automatisch erzeugte <clock> ersetzt, 
da er keinen CLK gefunden hat.
Der Aufbau dieser Testbench ist mir nun klar, nur habe ich auch die 
beiden LVDS Takteingänge AFE_CLK_N und AFE_CLK_P richtig verschaltet mit 
AFE_CLK_N <= NOT AFE_CLK_P; ?

VIELEN DANK für die schnelle und umfangreiche Hilfe :)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>    constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
Konstanten werden woanders definiert...
Probiers mal dort wo auch die Signale definiert werden.

von Andreas (Gast)


Lesenswert?

Habe es jetzt hinter und vor den signalen versucht, dann kommt dieser 
Fehler:
1
Line 55. Syntax error near :=

Eigentlich war ich davon ausgegangen, dass so ein automatisch 
generiertes File fehlerfrei ist, vor allem was die Platzierung der 
Deklarationen angeht. Das das Programm nicht wissen kann, welches Pad 
nun mein Takt ist und ich das nachtragen muss, ist ja in Ordnung, aber 
dass ich bei Syntax Check über 20 und mehr Fehler stolpere, die nix mit 
meinen Änderungen zu tun haben, finde ich schon sehr komisch.

Kann ich denn im eigentlichen Design Fehler gemacht haben, die sich hier 
fortsetzen?
Aber der Syntaxcheck des Designs ist fehlerfrei, läßt sich auch umsetzen 
und ein Bitstream erhalte ich auch. Programmiert habe ich es auch schon, 
nur leider wird eine Teilfunktion (nämlich ein IDDR2) nicht richtig 
ausgeführt und ich wollte nun mit Hilfe der Simulation schauen, woran es 
liegt. NUr deswegen bin ich auf das Problem gestoßen.

DANKE!

PS: Hier nochmal der VOllständigkeithalber mein Design:
1
entity LVDS_CLOCK_IN is
2
    Port ( AFE_CLK_P : in  STD_LOGIC;
3
          AFE_CLK_N : in  STD_LOGIC;
4
        AFE_DAT_P : in  STD_LOGIC;
5
           AFE_DAT_N : in  STD_LOGIC;
6
        DCM_RESET : in STD_LOGIC;
7
        DDR_RESET : in STD_LOGIC;
8
        SET_DDR : in STD_LOGIC;
9
        CLOCK_OUT0 : out STD_LOGIC;
10
        DATA_OUTQ0 : out STD_LOGIC;
11
        DATA_OUTQ1 : out STD_LOGIC);
12
end LVDS_CLOCK_IN;
13
14
architecture Behavioral of LVDS_CLOCK_IN is
15
16
signal CLOCK_INT : STD_LOGIC;
17
signal CLOCK_OUT0_int : STD_LOGIC;
18
signal CLOCK_OUT180_int : STD_LOGIC;
19
signal CLKFB_in : STD_LOGIC;
20
signal DATA_INT : STD_LOGIC;
21
22
constant IDDR2_CE : STD_LOGIC := '1';
23
24
begin
25
26
A : IBUFGDS
27
      port map (O => CLOCK_INT,
28
                I => AFE_CLK_P,
29
                IB => AFE_CLK_N);
30
           
31
B : IBUFDS
32
      port map (O => DATA_INT,
33
                I => AFE_DAT_P,
34
                IB => AFE_DAT_N);
35
36
C : BUFG
37
      port map (I=>CLOCK_OUT0_int,
38
                O=>CLOCK_OUT0);
39
40
D : BUFG
41
      port map (I=>CLOCK_OUT0_int,
42
                O=>CLKFB_in);
43
44
E : DCM_SP
45
   generic map (
46
      CLKDV_DIVIDE => 2.0, --  Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
47
                           --     7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
48
      CLKFX_DIVIDE => 2,   --  Can be any interger from 1 to 32
49
      CLKFX_MULTIPLY => 2, --  Can be any integer from 1 to 32
50
      CLKIN_DIVIDE_BY_2 => FALSE, --  TRUE/FALSE to enable CLKIN divide by two feature
51
      CLKIN_PERIOD => 6.25, --  Specify period of input clock
52
      CLKOUT_PHASE_SHIFT => "NONE", --  Specify phase shift of "NONE", "FIXED" or "VARIABLE" 
53
      CLK_FEEDBACK => "1X",         --  Specify clock feedback of "NONE", "1X" or "2X" 
54
      DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- "SOURCE_SYNCHRONOUS", "SYSTEM_SYNCHRONOUS" or
55
                                             --     an integer from 0 to 15
56
      DLL_FREQUENCY_MODE => "LOW",     -- "HIGH" or "LOW" frequency mode for DLL
57
      DUTY_CYCLE_CORRECTION => TRUE, --  Duty cycle correction, TRUE or FALSE
58
      PHASE_SHIFT => 0,        --  Amount of fixed phase shift from -255 to 255
59
      STARTUP_WAIT => FALSE) --  Delay configuration DONE until DCM_SP LOCK, TRUE/FALSE
60
   port map (
61
      CLK0 => CLOCK_OUT0_int,     -- 0 degree DCM CLK ouptput
62
      CLK180 => CLOCK_OUT180_int, -- 180 degree DCM CLK output
63
      CLK270 => open, -- 270 degree DCM CLK output
64
      CLK2X => open,   -- 2X DCM CLK output
65
      CLK2X180 => open, -- 2X, 180 degree DCM CLK out
66
      CLK90 => open,   -- 90 degree DCM CLK output
67
      CLKDV => open,   -- Divided DCM CLK out (CLKDV_DIVIDE)
68
      CLKFX => open,   -- DCM CLK synthesis out (M/D)
69
      CLKFX180 => open, -- 180 degree CLK synthesis out
70
      LOCKED => open, -- DCM LOCK status output
71
      PSDONE => open, -- Dynamic phase adjust done output
72
      STATUS => open, -- 8-bit DCM status bits output
73
      CLKFB => CLKFB_in,   -- DCM clock feedback
74
      CLKIN => CLOCK_INT,   -- Clock input (from IBUFG, BUFG or DCM)
75
      PSCLK => open,   -- Dynamic phase adjust clock input
76
      PSEN => open,     -- Dynamic phase adjust enable input
77
      PSINCDEC => open, -- Dynamic phase adjust increment/decrement
78
      RST => DCM_RESET        -- DCM asynchronous reset input
79
   );
80
81
F : IDDR2
82
generic map (
83
   DDR_ALIGNMENT => "NONE", -- Sets output alignment 
84
                            -- to "NONE", "C0" or "C1"
85
   INIT_Q0 => '0', -- Sets initial state of the Q0  
86
                   --   output to ?0? or ?1?
87
   INIT_Q1 => '0', -- Sets initial state of the Q1 
88
                   --   output to ?0? or ?1?
89
   SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" 
90
                      --   set/reset
91
port map (
92
   Q0 => DATA_OUTQ0, -- 1-bit output captured with C0 clock
93
   Q1 => DATA_OUTQ1, -- 1-bit output captured with C1 clock
94
   C0 => CLOCK_OUT0_int, -- 1-bit clock input
95
   C1 => CLOCK_OUT180_int, -- 1-bit clock input
96
   CE => IDDR2_CE, -- 1-bit clock enable input
97
   D => DATA_INT,   -- 1-bit DDR data input
98
   R => DDR_RESET,   -- 1-bit reset input
99
   S => SET_DDR    -- 1-bit set input
100
);
101
102
         
103
end Behavioral;

Ich möchte einfach einen LVDS Takt und einen LVDS Datenstream einlesen 
und dann in 3,3V Pegeln an drei Ausgängen wieder messbar machen. Der 
Ausgangstakt des DCM ist messbar und plausibel, nur die beiden Ausgänge 
des IDDR2 spucken noch nix aus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
Jetzt sehe ich es: die Konstante hat keinen Typ :-o

Da es eine Zeit ist, könnte man das so machen:
constant AFE_CLK_Pperiod : time := 10 ns; --  <== FEHLER

von Andreas (Gast)


Lesenswert?

1000 DANK !!!
Oh je oh je... wo soll das nochmal hinführen mit mir, dem alten 
Programmiergenie :D

Ok, ich hoffe ich kann das jetzt Untersuchen, wo mein Fehler im Design 
liegt....

von Christian R. (supachris)


Lesenswert?

Andreas schrieb:
> 1000 DANK !!!
> Oh je oh je... wo soll das nochmal hinführen mit mir, dem alten
> Programmiergenie :D

Naja, Programmieren und Hardware beschreiben sind zwei völlig 
verschiedene Dinge. Sieht nur ähnlich aus...

von Andreas (Gast)


Lesenswert?

Das es zwei Paar Schuhe sind weiß ich... aber die Tätigkeit ist in 
meinen Augen sehr ähnlich. Ich sitze vorm Rechner und mache mir 
Gedanken, wie ich dieses und jenes Problem in eine bestimmte Syntax 
zwängen kann.
Ich mag es lieber Hardware mit Platinen und fertigen Bauelementen zu 
gießen :)

DANKE für Eure Hilfe!

Ich mußte jetzt erstmal ISE neu installieren, weil mir bei einer 
vorangegangenen Simulation etwas abgeschmiert ist. Ich hoffe ich kann 
den Testbench jetzt testen und meinen Fehler beim IDDR2 finden :)

von Andreas (Gast)


Lesenswert?

NUn hänge ich bei diesem Fehler :(

ERROR: no Simulation Engine found in the Transform Input that matches 
tb_IDDR2_Dataout_isim_beh.exe

Irgendwas scheint in meinem uhrsprünglichen Design noch falsch zu sein, 
denn darauf basiert ja der Testbench.

von MichaM (Gast)


Lesenswert?

Hallo,

ich noch einmal.
Nachdem ich nun quasi von vorne anfangen muss, weil ich den Fehler in 
meinem Design nicht finde, hänge ich nun wieder an der LVDS 
Simulationsgeschichte.

Wenn ich einen LVDS Takt habe, habe ich ein _p und ein _n Pad als Takt, 
die dann über ein IBUFGDS aufgelöst werden. Also habe ich auch im 
Testbench zwei Pads, die dem Takt entsprechen. Diese beiden Pads habe 
ich dann wie folgt gesetzt:
1
AFE_CLK_P_process :process
2
   begin
3
    AFE_CLK_P <= '0';
4
    AFE_CLK_N <= '1';
5
    wait for AFE_CLK_P_period/2;
6
    AFE_CLK_P <= '1';
7
    AFE_CLK_N <= '0';
8
    wait for AFE_CLK_P_period/2;
9
   end process;

Nun kommt aber die Fehlermeldung, dass ich keinen Clock Port habe:
1
ERROR:HDLCompiler:245 - "tb_test2.vhd" Line 42. Binding entity lvds_clock_in does not have port clock

Wie kann ich dem Simulator sagen, dass der Takt sich aus zwei Pads 
zusammen setzt?

Der Syntax Check läuft problemlos durch, die Fehlermeldung taucht erst 
beim eigentlichen simulieren auf.

DANKE!

von Christian R. (supachris)


Lesenswert?

Also ich hab das schon so simuliert. Allerdings mit ModelSim. Hast du 
denn die unisim Library mit drin?

In dem File, in dem du die IBUFGDS drin hast, musst du auch die Xilinx 
Lib drin haben:
1
library UNISIM;
2
use UNISIM.VComponents.all;

von MichaM (Gast)


Lesenswert?

Die UNISIM ist mit eingebunden, sonst würde er ja auch in dem Topfile 
was zu meckern haben.

Ich bin gerade etwas ratlos, wie ich diesem Programm mitteilen soll, das 
er doch bitte diesen LVDS Takt hat.
Kann ich denn irgendwie den Takt (CLOCK_INT) nach dem IBUFGDS "anzapfen" 
und den Testbench nach diesem Signal laufen lassen? Ich könnte zwar 
einfach einen Takt annehmen (den resultierenden Takt der LVDS Signale 
kenne ich ja) und den IBUFGDS weglassen, aber dann muss ich ja immer zum 
simulieren alles umschreiben, was dann bei forgeschrittenem Design 
sicher sehr aufwändig wird...
Zumal ich dann bei LVDS Ausgängen wieder das gleiche Problem bekommen 
könnte.

DANKE!

von Christian R. (supachris)


Lesenswert?

Kannst du mal ModelSim XE Starter installieren, und schauen, ob es da 
klappt? Ich hab gerade nochmal geschaut, ich hab das genauso simuliert, 
und das hat funktioniert. Hatte zwar hinter den differenziellen 
Eingängen direkt einen DCM, aber der hat auch nur einen IBUFGDS am 
Eingang dann.
Oder kannst du das ganze Projekt mal zippen und reinstellen? Also nur 
die Source Files, dann schau ich mal im ModelSim.

von MichaM (Gast)


Angehängte Dateien:

Lesenswert?

Achso, hab ich noch gar nicht beachtet... ich habe hinter dem IBUFGDS 
auch einen DCM hängen, also hat der das schon integriert?
Muss ich mal schauen, ob ich einen DCM mit diff. Eingängen finde. Hab 
das bisher immer mit einen extra IBUFGDS gelöst.

Im Anhang die beiden Dateien... das Design File (ist nur eins) und der 
dazugehörige Testbench.

MfG & DANKE

von Christian R. (supachris)


Lesenswert?

Also den DCM kann man im Core-Generator auf differenziellen Eingang 
stellen.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Also ModelSim XE simuliert das erst mal problemlos. Muss irgendwie an 
ISIM liegen.

von Andreas (Gast)


Lesenswert?

Hallo,

ich habe ein wenig mit Modelsim rumprobiert und nun funktioniert es.

Aber ich habe noch zwei kleinere Fragen:
- Wieso speichert Modelsim, wenn ich die Parameter der Takte und 
Einsgangssignale festelege, diese Werte nicht? Ich gehe meinetwegen mit 
Rechtsklick - Clock und gebe alles ein. Wenn ich dann wieder einen 
Rechtsklick mache, steht alles wieder auf Standard. Sehr nervig, wenn 
man nur eine kleine Änderung machen kann.

- Wie komme ich nochmal in den DCM Wizzard? Ich suche schon eine ganze 
Weile, habe ihn auch schon mal benutzt, aber ich finde ihn einfach nicht 
mehr. Auch das Tutorial, was ich damals genutzt habe und wo drin stand, 
ist scheinbar offline.

DANKE!!!

von Andreas (Gast)


Lesenswert?

PS: Kannst du dir in deiner Simulation den Taktaussetzer bei ca. 50ps 
erklären? Dieses Bild stellt sich auch ab und zu bei mir ein... gibt es 
dafür eine Erklärung?

von Christian R. (supachris)


Lesenswert?

Zu deinen Fragen:

1. Was für Takte und Eingangssignale? Die werden in der TestBench in 
VHDL beschrieben. Kann man zwar auch per forca machen, ist aber etwas 
unschön. Und das VHDL bleibt ja gespeichert. Desweiteren kannst du dir 
eine .do Datei schreiben, die die Simulation startet, die Signale in das 
Wave Fenster einträgst usw.

2. Im ISE New Source -> IP Core

3. Die Taktaussetzer sind normal bei dem DCM, da initialisiert sich das 
DIng, bzw. die DLL da drin rastet ein. Deswegen ist da ein LOCK Ausgang 
dran, der zeigt an, dass der DCM Takt stabil ist. Hab ich extra deswegen 
mit ins Bild reingenommen

von Andreas (Gast)


Lesenswert?

Das mit dem TestBench hab ich noch nicht hinbekommen. Da muss ich gleich 
nochmal schauen, dass ich meine Testbench vhdl Datei zum laufen bekomme. 
Habe es bisher immer über force/clock gemacht, so wie es in diversen 
Tutorials gemacht wird. Ein Tutorial mit Testbench habe ich noch nicht 
gefunden, werde danach nochmal intensiver suchen.

Vielen Dank für deine umfassende Hilfe!!!

von Christian R. (supachris)


Lesenswert?

Ich hab einfach deine Testbench genommen, funktioniert doch einwandfrei. 
Nur die anderen Eingangssignale musst du dann selbst hinzufügen (bei 
"Place Stimulus here"

Meinetwegen

nWE <= '0';
Data <= x"0000";

wait for rising_edge(CLK);

nWE <= '1';
Data <= (others => 'Z');

wait für 200 ns;

....


So mal als fingiertes Beispiel....

von Andreas (Gast)


Lesenswert?

Ja, aber wie bekomme ich den Testbench simuliert.
Ich kann ihn öffnen, aber wie kann ich Modelsim sagen, dass er die 
ganzen Simulationsparameter und waveforms aus der Datei nehmen soll?

Ist sicher eine ganz simple Sache, aber ich komm gerade nicht drauf.

Du hast in deinem Screen ja die tb_test3 im workspace drin, nicht mal 
das schaffe ich.

DANKE!!!

von Andreas (Gast)


Lesenswert?

okich habs... hatte vergessen den TEstbench dem Projekt inzuzufügen... 
mal schauen wie ich den jetzt gestartet bekomme :)

von Christian R. (supachris)


Lesenswert?

Am besten eine .do Datei schreiben:

vsim work.tb_test3 -t 1ps
add wave *
run 20000ns

Und die .do Datei auch dem Projekt hinzufügen und dann einfach Execute.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.