Научная статья на тему 'Автоматизированный реинжиниринг цифровых устройств на основе HDL-СПЕЦИФИКАЦИй'

Автоматизированный реинжиниринг цифровых устройств на основе HDL-СПЕЦИФИКАЦИй Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
255
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЦИФРОВЫЕ УСТРОЙСТВА / ЯЗЫКИ ОПИСАНИЯ АППАРАТУРЫ / РЕИНЖИНИРИНГ / ПРОГРАММНЫЕ СРЕДСТВА / АВТОМАТИЗАЦИЯ ПРОЕКТИРОВАНИЯ / СТРУКТУРА / НЕТЛИСТ / ПРЕОБРАЗОВАНИЕ / АРХИТЕКТУРА / МОДЕЛИ / ПРОТОТИПЫ / HDL / HARDWARE DESCRIPTION LANGUAGE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Максименко Сергей Леонидович

Рассмотрен подход к реинжинирингу цифровых устройств, основанный на автоматизированных преобразованиях структурных HDL-спецификаций. Предложена модель для представления устройств и языковые средства управления преобразованиями, разработана архитектура расширяемого программного средства автоматизации реинжиниринга. Описан созданный прототип программного средства и рассмотрены вопросы его интеграции в маршрут проектирования устройства на базе СБИС ПЛ.I

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Максименко Сергей Леонидович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

n this paper we propose a method of digital devices reengineering based on automated transformations of HDL specifications. We provide an hierarchical device model and a language for transformation specification. An architecture of extendable automation tool was developed and implemented in a prototype. We describe the prototype structure and functionality and show a way of tool integration into existing design flow.

Текст научной работы на тему «Автоматизированный реинжиниринг цифровых устройств на основе HDL-СПЕЦИФИКАЦИй»

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

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

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

список литературы

1. Chen, M. Low-voltage low-power LVDS drivers [Text] / M. Chen, J. Silva-Martinez, M. Nix [et al.] // IEEE J. of Solid-State Circuits. -2005. -Vol. 40. -№ 2. -P. 472-479.

2. Michimasa Yamaguchi. LVDS driver circuit and driver circuit [Текст] / Yamaguchi Michimasa // Пат. 7038502 США, H03K 3/00 от 29.09.04.

3. Boni, A. LVDS I/O Interface for Gb/s-per-Pin Operation in 0.35-um CMOS [Text] / A. Boni, A. Pierazzi, D. Vecchi // IEEE J. of solid state circuits. -2001. -Vol. 36. -№ 4. -P. 706-711.

4. Kim, S. A 6-Gbps/pin half-duplex LVDS I/O for high-speed mobile DRAM [Text] / S. Kim, B. Kong, C. Lee // Asian Solid-State Circuits Conf. -Nov. 2005. -P. 53-56.

5. Chien-Chung, Chen. Low voltage differential

signaling transmitter and transmitting method [Text] / Chen Chien-Chung // Пат. 7579874 США, H03K 17/16 от 18.02.05.

6. Kim, Ju-Hyung. Pre emphasis apparatus, low voltage differential signaling transmitter including the same and pre emphasis method [Text] / Ju-Hyung Kim, Yongin-si // Пат. 7586330 США, H03K 19/0175 от 11.08.06.

7. Балтруков, Н.Н. Передатчик дифференциальных сигналов стандарта LVDS [Текст] / Н.Н. Балтруков, Ю.И. Лыпарь, А.Н. Скворцов // Пат. 107430 Россия, H03K 17/04 от 21.02.11.

8. LVDS owner's manual, Low voltage Differential Signalling [Электронный ресурс] / 3 ed. National Semiconductors, 2004 // Режим доступа: http://www.ece. unh.edu/courses/ece711/ refrense_material/ownersmanual. pdf

УДК 004.3, 004.436.2

С.Л. Максименко

АВТОМАТИЗИРОВАННЫЙ РЕИНЖИНИРИНГ ЦИФРОВЫХ УСТРОЙСТВ

