Знакомство с пакетом DesignLab 8 (PSpice). Урок 3. Как работать с постпроцессором моделирования

Знакомство

с пакетом 0е$1дп1аЬ 8

Урок 3.

Как работать с постпроцессором моделирования

Результаты моделирования, полученные программой PspiceAD, заносятся в файл данных, имеющий расширение DAT, например MUX2.DAT. Данные хранятся в двоичном формате и используются постпроцессором моделирования (программой Probe) для графического представления временных диаграмм входных и выходных сигналов исследуемой схемы.

Александр Шалагинов, к. т. н.

shalag@vt.cs.nstu.ru

Программа Probe (от англ. probe — щуп осциллографа) позволяет выводить на экран монитора и на печать не только одиночные, но и шинные сигналы. Кроме того, она может отображать как цифровые, так и аналоговые сигналы, выполнять их обработку, включая алгебраические, арифметические и логические операции.

На графики аналоговых сигналов можно наносить произвольные надписи, на цифровых графиках можно измерять временные задержки с помощью двух курсоров.

Цифровые и аналоговые сигналы помещаются в отдельных окнах и выводятся на одном экране с одинаковым масштабом по времени. Программа Probe не различает символы верхнего и нижнего регистров, кроме суффиксов m=10-3 и M=106.

Они используются для задания масштабов по осям координат, например по оси времени, а также могут применяться для указания значений частотных параметров. Легко представить себе, сколь сильным будет потрясение пользователя, который, задавая частоту генератора 10 МГц, забыл об этой особенности и ввел с клавиатуры 10 МГц (вместо 10 MHz), получив в итоге 0,01 Гц.

Поскольку объектами наших исследований являются цифровые схемы, то при знакомстве с постпроцессором моделирования мы ограничимся только работой с цифровыми сигналами. Напомним основные, наиболее часто используемые единицы времени: 1 ns = 10-9s; 1 us = 10-6s; 1 ms = 10-3s.

Программу Probe можно запустить несколькими способами. Первое, что приходит на ум, — это поискать ее в стартовом меню оболочки Windows. И действительно, вы обнаружите ее там, пройдя по цепочке: Пуск — Программы — DesignLab 8 — Accessories — Probe. Правда, одновременно с загруженной программой Probe вы увидите на панели за-

дач еще одну: MicroSim Design Manager — менеджер проекта. Это говорит о том, что ваши действия были не самыми рациональными.

Закроем оба приложения и запустим сначала программу Design Manager: Пуск — Программы — DesignLab 8 — Design Manager. В правой части окна (по умолчанию) вы увидите вертикально расположенную линейку пиктограмм Application Toolbar (рис. 3.1), на которую выведены команды запуска всех доступных для DesignLab 8 программ. Щелкнем на кнопке «Запуск программы Probe», и постпроцессор моделирования станет активным.

Запуск графического редактора Schematics

Запуск моделятора PspiceAD

Запуск графического редактора печатных плат PCBoards

Запуск синтезатора цифровых PLM-устройств

Запуск программы параметрической оптимизации Optimizer

Запуск генератора параметров моделей компонентов Parts

Запуск постпроцессора моделирования — программы Probe

Запуск графического редактора входных сигналов Stimulus Editor

Запуск встроенного текстового редактора TextEdit

Рис. 3.1. Пиктограммы для вызова программ пакета DesignLab 8 из менеджера проекта

Чаще всего нам требуется посмотреть результаты моделирования конкретной схемы, например, той, которую мы только что исследовали. Чтобы программа Probe вызывалась автоматически после завершения процедуры моделирования, необходимо в графическом редакторе Schematics (напомним, что он является еще и управляющей оболочкой) активизировать команду Analysis/Probe Setup... и установить режим ее автоматического запуска по окончании моделирования: Automatically run Probe after simulation.

