Лекция 10. Задачи, решаемые методом логического моделирования

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

Основная цель логического моделирования - проверить правильность функционирования цифровой схемы до её фактического воплощения. Для сложных схем это далеко не тривиальная задача. При традиционных (ручных) методах проектирования она решалась “в лоб” - созданием действующего макета или опытного образца.

Современные технологии производства ИС делают этот метод малоперспективным. Во-первых, стоимость изготовления макета весьма велика, во-вторых, вносить в уже готовую ИС какие-либо изменения практически невозможно.

По этой причине все большую популярность приобретают современные автоматизированные методы проектирования, в которых действующий макет заменяется имитационной моделью проекта, а натурные эксперименты - модельными.

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

Перечислим основные задачи, решаемые методом логического моделирования.

1. Проверка правильности логического функционирования схемы до момента её аппаратного воплощения.

2. Сравнение альтернативных вариантов схемных решений и выбор наиболее подходящего.

3. Проверка правильности и полноты процедур тестового контроля. Разработка контролирующих и диагностических тестов.

4. Контроль выходов компонентов на допустимую нагрузку.

НЕ нашли? Не то? Что вы ищете?

5. Выявление не устанавливаемых элементов по сигналам сброса или начальной инициализации.

6. Исследование временных характеристик схемы - быстродействия, времени выполнения операций, максимальных частот счёта или сдвига. Контроль временных соотношений - времени предустановки и времени удержания, минимальной длительности сигналов. Обнаружение состязаний и рисков сбоя.

7. Контроль компонентов схемы на допустимую мощность рассеяния.

8. Выполнение статистических оценок, например определение процента выхода годных схем, которые невозможно сделать на единичных опытных образцах.

9. Проведение климатических, чаще всего температурных испытаний.

Понятно, что с расширением круга решаемых задач возрастают требования к моделям, а сами они становятся сложнее. Например, для выяснения правильности функционирования схемы можно пренебречь временной задержкой переключения выхода относительно входа и считать, что состояние логического элемента изменяется мгновенно, а сигналы принимают только два значения: лог.0 и лог.1.

При названных допущениях модель логического элемента будет представлять собой булевское уравнение, описывающее логику его работы, а модель всей схемы - систему таких уравнений.

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

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

Попытка “объять необъятное” может вообще привести к тому, что логическое моделирование станет экономически нецелесообразным.

Процесс логического моделирования

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

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

С точки зрения обработки данных моделирование сводится к трём основным процессам.

§  Составление описания моделируемой схемы на некотором языке (ЯОО - язык описания объектов) и ввода его в ЭВМ. Описание можно задать в виде схемы, списком компонентов и связей, в форме табличного представления.

§  Контроль описания (например, поиск “плавающих входов”) и трансляция его в объектный код.

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

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

На рис. 1 графически представлен процесс логического моделирования.


Рис.1. Процесс логического моделирования

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

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

Альтернативой описанному методу является интерпретирующее моделирование, при котором не требуется предварительная сборка загрузочного модуля.

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

Конкретный вид задания и условия моделирования определяются пользователем на специальном языке ЯОЗ - языке описания заданий.

Независимое описание моделируемой схемы (ЯОО) и условий модельного эксперимента (ЯОЗ) позволяет исследовать различные варианты схемы (поисковое проектирование) в одинаковых условиях или экспериментировать с одной схемой, помещая её в разные условия работы и даже исследовать различными методами моделирования.

Модели цифровых сигналов и логических элементов

В различных системах моделирования используются следующие алфавиты моделирования (рис. 2).

{0, 1} - двоичный, булевский (BIT);

{0, 1, Х} - троичный; X - неизвестное значение;

{0, 1, X, Z} - четырехзначный; Z - высокоомный выход;

{0, 1, Х, / , \ } - пятизначный; / - фронт; \ - спад;

{0, 1, Х, R, F} - пятизначный; R (от Rise – фронт); F (от Fall - спад);

{0, 1, Х, Z, R, F } - шестизначный (PSpice, DesignLab 8);

{0, 1, Х, Z, R, F, U} - семизначный; U (от Unknown - неизвестное состояние);

{U, X, 0, 1, Z, W, L, H, -} – девятизначный (std_logic, OrCAD 9);


Рис.2. Наиболее широко используемые алфавиты моделирования

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

Простейшим является двоичный (булевский) алфавит {0, 1}. Так как в этом случае любой сигнал может принимать только два значения (лог.0 и лог.1), то смену логического уровня приходится считать мгновенной.

