![]() | |
НПО Системы Безопасности (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.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 |