Некоторые версии DesignLab не реагируют на эту установку. Тогда приходится запускать программу Probe из графического редактора командой Analysis/Run Probe (ей соответствует «горячая» клавиша [F12]) или из самого мо-делятора PSpiceAD командой File/Run Probe. Наконец, можно просто выбрать нужный файл и дважды щелкнуть на его имени. Кстати, эту операцию лучше всего проделать из окна программы Design Manager, выбрав нужную схему, а затем файл с ее результатами (рис. 3.2).

ных для наблюдения сигналов (Full List). Даже для простых схем он может оказаться весьма внушительным. Дело в том, что в нем перечислены не только основные цифровые сигналы, но и их алиасы, а также внутренние узлы иерархических компонентов.

Снимите флажки с управляющих элементов Alias Names и Subcircuit Nodes, и тогда список станет легко обозримым. Сократить список можно еще одним способом, вводя в левое верхнее окно групповое имя сигналов по шаблонам DOS, то есть добавляя к общей части имени символы «*» или «?». Например, если вы хотите найти в полном списке имена с префиксом D, наберите D*, и в окне останутся только имена, начинающиеся с этой буквы.

Чтобы перенести нужный сигнал в активное окно программы Probe, достаточно щелкнуть на его имени и убедиться, что оно оказалось в нижнем поле Trace Expression. Сюда можно поместить одно за другим сразу несколько сигналов, после чего нажать кнопку OK. Весь сформированный таким образом список будет перенесен в активное окно постпроцессора, и вы увидите нужные графики.

Рис. 3.2. Окно менеджера проекта при выборе файла с результатами моделирования MUX2

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

Рис. 3.3. Внешний вид окна постпроцессора моделирования Probe

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

Для цифровых схем многие из них не доступны для применения, и мы не станем их комментировать. Назовем только те, что могут вам пригодиться для работы.

Самая нужная пиктограмма — Add Trace (добавить график в активное окно). Ее графическое изображение показано справа. Щелкнув на ней мышью или набрав команду Trace/Add (или нажав горячую клавишу Insert), мы активизируем диалоговую панель с аналогичным названием (рис. 3.4). В левом окне панели приведен список всех доступ-

Êl

D1 и D0. Из сигналов A и Q сформируем вторую двухразрядную шину ^ Q}, а затем просуммируем их: ф1 D0}+{A Q}. Результаты наших экспериментов показывают, что постпроцессор умеет делать много полезных операций (рис. 3.5).

Если вы хотите присвоить шинам какие-нибудь имена, а для многоразрядных шин это просто необходимо, то после объявления шины нужно поставить символ «;» и затем назвать ее имя, например ф1 D0}; D_BUS (рис. 3.5).

Поэкспериментируем немного с этой программой. Для начала командой Trace/Delete All (или комбинацией клавиш [Ctrl+Del]) удалим из окна Probe все графики. Заметим, что из файла результатов моделирования они не стираются. Затем вызовем диалоговую панель Add Traces (рис. 3.4) и сформируем список сигналов для наблюдения: D0, D1, A, и Q. Убедимся, что они появились на экране в той же последовательности, что и при формировании списка.

Если вы хотите изменить порядок следования сигналов, например Q поставить перед D1, то придется вырезать график Q (пиктограмма «Ножницы»), выделить сигнал D1 и щелкнуть на пиктограмме «Вставить».

В правом окне диалоговой панели Add Traces приводится набор операций, которые можно выполнять над доступными постпроцессору переменными (сигналами). Введем в нижнее поле выражение: D0 & D1 и убедимся, что постпроцессор выполнил над указанными сигналами операцию логического умножения. Любопытства ради наберем еще одно логическое выражение: D0 & 'X.

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

jyj

Рис. 3.5. Простейшие эксперименты с постпроцессором моделирования

Вторая по важности пиктограмма, используемая при анализе цифровых схем, — это Toggle cursor. Она дублируется командой Tools/Cursor/Display и комбинацией клавиш [Ctrl+Shift+C]. Описанные команды вызывают на экран монитора два курсора-локатора, которые можно «привязать» к любому графику и перемещать их управляющими клавишами [стрелка вправо] и [стрелка влево] или «буксировать» мышью при нажатой левой или правой кнопке.

