Синтез функции IS_X - PullRequest
       19

Синтез функции IS_X

0 голосов
/ 19 октября 2018

У меня есть некоторые проблемы при синтезе сущности, которая использует функцию IS_X ().В частности, отображается сообщение

[Ошибка], имя IS_X неизвестно

.
Это синтезируемое?

library IEEE;
use IEEE.std_logic_1164.all;

entity FF2 is
    generic(XOUT, XNOUT: std_logic);
    port(   INPUT, CLK: in std_logic;
            OUTPUT, NOUTPUT: out std_logic
    );
end entity FF2;

architecture behavioral of FF2 is

    signal temp : std_logic := '0';
    begin
        FUNC:process(CLK)
        begin
            if(CLK'event and rising_edge(CLK)) then
                temp <= INPUT;
            end if;
        end process FUNC;

        OUTPUT <= XOUT when is_x(temp) else temp;
        NOUTPUT <= XNOUT when is_x(temp) else (not temp);

end architecture behavioral;

1 Ответ

0 голосов
/ 22 октября 2018

Что вы подразумеваете под синтезируемым?Использование is_x для создания аппаратного обеспечения не должно поддерживаться инструментом синтеза, поскольку в аппаратном обеспечении есть только 0 и 1, а после синтеза ничего не может быть создано для вашего кода:

OUTPUT <= XOUT when is_x(temp) else temp;
NOUTPUT <= XNOUT when is_x(temp) else (not temp);

OTOH, используя is_xв операторе отчета должен игнорироваться ваш инструмент синтеза (имеется в виду поддерживаемое использование is_x для сообщения о проблемах моделирования), поскольку он не создает никакого оборудования:

assert not(is_x(temp)) report "captured X on input" severity error;

Это полезно для отладки, особенно в statemachine, гдеесть много X маскировки.Если ваш инструмент синтеза не принимает это, обязательно отправьте это как ошибку поставщику - и сообщите о них здесь.

...