НА ОСНОВЕ HDL-СПЕЦИФИКАЦИй

Постановка задачи создания средств реинжиниринга

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

Как правило, повторно используемый код представляется в виде набора компонентов (1Р-ядер), реализующих отдельные функциональные преобразователи либо целые узлы и устройства вычислительной системы, такие, как процессорные ядра, контроллеры ввода-вывода и т. п.

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

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

Вместе с тем актуальной является задача модификации компонентов системы без изменения их основной функциональности. Наиболее очевидны преобразования, цель которых - повышение надежности системы:

внесение структурной избыточности (резервирование элементов) на различных уровнях иерархии;

замена компонентов отказоустойчивыми аналогами;

встраивание средств самотестирования, самодиагностики и восстановления после сбоев.

Можно выделить и преобразования, направленные на увеличение производительности:

автоматизированная конвейеризация вычислений;

замена элементов структур платформенно-оптимизированными аналогами.

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

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

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

выбор оптимальной декомпозиции при структурном резервировании, выбор оптимального уровня резервирования;

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

В настоящее время существует ряд программных средств, решающих отдельные «фрагменты» поставленной задачи. Данные средства можно разделить на два типа. Средства первого [1, 2] типа обычно ориентированы на преобразование языковых конструкций, решая в первую очередь задачи рефакторинга исходного кода. Однако в работе [6] описано средство, решающее задачи реинжиниринга на уровне модификации элементов VHDL-описания RTL-уровня, позволяющее за-

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

Средства второго типа [3-5] оперируют элементами структуры устройства после выполнения логического синтеза, решая задачи, входящие в состав перечисленных. Так, Xilinx TMRTool [3] выполняет замену триггеров в устройстве на структуры из трех триггеров с обратными связями, устойчивые к отказам типа SEU и SET. Mentor Graphics Precision Rad-Tolerant [4] предлагает средства троирования элементов и отказоустойчивого кодирования конечных автоматов. Некоторая попытка извлечения структурной модели из нетлистов сделана в работе [5], хотя информация об ее успешном завершении отсутствует.

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

Разработка методики реинжиниринга

Разработка методики и инструментальных средств автоматизированного реинжиниринга включает следующие задачи.

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

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

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

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

Необходимым условием успешного применения средств автоматизации реинжиниринга является то, что они должны использоваться в рамках маршрута проектирования имеющихся САПР, т. е. совместно с существующими средствами логического синтеза, разводки, анализа и моделирования. Для того чтобы выполнить условие, необходимо проанализировать информационные потоки в САПР и определить, на каком этапе лучше всего выполнять преобразования.

Современные языки описания аппаратуры (VHDL, Verilog, SystemC) позволяют в рамках описания одного модуля сочетать структурное и поведенческое описание. При структурном описании разработчик явно указывает используемые компоненты и связи между ними. При поведенческом описании САПР сама синтезирует структуру, реализующую указанное поведение. При этом порождаемая структура зависит от заложенных в САПР алгоритмов и ее настроек. Настоящее исследование предполагает преобразование структур с сохранением поведения, поэтому поведенческое описание само по себе непригодно для рассматриваемых методов реинжиниринга. Следует сделать оговорку: по поведенческому описанию можно построить структурное, что и делают САПР в ходе логического синтеза, но данная операция слишком сложна, чтобы ее рассматривать в рамках данного исследования.

Учитывая сказанное выше, ограничимся обработкой чисто структурных описаний. Проблема общности подхода решается просто: все основные САПР имеют возможность экспорта результата логического синтеза в виде «нетлиста», т. е. файла, содержащего структурное описание устройства на уровне элементарных преобразователей (логических элементов). Более того, нетлист может порождаться на том же языке (VHDL), что и исходное описание, с сохранением иерархии компонентов.