По графикам цифровых сигналов курсоры можно передвигать не плавно, а скачками, «опираясь» на события (transition — переключения). Для этих целей используются две пиктограммы:

I . Cursor Next Tran (Find next digital tran— I sition). Перемещение курсора на следующее переключение.

Cursor Prev Tran (Find previous digital

transition). Перемещение курсора на предыдущее переключение.

Для них имеются и соответствующие комбинации клавиш: [Shift+Ctrl+N] и [Shift+Ctrl+R]. Понятно, что в выпадающем меню можно отыскать и команды, выполняющие те же самые действия, но пользоваться ими крайне неудобно. Они называются: Tools/Cursor/Next Transition и Tools/Cursor/Previous Transition.

Поэкспериментируем немного с электронными курсорами в окне постпроцессора Probe, загруженного результатами моделирования мультиплексора MUX2 (рис. 3.3).

Вызвав на экран курсоры, мы обнаружим, что по умолчанию они «привязались» к верхнему графику с именем D0. Об этом говорит точечный прямоугольник, обрамляющий имя верхнего графика. На самом деле их два, но они имеют одинаковые размеры, наложены один на другой и поэтому неразличимы.

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

Чтобы увидеть первый курсор, нужно перевести указатель мыши в точку, куда вы хотите его поместить, и щелкнуть левой кнопкой мыши. Чтобы увидеть второй курсор, проделайте то же самое и щелкните правой кнопкой. Обратите внимание, что первый курсор отличается от второго большей плотностью точек. Теперь мы знаем, что первый курсор управляется левой кнопкой мыши, а второй — правой.

Курсоры можно перемещать и с помощью управляющих клавиш. При нажатой клавише [Ctrl] клавиши [стрелка вверх] и [стрелка вниз] передвигают первый курсор по именам сигналов, а при нажатых клавишах [Ctrl] и [Shift] те же клавиши управляют вторым курсором.

По горизонтальной оси первый курсор перемещается управляющими клавишами [стрелка вправо] и [стрелка влево], а для второго курсора для этого надо удерживать нажатой клавишу [Shift].

Иногда возникает необходимость поместить курсор в начало или конец графика. Для этих целей служат клавиши [Home] и [End].

При вызове курсоров в окне постпроцессора Probe появляется еще одно небольшое окошечко: Probe cursor, в котором отображаются текущие координаты обоих курсоров. Первый курсор называется A1, второй — A2. Погоняйте их управляющими клавишами, чтобы убедиться, что они показывают абсолютное время, отсчитываемое от начала моделирования. Удобнее всего это делать с помощью комбинаций клавиш: [Shift+Ctrl+N] и [Shift+Ctrl+R]. Заметим, что они перемещают курсор по тому графику, который был выделен последним.

Обратите внимание на третью строку dif=, показывающую разность между временными координатами курсоров A1 и A2. Этот инструмент удобен для измерения временных параметров, например длительности импульса или величины задержки (рис. 3.6). На этом рисунке показан результат измерения временной задержки от переключения входного сигнала D0 до выхода Q. Она составляет 29 нс. Чтобы величины задержек не получались отрицательными, курсор A1 должен находиться правее курсора A2.

зочарование: пустое окно, в котором нет ни одного графика. Конечно, можно снова ввести все необходимые временные диаграммы, но если их много, это занятие быстро надоедает.

Чтобы восстановить экран дисплея с результатами последнего эксперимента, есть хорошая команда Tools/Display Control... Выбрав ее, вы увидите диалоговую панель Save/Restore Display (рис. 3.7). Найдите в основном окне строку LAST SESSION[TRAN] (последний эксперимент), выделите ее мышью и щелкните на кнопке Restore (восстановить). На экране появятся результаты последнего сеанса работы с программой Probe.

