Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выполнение контроля выражений с помощью оператора Assert

Читайте также:
  1. IV НОРМИ І ВИМОГИ ОХОРОНИ ПРАЦІ НА РОБОЧОМУ МІСЦІ ОПЕРАТОРА КОМП'ЮТЕРНОГО НАБОРУ
  2. VI. ОЦЕНОЧНЫЕ СРЕДСТВА ДЛЯ ТЕКУЩЕГО КОНТРОЛЯ И ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ
  3. А стоит ли читать модную «молитву задержания»? В молитвословах, изданных Патриархией, ее нет, но множество листовок призывает с помощью этой молитвы задержать приход антихриста.
  4. АЛГОРИТМ ДЕЙСТВИЙ ПРИ ПОДАЧЕ УВЛАЖНЕННОГО КИСЛОРОДА С ПОМОЩЬЮ аппарата БОБРОВА
  5. Ампутация ноги с помощью перочинного ножа
  6. Анализ диапазона контроля
  7. Анализ характеристик объекта контроля

Вы можете использовать оператор 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;

4.8. Управление логическим синтезом с помощью примитивов LCELL & SOFT

Вы можете ограничить размер (масштаб) логического синтеза путем изменения переменных NODE на SOFT и LCELL примитивы. NODE переменные и LCELL примитивы обеспечивают наибольшее управление всем логическим синтезом. SOFT примитивы не предусмотрены для управления всем логическим синтезом.

NODE переменные, объявленные с помощью объявления Node в разделе Variable налагают несколько ограничений на логический синтез. Во время синтеза логический синтезатор заменяет каждый экземпляр переменной NODE логикой, которая представляет переменную. Затем он минимизирует логику для подгонки в одну логическую ячейку. Обычно этот метод дает самую большую скорость, но может приводить к слишком сложной логике.

SOFT буферы обеспечивают больший контроль по использованию ресурсов, чем NODE переменные. Логический синтезатор выбирает, когда заместить экземпляры SOFT примитивов с помощью LCELL примитивов. SOFT буферы могут помочь в исключении слишком сложной логики и упрощении подгонки проекта, но могут увеличить использование логических ячеек и уменьшить быстродействие.

LCELL примитивы обеспечивают наибольшее управление. Логический синтезатор минимизирует всю логику, которая управляет LCELL примитивом, так что она занимает только одну логическую ячейку. LCELL примитивы всегда реализуются в логической ячейке и никогда не удаляются из проекту даже если они запитываются одним входом. В последнем случае Вы можете использовать SOFT примитив вместо LCELL примитива, который будет удаляться во время логического синтеза.

MAX+PLUS II обеспечивает несколько логических опций, которые автоматически вставляют или удаляют SOFT и LCELL буферы в соответствующих местах проекта.

Следующая иллюстрация демонстрирует два варианта TDF файла: один реализуется с помощью NODE переменных, а другой с SOFT примитивами. В nodevar переменная odd_parity объявлена как NODE и затем ей присвоено значение булева выражения d0 $ d1 $... $ d8. В softbuf компилятор замещает некоторые SOFT примитивы на LCELL примитивы во время обработки для улучшения использования устройства.

 

TDF с NODE переменными: TDF с SOFT примитивами:

 

SUBDESIGN nodevar SUBDESIGN softbuf

((

))

VARIABLE VARIABLE

odd_parity: NODE; odd_parity: NODE;

BEGIN BEGIN

odd_parity = odd_parity =

d0 $ d1 $ d2$ SOFT(d0 $ d1 $ d2) $

d3 $ d4 $ d5$ SOFT(d3 $ d4 $ d5) $

d6 $ d7 $ d8; SOFT(d6 $ d7 $ d8);

END; END;


Дата добавления: 2015-08-21; просмотров: 74 | Нарушение авторских прав


Читайте в этой же книге: Массивы примитивов | Мегафункции и библиотеки параметризуемых модулей | Определение включаемого текста (оператор Include) | Определение параметров (оператор Parameters) | Определение прототипов логических функций (оператор Function Prototype). | Определение порядка следования битов (оператор Options) | Объявление объектов (Instance Declarations) | Объявление конечных автоматов (State Machine Declarations) | Задание исходных значений (Defaults Statment) | Оператор проверки логического выражения (If Then.) |
<== предыдущая страница | следующая страница ==>
Использование ссылок на прототипы функций (In-Line Logic Function Reference)| Использование значений переменных по умолчанию

mybiblioteka.su - 2015-2024 год. (0.007 сек.)