ПОИСК Статьи Чертежи Таблицы Начальный этап проектирования. Логическое моделирование из "Проектирование на ПЛИС архитектура, средства и методы " Неудивительно, что процесс разработки систем вручную, который рассматривался выше, был трудоемким и способствовал возникновению ошибок. В связи с этим необходимо было предпринять какие-то меры, и многие компании и университеты начали активно работать в различных направлениях. Так, например, для проведения функциональной верификации в конце 60-х — начале 70-х годов появились специальные программы в виде элементарных систем логического моделирования. [c.121] Чтобы понять принцип действия такой системы, представим, что в нашем распоряжении находится n o Tot устройство на логических вентилях, принципиальная схема которого выполнена вручную на листе бумаги (Рис. 8.1). [c.121] Существовала также возможность каждому вентилю сопоставить некоторую задержку распространения сигнала. Эти задержки, в примере они опущены для простоты изложения, обычно представлялись в виде чисел, кратных некоторой единице времени системы моделирования (см. гл. 19). [c.121] Первые системы логического моделирования содержали в себе описания только примитивных вентилей, таких как И, И-НЕ, ИЛИ, ИЛИ-НЕ и др. Такие инструменты назывались простейшими системами моделирования. Позже некоторые системы стали поддерживать описания более сложных логических функций, таких как D-триггеры. В этом случае функция G4 = DFF, представленная на Рис. 8.2, реализуется с помощью собственного внутреннего описания. [c.122] На следующем этапе пользователи создавали набор тестовых векторов, или задаюи их или внешних воздействий (stimulus), в виде наборов значений логических О и 1, которые предназначались для подачи на входы схемы. Эти тестовые векторы в текстовой форме и обычно представляли собой таблицу, (Рис. 8.3), причем любая информация после символа воспринималась как комментарий. [c.122] При описании задающего воздействия в левой колонке указывалось его время действия. Для экономии места названия входных сигналов указывались вертикально. [c.122] В современной терминологии файл с тестовыми векторами, показанный на Рис. 8.3, представляет собой упрощенный тестовый стенд. Ещё раз повторюсь значения времени обычно представлялись в виде чисел, кратных некоторой единице времени в системе моделирования. [c.122] После этого инженеры запускали систему логического моделирования, которая считывала таблицу соединений вентилей и строила виртуальное представление принципиальной схемы в памяти компьютера. Затем система моделирования считывала первый тестовый вектор (первую строку из файла внешних воздействий), выставляла заданные значения на виртуальных входах и транслировала их через схему. Подобным образом процедура повторялась для каждого последующего тестового вектора, и, таким образом, формировалась работа тестового стенда (Рис. 8.4). [c.123] Представим себе, что совершаем путешествие в прошлое и там запускаем одну из старых систем моделирования, используя описания схемы, изображённые на Рис. 8.1 и 8.2 вместе с воздействиями, показанными на Рис. 8.3. Допустим, что инвертирующему логическому вентилю соответствует задержка сигнала величиной в пять временных единиц системы моделирования. Это значит, что после подачи сигнала на вход этого логического элемента, соответствующее ему значение на выходе появиться только через пять отсчётов времени. Аналогично, допустим, что логические элементы И-НЕ и ИЛИ имеют задержку в 10 временных единиц, а D-триггер задерживает сигнал на 20 отсчётов. [c.124] Если система моделирования была настроена на мониторинг всех внутренних узлов и выходных сигналов, выходной файл будет содержать результаты моделирования в виде, как показано на Рис. 8.5. [c.124] Для улучшения восприятия нашего примера все изменения значений сигналов на рисунке выделены жирным шрифтом, хотя на практике этот прием не применялся. [c.124] В момент времени 500 по фронту синхроимпульса на входе LO K D-триггер загружает значение, находящееся в этот момент на внутреннем узле N DATA. Спустя 20 временных единиц это значение появляется на выходах Q и N Q триггера. И так далее. [c.125] Пустые строки в выходном файле, такие как между записями, соответствующие значениям времени 10 и 500, используются для обозначения родственных групп действий. Например, установка начальных значений в момент времени О является причиной изменения сигналов в моменты времени 5 и 10. Затем фронт синхроимпульса на входе LO K в момент времени 500 вызывает изменение сигналов при достижении временной отметки 520. Так как эти две группы действий абсолютно не зависят друг от друга, то они разделяются пустой строкой. [c.125] Всё вышесказанное происходило незадолго до того, как инженеры начали работать со схемами, содержащими тысячи вентилей и узлов, моделирование которых проводилось на протяжении нескольких тысяч временных шагов (тактов). Да, я часами просиживал, анализируя файлы, подобные только что рассмотренным, пытаясь понять, работает ли система так, как ей положено, и отчаянно пытаясь найти ошибку, если что-то было не так. [c.125] Вернуться к основной статье