Снова активизируйте команду Tools/Display Control... и введите в поле New Name имя этого эксперимента, например SESSION_1, после чего щелкните на кнопке Save. Текущая конфигурация экрана и его содержимое будут сохранены в файле с расширением PRB. Этот файл получит то же имя, что и файл данных. Для нашего примера он будет называться MUX2.PRB.

Добавьте к видимым на экране графикам еще один, например D0&D1, и вновь вызовите ту же самую панель. Сохраните новый экран под именем SESSION_2. Теперь у вас появилась возможность восстанавливать любой из них.

Описанная возможность особенно полезна, если экспериментов много и требуется сохранять все их результаты.

С помощью курсора A1 можно выполнить еще одну полезную операцию. Поместив его в любое место на временных диаграммах, легко выяснить текущие значения всех цифровых сигналов. Они высвечиваются немного правее списка имен сигналов. На том же рисунке видно, что курсор A1 считывает значения: D0=1, D1=1, A=0 и Q=1.

Если вы запустите постпроцессор Probe из менеджера проекта, то вас ждет небольшое ра-

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

Проведем простой эксперимент, показанный на рис. 3.8. Он тестирует работу библиотечного D-триггера. Данные поступают на вход триггера 7474 и записываются в него по переднему фронту сигнала С

Для надежной работы необходимо выставить данные заранее, не менее чем за 20 нс перед приходом сигнала С Этот параметр называется временем предустановки данных и в пакете DesignLab имеет потрясающее имя: tsudclkmn. Для триггера 7474 tsuddkmn=20 нс. Эту информацию можно найти в библиотечном файле 7400^1В, в описании динамической модели D_74 исследуемого триггера. Там же можно найти и другое ограничение, контролирующее минимальную длительность сигнала & twdkhmn=30 нс.

По умолчанию программа Probe не протоколирует действия пользователя. Однако можно включить этот режим командой File/Log Commands... На запрос процессора об имени Log-файла задайте имя MUX2, к которому будет добавлено расширение CMD. После этого все команды, которые вы введете, окажутся в файле протокола MUX2.CMD. Закончив работу с программой Probe, снимите активность команды File/Log Commands...

Созданный файл протокола является текстовым, так что его можно редактировать, удаляя ошибочные или просто лишние команды, а также включая в нужные места команду Pause. Чтобы выполнить файл протокола, достаточно активизировать команду Run Commands. и указать имя конкретного Log-файла, например MUX2.CMD.

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

Рис. 3.8. Проверка нарушений временных соотношений в работе D-триггера типа 7474

Сформируем временную диаграмму для этого эксперимента так, чтобы нарушить оба названных требования (рис. 3.9). С первым импульсом, поступающим на вход ^К триггера, все в порядке. А вот второй приходит преждевременно, всего через 10 нс после переключения входа данных (момент времени 100 нс), да и длительность его слишком мала — всего 20 нс.

Смоделируем данную схему на сформированном наборе входных сигналов. Обратите внимание, что уже в процессе работы моделя-тора PspiceAD появится предупреждающее сообщение, выделенное красным цветом:

2 Digital Simulation Warnings. А попытка запустить постпроцессор Probe приведет к появлению следующей панели (рис. 3.10).

Чтобы увидеть сообщения о нарушениях в схеме, нажмем кнопку Yes (Да). После этого

Рис. 3.10. Диалоговая панель, предупреждающая о двух нарушениях, обнаруженных в процессе моделирования

загрузится программа Probe с дополнительной диалоговой панелью (рис. 3.11), содержащей список сообщений о нарушениях временных соотношений:

110.000ns SETUP U1A 130.000ns WIDTH U1A.

Рис. 3.11. Сообщения об ошибках, обнаруженных в процессе моделирования

В первой строке сообщается, что в момент времени 110 нс для компонента схемы U1A нарушено время предустановки (SETUP), а во второй строке говорится о том, что в точке 130 нс обнаружен другой дефект — слишком малая ширина (WIDTH) импульса, поступающего на вход того же компонента U1A.