На рис. 1 представлена схема взаимодействия средств реинжиниринга с системой проектирования на СБИС ПЛ Quartus II фирмы Altera. Из схемы видно, что средства реинжиниринга встраиваются в цепочку инструментов Quartus следующим образом. Сначала из исходного описания устройства порождается VHDL-нетлист. Далее выполняются преобразования, возможно, с использованием библиотеки дополнительных компонентов, включающей, например, модули тестирования, мониторинга, исправления ошибок. Преобразованный VHDL-код повторно подается на вход VHDL-компилятора, при этом может выполняться логический синтез новых компонентов. Результаты компиляции используются «штатным» образом: выполняется размещение элементов на кристалле, трассировка, извлечение временной модели и необходимый анализ.

Предлагаемая схема разомкнута. Она не предполагает использования кодов, полученных в результате реинжиниринга, разработчиками для дальнейшего развития. Данный выбор сделан по следующей причине: решение перечисленных задач реинжиниринга, в первую очередь, встраивание средств тестирования или повышения отказоустойчивости, значительно усложняет структуру устройства, что затрудняет его развитие и сопровождение. Предположим, что разработка и отладка устройства ведется независимо с использованием непреобразованных кодов, а применение автоматизированного реинжиниринга выполняется при каждой «сборке» проекта. Пример применения такого подхода - встраиваемый логический анализатор SignalTap из набора средств отладки пакета Quatrus II фирмы Altera. Разработчик оперирует исходным проектом, но при необходимости наблюдения за некоторыми сигналами в реальной микросхеме в проект прозрачно для него в ходе компиляции добавляются необходимые средства сбора информации.

Логический синтез

Логический

синтез, размещение, извлечение временнной модели

Рис. 1. Схема совместной работы программы и среды Quartus II

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

Генерация структуры. На этом шаге с помощью существующих САПР из исходного проекта порождается структурное VHDL-описание с той или иной степенью выполнения логического синтеза. Это не обязательно сеть библиотечных примитивов в заданном элементном базисе. Главное требование - явное выделение всех компонентов и связей между ними. Состав компонентов может определять доступные преобразования.

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

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

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

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

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

Исходный проект

Генерация структуры (и логический синтез)

УНЮЬнетлист

Ьиолиотека Дополнительных модулей

Синтаксический разбор и упрощение

Упрощенное синтаксическое дерево

Извлечение иерархической структуры

Интерпретация сценариев

Средства реинжиниринга

Ссылки на описания

Синтаксический разбор и упрощение

Библиотека компонентов

^Ссылки

Дерево структуры проекта

Рабочая модель

Библиотеки преобразований

Упрощенное синтаксическое дерево

Извлечение компонентов без анализа структуры

Генерация УНйЬкода

Сценарии преобразований

Синтез и анализ в САПР

Преобразованный УНЮЬкод

Рис. 2. Методика автоматизированного реинжиниринга

Данный подход позволяет получить на выходе HDL-описание, максимально приближенное к исходному.

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

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

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

Генерация и последующая обработка VHDL-кода. Данная процедура достаточно проста и заключается в генерации для каждого компонента и связи в модели соответствующей языковой конструкции. Последующая обработка включает те же шаги, которые выполнялись бы над исходным проектом до преобразования: логический синтез, размещение на кристалле, извлечение временных и других характеристик, формирование файлов для программирования СБИС ПЛ или изготовления БМК.

Структура модели

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

синтаксическое дерево для упрощения последующей генерации HDL-кода.

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

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

Устройство может содержать множество одинаковых компонентов. Имеет смысл ввести понятие «тип компонента». Все компоненты одного типа имеют одинаковый набор портов и одинаковую структуру. Введение типов не только позволяет сделать представление устройства более компактным, но и позволяет при реинжиниринге учитывать свойства данного типа, явно не заданные структурой: функциональные свойства, параметры надежности, быстродействия и т. п. Более того, типичные задачи реинжиниринга требуют выполнения одних и тех же преобразований над всеми экземплярами компонента одного типа. Примером может служить замена элемента памяти отказоустойчивым аналогом. Если требуется над некоторым экземпляром данного типа выполнить особое преобразование, для него необходимо завести новый тип, «клонировав» существующий.

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