При троичном моделировании {0, 1, Х} переключающийся сигнал можно изобразить более реалистично, например 0Х1 или 1Х0. Такая запись означает, что при смене состояния элемента его выходной сигнал в течение некоторого времени (пока формировался фронт или спад) имел неопределенное значение.

Для моделирования шинных структур в алфавит допустимых значений сигналов вводится ещё одно Z-состояние, то есть состояние высокого импеданса на выходе, когда он фактически оторван от нагрузки.

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

­ или / или R (фронт) - переключение сигнала вверх;

¯ или \ или F (спад) - переключение сигнала вниз.

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

И совсем другое дело, когда при начальной инициализации схемы не удалось определить статическое значение тех или иных сигналов. В действительности сигнал имеет значение лог.0 или лог.1, но моделятор не сумел это выяснить. В такой ситуации сигналу присваивается значение U (Unknown) - неизвестное состояние.

В некоторых режимах работа цифрового устройства вообще не зависит от состояния какого-либо входа. Например, счётчик сбрасывается по входу RESET независимо от значений сигналов на других входах. Такие “безразличные” значения сигналов также удобно обозначать через U (в справочниках по интегральным микросхемам их обычно обозначают звёздочкой «*»).

При построении моделей логических элементов могут учитываться следующие свойства:

§  выполняемая функция;

§  задержка распространения сигнала;

§  нагрузочная способность;

§  пороги срабатывания;

§  длительность фронтов;

§  случайный разброс задержек;

§  температурные изменения параметров (например, временных задержек, уровней логического нуля и единицы и т. п.).

Заметим, что чем выше значимость алфавита моделирования и чем больше свойств учитывается в модели, тем больше ресурсов (процессорного времени и памяти) требуется для прогона модели.

По этой причине в современных системах моделирования число разрешённых значений цифрового сигнала обычно не превышает 6..7, а из возможных свойств, как правило, моделируется только функция, временная задержка и нагрузочная способность.

Булевские модели логических элементов работают с двоичным алфавитом {0, 1} и могут быть реализованы в виде логического уравнения, таблицы истинности или блок-схемы алгоритма (рис. 3).


Рис.3. Способы построения булевских моделей логических элементов

а) в виде логического уравнения, функции или процедуры;

б) табличное описание; в) блок-схема алгоритма

В булевских моделях не учитывается задержка, а переключение сигнала из одного состояния в другое считается мгновенным. Обычно булевские модели применяются только для синхронного моделирования без учёта задержек. На рис. 4 показаны основные особенности булевских моделей. В качестве примера взят логический элемент 2И.


Рис. 4. Двоичная аппроксимация реальных сигналов

При булевском моделировании время разбивается на такты (принцип Dt). Длительность такта выбирается так, чтобы в пределах одного такта ни один сигнал не переключился более одного раза. Реальное переключение переносится на начало того такта, в пределах которого оно произошло. Переключение считается мгновенным. Задержка распространения сигнала от входа B (или A) до выхода Y не моделируется, так как оба переключения переносятся на начало такта Т2 (или Т4) и становятся одновременными.

В реальной схеме из-за “перекрытия” фронтов сигналов А и В на выходе элемента 2И может появиться короткий импульс - риск сбоя (такт Т6). Булевские модели не в состоянии предсказать появление таких “иголок”, весьма опасных для работы цифровой аппаратуры.

Обычно один такт соответствует одному набору входных сигналов и обрабатывается за один цикл работы моделятора. С каждым циклом в счётчик модельного времени добавляется единица, то есть модельное время продвигается по тактам в соответствии с выражением: Т:=Т+1.

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


На рис. 5 показан фрагмент только что рассмотренной временной диаграммы (такт Т6), когда входные сигналы A и B элемента 2И переключались в противоположных направлениях.

Рис. 5. Троичное моделирование выявляет риск сбоя

При этом на выходе элемента появлялся риск сбоя. Такт Т6 (рис. 5,а) разбит на два полутакта, первый из них называется полутактом неопределенности, второй - полутактом определенности.

Значения выходного сигнала вычисляются на каждом полутакте в соответствии с таблицей истинности элемента 2И для трёхзначной логики (рис. 5,б).

Признаком риска сбоя служат одинаковые значения сигнала на соседних тактах и значение Х на полутакте неопределенности между ними (рис. 6).


Рис. 6. Признаки риска сбоя при троичном моделировании

Троичное моделирование отражает только сам факт переключения сигнала и не уточняет, сколько времени длилось переключение, и где именно в пределах такта оно происходило. Другими словами, длительность Х - состояния при троичном моделировании всегда равна полутакту и никак не связана с реальным временем переключения сигнала.