Об обнаруженных дефектах можно не только прочитать, но и увидеть их на экране. Для этого достаточно выделить желаемое сообщение и щелкнуть на кнопке Plot. В качестве примера выделим второе сообщение, информирующее о нарушении минимальной длительности импульса C, и, нажав кнопку Plot, вызовем этот фрагмент временной диаграммы на экран (рис. 3.12).

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

Обратите внимание программа подсказывает вам, куда надо поместить спад импульса C, чтобы устранить дефект.

В нижней части окна программы Probe приводится полная информация об обнаруженной ошибке. В частности, сообщается, что нарушение (Violation) зафиксировано в момент времени 130 нс на входе C компонента X_U1A.UFF1. Минимальное значение параметра TWCLKH = 30 нс, а измеренное (Measured) значение ширины импульса всего 20 нс.

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

Названия временных параметров для цифровых компонентов закодированы в пакете DesigLab 8 весьма изощренным способом. Во всяком случае, «с наскока» их не расшифруешь. Сейчас вы убедитесь в этом сами. Ниже приводятся названия временных параметров для только что рассмотренного D-триггера.

* Макромодель D-триггера 7474

*

.subckt 7474 1CLRBAR 1D 1CLK 1PREBAR 1Q 1QBAR

+ optional: DPWR=$G_DPWR DGND=$G_DGND

+ params: MNTYMXDLY=0 I0_LEVEL=0

UFF1 dff(1) DPWR DGND 1PREBAR 1CLRBAR 1CLK 1D 1Q 1QBAR

+ D_74 I0_STD MNTYMXDLY={MNTYMXDLY} I0_LEVEL={I0_LEV-

EL}

.ends

*

.model D_74 ueff (

+ twpclmn=30nstwclklmn=37ns

+ twclkhmn=30ns tsudclkmn=20ns

+ thdclkmn=5ns tppcqlhmx=25ns

+ tppcqhlmx=40ns tpclkqlhty=14ns

+ tpclkqlhmx=25ns tpclkqhlty=20ns

tpc1kqh1mx=40ns

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

1. twpclmn=30 ns — минимальная (mn) длительность (w) уровня лог.0 (l) на входе установки S (p) или сброса R (c); p — от слова PRESET — предустановка, c — от слова CLEAR — очистка; mn — от слова minimum, l — от слова low — низкий; w — от слова width — ширина;

2. twclklmn=37 ns — минимальная (mn) длительность (w) уровня лог. 0 (1) на входе CLOCK (clk);

3. twc1khmn=30 ns — минимальная (mn) длительность (w) уровня лог. 1 (h) на входе CLOCK (clk); h — от слова high — высокий;

4. tsudclkmn=20 ns — минимальное (mn) время предустановки (su) данных (d) на входах D/J/K перед переключением синхросигнала CLOCK (clk); su — от слова set up time — предустановка, d — от слова data — данные;

5. thdclkmn=5 ns — минимальное время (mn) удержания (h) данных (d) на входах D/J/K после переключения сигнала CLOCK (clk); h — от слова hold time — удержание;

6. tppcqlhmx=25 ns — максимальная (mx) задержка (tp) от входов S/R (p/c) до выходов Q/NQ (q) при переключении их из лог. 0 (l) в лог. 1 (h);

7. tppcqhlmx=40 ns — максимальная (mx) задержка (tp) от входов S/R (p/c) до выходов Q/NQ (q) при переключении их из лог. 1 (h) в лог. 0 (l);

8. tpclkqlhty=14 ns — типичная (ty) задержка от входа C/NC (clk) до выходов Q/NQ (q) при переключении их из лог. 0 (l) в лог. 1 (h);

9. tpclkqlhmx=25 ns — максимальная (mx) задержка от входа C/NC (clk) до выходов Q/NQ (q) при переключении их из лог. 0 (l) в лог. 1 (h);

10. tpclkqhlty=20 ns — типичная (ty) задержка от входа C/NC (clk) до выходов Q/NQ (q) при переключении их из лог. 1 (h) в лог. 0 (l);

11.tpclkqhlmx=40 ns — максимальная

+