НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 117118119120121122123 ... 233


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

$SIMON

Директива $SIMON используется для отмены действия директивы SSIMOFF. Тестовые векторы, следующие за данной директивой, вычисляются в полном объеме.

Расширенный синтаксис

Далее следует описание команд, которые можно располагать в секции тестовых векторов .SI файла после ключевого слова VECTORS.

Оператор присваивания ($SET) Синтаксис

$SET <variable> = <constant>;

<variable> = <single sym> <field> <defined variable> <constant> = <quoted val> <tv string>

<quoted val> = числа, заключенные в одиночные или двойные кавычки, представляющие входы или выходы. Они будут интерпретированы с учетом установленного основания системы счисления и не должны содержать неопределенных значений.

<tv string> = строка со значениями тестового вектора. Количество значений должно быть эквивалентно количеству бит в переменной, которой они присвоены.

Действие

С помощью этого оператора производится присваивание константного значения символу, массиву (полю) или переменной. Он вступает в действие немедленно, но затрагивает только пользовательские значения переменной; результаты последнего шага моделирования не изменяются. Может располагаться в любом месте секции тестовых векторов.

Пример

$set input = 3F; /* single quotes for inputs */

$set output = "80"; /* double quotes for outputs */ $set Z = HHHH; /* test vector values for a 4-bit

output variable */

Арифметические и логические операции ($СОМР) Синтаксис

$СОМР <variable> = <expression>;

<variable> = <single sym> <field> <defined variable>

<expression> = любое арифметическое или логическое выражение, в котором операнды могут быть переменными или константами.

Константы должны быть десятичными числами (без кавычек), использование скобок разрешено.



Таблица 5.32

Оператор

Функция

Приоритет

&

Таблица 5.33

Оператор

Функция

Приоритет

Умножение

Деление

Сложение

Вычитание

И логические (табл. 5.32), и арифметические операции (табл. 5.33) можно использовать в одном и том же выражении без ограничений. Логические операции имеют более высокий приоритет, однако приоритет выполнения операций в выражении можно изменить посредством использования скобок.

Действие

Выполняется вычисление выражения и присваивание результата указанной переменной. При вычислении вьфажения используются текущие значения операндов (пользовательские значения). Вступает в действие немедленно, но затрагивает только пользовательские значения переменной; результаты последнего щага моделирования не изменяются. Может располагаться в любом месте секции тестовых векторов.

Примеры

$С0МР А= {!В+С) *А+1; $С0МР X = {Z / 2) # MASK;

Генерация тестового вектора ($OUT)

Синтаксис

$оит

Действие

Запускает процесс моделирования для текущих значений символов и генерирует тестовый вектор. Полезно использовать после команд $set и Scomp, что позволяет задействовать в вычислении вектора присвоенные в предыдущих операторах значения.

Пример

Показанный ниже набор команд в SI файле:

ORDER: CLOCK, %3, 0Е, %3, shift, %1, input, %2, output; VECTORS:

0 0 X ХХХХХХХХ LLLLLLLL /* power-on reset state */

$set CLOCK = C;

$set shift = 0;

$set input = 80;

$set output = "80";

$out;



произведет следующий результат в SO файле:

0001: О О XXX ХХХХХХХХ LLLLLLLL 0002: С О ООО 10000000 HLLLLLLL

Условный оператор ($IF)

Синтаксис

$IF <condition> : <Ыоск 1> [ $ELSE : <Ыоск 2> 1 $ENDIF;

<condition> = <var list> <logic operators> <constant>

логические операции:

= равно

# не равно

> больше

< меньше

>= больше или равно

<= меньше или равно

<constant> = <quoted val> <tv string>

<block l>,<block 2> = любая последовательность операторов, включая тестовые векторы.

Использование оператора $ELSE не является обязательным. Действие

Вычисление условия производится с использованием текущего значения переменной. Если результат равен значению ИСТИНА, то выполняются операторы из <Ыоск 1>, иначе, если присутствует ветвление $ELSE, выполняются операторы из <Ыоск 2>. $ENDIF отмечает конец оператора IF.

Операторы циклов

Оператор FOR

Синтаксис

SFOR <count> = <п1>..<п2> : <Ыоск> $ENDF;

<count> = счетчик цикла FOR; он принимает значения между <п1> и <п2>. <п1>,<п2> = граничные значения счетчика <count>; должны быть положительными десятичными числами.

<Ыоск> = любая последовательность операторов, включая тестовые векторы.

Действие

Шаг 1. Инициализация счетчика <count> значением <п1>.

Шаг 2. Выполнение <Ыоск>.



0 ... 117118119120121122123 ... 233