VHDL-симуляция не запускается - PullRequest
0 голосов
/ 27 ноября 2018

Я только что взял Руководство дизайнера по VHDL, и я прорабатываю упражнения в первой главе.Я столкнулся с проблемой с моим 2-битным мультиплексором, которую я не понимаю.

Код для моего мультиплексора:

library ieee;
use ieee.std_logic_1164.all;

entity multi2 is
        port
        (
            a,b     : in bit;
            sel     : in boolean;
            z       : out bit   
        );
end multi2;

architecture behave of multi2 is

begin
    storage : process is
        variable stored_d0 : bit;
    begin
    wait for 1 ns;

    if sel then
        z <= a;
    else
        z <= b;
    end if;

    end process storage;
end architecture behave;

Я не могу понять, зачем мне нужно "ждать"на 1 нс; "линия.Если я переместу его ниже строки «конец, если», симуляция не сработает, и я не получу вывод .vcd из GHDL.Без линии ожидания, или из-за того, что она находится не в том месте, я получаю сообщение об ошибке в моем файле vcd о том, что время начала и окончания совпадают.

Нужны ли мне операторы ожидания в моем процессе, чтобы работать?

Код моего стенда ниже:

    library ieee;
use ieee.std_logic_1164.all;

entity multi2_tb is
end multi2_tb;

architecture test of multi2_tb is
component multi2
    port
    (
        a,b     : in bit;
        sel     : in boolean;
        z       : out bit
    );
end component;

signal a,b       : bit;
signal sel       : boolean;
signal z         : bit;

begin
multiplexer2: multi2 port map (a => a, b => b, sel => sel, z => z);

process begin

    a <= '0';
    b <= '1';
    sel <= false;
    wait for 3 ns;

    a <= '0';
    b <= '1';
    sel <= true;
    wait for 3 ns;

    a <= '0';
    b <= '1';
    sel <= false;
    wait for 3 ns;


    assert false report "Reached end of test";
    wait;

    end process;
end test;
...