Многозначные модели позволяют более точно описать поведение реальных элементов, однако по сравнению с троичными моделями ничего принципиально нового они не содержат. На рис. 7 для сравнения показаны таблицы истинности элемента 2И при троичном и пятизначном моделировании.


Рис. 7. Таблицы истинности элемента 2И при троичном
и пятизначном моделировании

Модели логических элементов с учётом задержек

Эти модели в отличие от троичных имитируют задержки в явном виде. Чтобы отобразить задержку, надо указать истинное положение переключающегося сигнала на временной оси. Последнее означает, что надо повысить разрешающую способность по времени, то есть разделить такт на более мелкие единицы времени, называемые квантами (микротактами) или шагами. Например, в пакете PCAD такт называется CYCLE, а квант - STEP.

На рис.8 показано, каким образом достигается желаемая точность указания сигналов на временной оси.


Рис. 8. Представление сигналов в моделях разного типа:

а) булевская модель; б) троичная модель; в) модель с учётом tз;

При двоичном моделировании (рис.8,а) не удаётся указать истинное положение изменяющегося сигнала в пределах такта. Поэтому все переключения искусственно переносятся на начало такта и становятся одновременными. В таких условиях отразить реальную задержку невозможно.

При троичном моделировании (рис.8,б) мало, что меняется. Удаётся лишь показать, что при переключении сигнал некоторое время (а оно всегда равно полутакту неопределенности) имеет неизвестное значение Х. Задержка распространения по-прежнему не отражается.

В моделях с учётом tз в явном виде (рис.8,в) такт нарезается на кванты. Причем величина кванта должна составлять малую часть задержки, например 1ns. Цикл работы моделирующей программы теперь привязывается не к такту, а к кванту. Поэтому, чтобы смоделировать работу схемы в течение одного такта, моделятору придётся выполнить гораздо больший объём работы, а именно столько циклов, сколько квантов помещается на длине такта.

При аппроксимации реальных сигналов используется двоичный алфавит {0, 1}. Мгновенное переключение определяется порогом срабатывания логического элемента и привязывается к ближайшему кванту.

Теперь с точностью до кванта можно указать моменты истинных переключений на входах и выходах, а также вычислить целым числом квантов задержку распространения. Остается только смоделировать её.

Такая модель обычно содержит два блока (рис.9). Первый блок реализует функцию логического элемента без учёта задержек. Сигнал на его выходе Yс изменяется синхронно (одновременно) с входным сигналом. По понятным причинам этот блок называется логическим.


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

Рис.9. Возможная структура модели с учётом tз

Блок задержек содержит контейнер_1, в который на время реализации задержек «прячется» значение Yс (будущее значение сигнала на выходе элемента), и контейнер_2 для текущего значения сигнала Y. Кроме того, во втором блоке имеется счётчик задержки, включенный на вычитание.

В момент переключения входного сигнала (квант 17 на рис.8,в) вычисляется новое значение Yс = 0, которое появилось бы на выходе при отсутствии задержки (то есть синхронно с изменением сигнала на входе). Это значение “застревает” в контейнере_1 на время, равное задержке распространения сигнала внутри элемента (в примере на 4 кванта). В счётчик tЗ заносится величина этой задержки, которая в процессе моделирования уменьшается, пока “не растает” до нуля. После чего спрятанное в контейнере_1 новое значение переписывается в контейнер_2, то есть становится текущим и появляется на выходе Y=0 (квант 21 на рис.8,в).

Мы рассмотрели вариант, когда задержка моделируется внутри каждого логического элемента. Такое решение приводит к значительным затратам ресурсов инструментальной ЭВМ.

Другая возможность смоделировать реальную задержку заключается в том, чтобы спланировать новое событие на выходе и рассчитать момент его наступления tсоб по простому правилу:

tсоб=tтек + tз,

где:

tтек - текущее модельное время;

tз - задержка распространения сигнала в элементе.

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

Как видно, вся работа по имитации задержек перекладывается на моделятор, которому требуется только указать величину задержки относительно текущего модельного времени. Заметим, что округлять ее до целого числа квантов теперь совсем не обязательно.

На языке VHDL это делается весьма элегантно:

Y<= not A after 4,1ns;

На языке моделирования PML в пакете PCAD описание задержек также выглядит достаточно лаконично, правда, здесь допустимы только целочисленные значения задержек:

Y= ~A (3, 4, ”d”, ”d”);

Здесь цифры 3 и 4 указывают задержки при переключении выхода из 0 в 1 и в обратном направлении.