Средство реинжиниринга

Рис. 3. Архитектура средства реинжиниринга

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

Существует три причины использования таких компонентов. Во-первых, они могут неявно порождаться существующими САПР при логическом синтезе. Это происходит, когда в нетлисте присутствуют логические операции над сигналами. Во-вторых, подобные компоненты удобно порождать для решения некоторых задач реинжиниринга, например, объединять по «ИЛИ» сигналы об ошибке, выработанные элементами голосования. Форма представления поведения неважна для данной модели, главное, чтобы по этому представлению можно было сгенерировать синтезируемое HDL-описание. И, в-третьих, для оперирования составными типами иногда удобно использовать компонент с единственным портом данного типа, реализующий понятие signal в VHDL.

Инструментальные средства реинжиниринга

Для практического применения предложенной методики реинжиниринга в настоящее время ведется разработка программных средств. Основные идеи опробованы на макете, в основу которого лег VHDL-парсер собственной разработки. Схема интеграции макета в цикл разработки представлена на рис. 1. Основными требованиями к архитектуре разрабатываемого программного средства (рис. 3) стали открытость и расширяемость. Изначально закладывается возможность работы с VHDL-нетлистами и генерация VHDL-кода. Тем

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

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

Управление средством реинжиниринга ведется посредством интерпретации набора команд, состав которых определяется набором подключенных библиотек. Данное решение позволяет выполнять цикл преобразований в «пакетном» режиме и прозрачно интегрировать средства реинжиниринга в цикл проектирования существующих САПР.

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

список литературы

1. The DMS Software Reengineering Toolkit [Электронный ресурс] / Режим доступа: http://www.semde-signs.com/Products/DMS/DMSToolkit.html

2. Sigasi HDT [Электронный ресурс] / Режим доступа: http://www.sigisi.com

3. Xilinx TMRTool [Электронный ресурс] / Режим доступа: http ://www. xilinx .com/ise/optional_prod/tmr-tool.htm

4. Mentor Graphics Precision Rad-Tolerant [Электронный ресурс] / Режим доступа: http://www.mentor. com/precision

5. Bhaduri, Debayan. An Automated Reliability Enhancement Tool for Defect-Tolerance [Электронный ресурс] / Debayan Bhaduri, Deepak A. Mathaikutty, Sandeep Shukla // Technical Report № 2004-16. -Режим доступа: http://fermat.ece.vt.edu/Publications/pubs/techrep

6. Berrojo, L. An industrial environment for high-level fault-tolerant structures insertion and validation [Text] / L. Berrojo, F.Corno, L.Entrena [et al.] // VLSI Test Symp. (VTS 2002). Proc. 20th IEEE. -2002. -P. 229-236.

УДК 681.514

Н.И. Беляева, А.Д. Курмашев

исследование контурных режимов двухкоординатных систем воспроизведения программного движения

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

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

В данной статье изучается синтез базового алгоритма согласованного управления электроприводами степеней подвижности двухкоорди-натной системы воспроизведения программных траекторий (СВПД), построение модели СВПД

в программном пакете МаЛаЬ и исследование ее контурных режимов.

Синтез базового алгоритма управления двух-координатной системой осуществляется при следующих условиях: воспроизводится плоская траектория - окружность радиуса Я с постоянной скоростью Ук. Объект управления системы - два идентичных ортогональных привода координат х и у. Уравнение движения по каждой координате имеет вид:

L(*) = T

2 d!Ç)++d(*) dt dt dt

(1)

где (*) - это х или у, что соответствует математическому описанию разомкнутого по положению следящего привода координаты с математической моделью контура скорости, динамика которого аппроксимирована колебательным звеном. Тогда математическая модель двухкоординатной СВПД примет вид:

ГД х) = их, [Ц у) = и у,

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

На основании метода функционального регулирования, разработанного В.М. Бойчуком [1], получены базовые алгоритмы управления СВПД следующего вида:

(2)

i Надоели баннеры? Вы всегда можете отключить рекламу.