Язык AHDL

       

Использование оператора Assert


Вы можете использовать оператор Assert для проверки действительности любого произвольного выражения, которое использует параметры, числа, вычисляемые функции или использует или не использует статус порта. Вы могли бы, например,   использовать оператор Assert для определения того, попадает ли значение дополнительного параметра в диапазон, определяемый значением второго параметра.

Когда Вы используете оператор Assert

с условиями, Вы приводите список приемлемых значений для устанавливаемых условий. Если значение не допустимо, активизируется оператор и выдается сообщение. Если Вы используете оператор Assert без условий, то оператор активизируется всегда.

Компилятор вычисляет каждое условие только один раз после того, как модуль экстрактора списка связей (Netlist Extractor) разрешил все значения параметров. Оператор не может зависеть от значения сигнала, который реализуется в устройстве. Например, если оператор Assert помещается после оператора If Then вида IF a = VCC THEN c = d, то условие оператора Assert не может зависеть от значения a.

Файл condlog2.tdf, приведенный ниже, имеет такую же функциональность как и condlog1.tdf, но использует операторы Assert в разделе Logic для сообщения какая логика сгенерирована оператором If Generate.

PARAMETERS (DEVICE_FAMILY);

SUBDESIGN condlog2

(

   input_a : INPUT;

   output_b : OUTPUT;

)

BEGIN

   IF DEVICE_FAMILY == "FLEX8000" GENERATE

      output_b = input_a;

ASSERT

         REPORT "Компиляция для семейства FLEX8000"

         SEVERITY INFO;

   ELSE GENERATE

      output_b = LCELL(input_a);

      ASSERT (DEVICE_FAMILY == "FLEX10K")

         REPORT "Компиляция для семейства %", DEVICE_FAMILY;

   END GENERATE;

END;



Содержание раздела