2016-07-21 17 views
1

Ich habe ein Problem mit GHDL (http://ghdl.readthedocs.io/en/latest/), um mein VHDL-Design zu simulieren. Also, wenn ich den Befehl ghdl -e Averager_tb verwenden, um die Testbank mit GHDL zu kompilieren bekomme ich die Warnung:"Komponenteninstanz" uut "ist nicht gebunden" bei der Simulation eines Prüfstands mit GHDL-Simulator

Averager_tb.VHD:33:3:warning: component instance "uut" is not bound 
Averager_tb.VHD:11:14:warning: (in default configuration of averager_tb(behaviour)) 

Um den Prüfstand zu kompilieren für die Simulation ich die folgenden Befehle verwenden:

ghdl -a Averager_tb.VHD # the test bench file is Averager_tb.VHD 
ghdl -e Averager_tb # the entity for the test bench is Averager_tb 

und den Ausgang meines Entwurfs bleibt während der Testbench unverändert, ich finde auch, dass die Druckanweisungen im Design nicht ausgeführt werden.

Um die kompilierte Prüfstand Simulation ausführen verwende ich den Befehl:

ghdl -r Averager_tb 

Allerdings, wenn ich die gleiche Testumgebung auf http://www.edaplayground.com mit der Aldec Riviera Pro 2.015,06 Simulator simulieren ich, dass die Druck Aussagen im Design finden ausgeführt werden und die Ausgabe ändert sich wie ich es erwarten würde.

Warum ist das und wie könnte ich es beheben?

Hier wird die Entity-Deklaration in meinem Design

-- Entity Declaration in Design 
entity Averager is 
port (
clk : in std_logic; 
ClockEnable : in std_logic; 
Averager_In : in std_logic_vector(7 downto 0); 
Averager_Out : out std_logic_vector(7 downto 0) 
); 
end Averager; 

Im Folgenden wird der Prüfstand ist:

-- TEST BENCH 

architecture behaviour of Averager_tb is 
    signal X : real := 0.0; -- a real math variable initialized to 0 
    signal sine : real := 0.0; -- a real math variable initialized to 0 

    component Averager 
    port(
    clk : in std_logic; 
    ClockEnable : in std_logic; 
    Averager_In : in std_logic_vector(7 downto 0); 
    Averager_Out : out std_logic_vector(7 downto 0) 
    ); 
    end component; 

    signal clk : std_logic := '0'; 
    signal ADC_clk : std_logic := '0'; 
    signal Input : std_logic_vector(7 downto 0); 
    signal FPGAOutput : std_logic_vector(7 downto 0); 
    signal int_sine : integer; 
    constant clk_period : time := 5 ns; 

begin 
    -- Instantiate the Unit Under Test (UUT) 
    UUT : Averager 
    port map (
    clk => clk, 
    ClockEnable => ADC_clk, 
    Averager_In => Input, 
    Averager_Out => FPGAOutput 
); 

    ... 

Antwort

2

es heraus, es ist ein dummer Fehler war, habe ich vergessen, wie auch das Design zu kompilieren als der Prüfstand. Die Lösung wurde kompilieren und ausführen wie folgt:

ghdl -a Averager_Bettertb.VHD 
ghdl -a Averager.VHD 
ghdl -e Averager_tb 
ghdl -r Averager_tb #--stop-time=10us 
+2

das getan haben, wenn Sie die Dokumentation oder ghdl internen Hilfenachrichten lesen, werden Sie eine Option finden, die ein Makefile schreibt das Design einfacher in Zukunft zu machen Wiederaufbau. –

+0

Thsnks, Ich habe gerade ein Bash-Skript verwendet, um meinen Code neu zu erstellen, also werde ich einen Blick werfen, der sehr appreciated ist. – SomeRandomPhysicist