2016-07-21 4 views
1

У меня возникла проблема с использованием GHDL (http://ghdl.readthedocs.io/en/latest/) для моделирования моего VHDL-дизайна. Так что, когда я использую команду ghdl -e Averager_tb для компиляции тестового стенда с GHDL я получаю предупреждение:«компонентный экземпляр« uut »не связан» при моделировании тестового стенда с симулятором GHDL

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)) 

Чтобы компилировать испытательный стенд для моделирования я использую следующие команды:

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 

И выход мой дизайн остается неизменным на протяжении всего тестового стенда, я также считаю, что утверждения печати внутри Design не выполняются.

Чтобы выполнить скомпилированный испытательный стенд моделирование я использую команду:

ghdl -r Averager_tb 

Однако, когда я имитировать тот же испытательный стенд на http://www.edaplayground.com с помощью Aldec Riviera Pro 2015.06 тренажера Я считаю, что операторы печати внутри конструкций выполнены и выход меняется, как я ожидал.

Почему это и как я могу это исправить?

Вот объявление сущности в моей конструкции

-- 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; 

Ниже испытательный стенд:

-- 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 
); 

    ... 

ответ

2

Фигурные это, это была глупая ошибка, я забыл скомпилировать проект, а также как испытательный стенд. Решение было компилировать и запускать так:

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

Сделав это, если вы читать документы или внутренние сообщения справки ghdl, вы найдете опцию, которая записывает Makefile, чтобы сделать восстановление конструкции легче в будущем. –

+0

Thsnks, я только что использовал скрипт bash, чтобы перестроить мой код, поэтому я посмотрю, очень много. – SomeRandomPhysicist