Forum: FPGA, VHDL & Co. Vivado simulation wie Testbench und DUT verbinden?


von Matze (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich möchte in Vivado simulieren können, weiß aber nicht wie Testbench 
und DUT verbunden werden können.

Hier das Versuchsobjekt AND-Gatter
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity AND_Simu is
5
    Port ( A : in STD_LOGIC;
6
           B : in STD_LOGIC;
7
           c : out STD_LOGIC);
8
end AND_Simu;
9
10
architecture Behavioral of AND_Simu is
11
begin
12
    c <= A AND B;
13
end Behavioral;

Und die Testbench Testbench:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity AND_Simulation is
5
    Port ( A : out STD_LOGIC;
6
           B : out STD_LOGIC;
7
           C : in STD_LOGIC);
8
end AND_Simulation;
9
10
architecture Behavioral of AND_Simulation is
11
begin
12
STIMULUS: process
13
    begin
14
    A <= '0';
15
    B <= '0';
16
    wait for 10 ns;
17
    A <= '1';
18
    B <= '0';
19
    wait for 10 ns;
20
    A <= '0';
21
    B <= '1';
22
    wait for 10 ns;
23
    A <= '1';
24
    B <= '1';
25
end process STIMULUS;
26
end Behavioral;

Im Anhang ist ein Screenshot von Vivado.
Wass muss ich anstellen um beide verbinden und simulieren zu können.

Denn ich kann entweder das DUT oder die Testbench im Simulator ablaufen 
lassen.

Denn einzeln sind sie Simulierbar.

von endox (Gast)


Lesenswert?

Hallo Matze,

dir fehlt die Port-Map deines DUT. Die brauchst Du zusätzlich zur 
Komponente noch.
Das sieht man übrigens auch im Sources-Baum von Vivado. Dein DUT ist der 
Testbench nicht untergeordnet.
Schau mal hier:
http://www.mikrocontroller.net/articles/VHDL_Testbench

Das gilt übrigens nicht nur für Vivado, sondern für alle Simulatoren.

Grüße,
Rainer

von Markus F. (mfro)


Lesenswert?

Eine Testbench zeichnet sich dadurch aus, dass sie selbst eine leere 
entity-Beschreibung hat:
1
entity AND_Simulation is
2
end AND_Simulation;

Dann muss sie natürlich die UUT (unit under test) irgendwo (in der 
Testbench-architecture) einbauen:
1
i_and_simulation : entity work.AND_simu
2
    port map ( ... );

Danach kannst Du in der architecture damit rumhantieren.

: Bearbeitet durch User
von Matze (Gast)


Lesenswert?

Danke eure Antworten,
hatte die port map ganz vergessen.

Nun funktioniert es wie vorgesehen

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.