Асинхронные схемы – особый класс устройств, главным отличием которых от традиционных синхронных схем является работа без тактового генератора. Вместо внешнего тактирования в асинхронных схемах используются события изменения набора входных сигналов, инициирующих переключение элементов.
Большая часть современных систем автоматизированного проектирования (САПР) в своих расчетах принимает началом пути сигнала момент прихода тактового импульса на синхронизирующий вход триггера, а завершением – приход этого сигнала на вход данных следующего триггера. Подобное упрощение целесообразно, поскольку критерий длины пути сигнала в пределах периода такового импульса является основным условием работы синхронных схем. Отказ от принципа тактирования, как в случае асинхронных схем, делает невозможным использование классических алгоритмов статического временного анализа, основанных на концепции конечности распространения сигнала. Принято считать, что для асинхронных схем такие методы применяться не могут и требуется создание новых алгоритмов и новых САПР, позволяющих учитывать специфику работы без тактового импульса.
В 80-х годах прошлого века В.И. Варшавский в [1, 2] показал, что любая синхронная схема может быть преобразована в самосинхронную (burst mode). Сам процесс преобразования можно свести к формальным процедурам, включающим те же основополагающие принципы, что и при синтезе синхронных схем. Таким образом, возможно использование существующих САПР на отдельных участках маршрута проектирования самосинхронных схем. За рубежом делались попытки использования коммерческих САПР для синтеза са- мосинхронных схем [3, 4], но популярности не получили. В НИИСИ РАН разработана особая методика синтеза в САПР Synopsys Design Compiler (DC), позволяющая синтезировать отдельные участки самосинхронного конвейера на основе исходной спецификации в формате Verilog HDL.
Самосинхронные схемы представляют собой разновидность асинхронных автоматов и делятся на три подкласса: схемы, не зависящие от задержек в элементах, не зависящие от задержек в элементах и проводах, а также схемы с моделируемыми линиями задержек. Наибольший интерес представляют самосинхронные схемы, не зависящие от задержек в элементах, поскольку в них отсутствуют состязания, сравнительно невысокая площадь, а при соблюдении правила размещения элементов в пределах эквихронной зоны [2] достигается независимость от задержек в проводах. Существует несколько способов проектирования самосинхронных автоматов. В первую очередь это синтез автоматов на основе спецификации в виде сети Петри. Существует несколько программ, позволяющих делать автоматический синтез, из которых наиболее известна Petrify [5]. К сожалению, все эти программы имеют существенные ограничения на число вершин исходного графа, а также не содержат средств оптимизации. Поиск наилучшего варианта схемы проводится в ручном режиме. Как следствие, синтез из графовых спецификаций используется в основном для небольших машин состояний, но схемы получаются наиболее компактные и быстрые.
Альтернативная методика синтеза самосинхронных автоматов использует парафазное кодирование сигналов, введение спейсерного (разделительного) состояния и может применяться при создании конвейерных схем. Схема строится из двух частей: управляющего конвейера и операционной части. Управляющие конвейеры по степени наполнения делятся на три типа: плотный, полуплотный и неплотный. Существуют несколько универсальных схем управляющего конвейера, поэтому его проектирование в большинстве случаев не требуется, можно использовать готовый. Сложность представляет лишь синтез операционной части, выполняющей логическую функцию. Преобразование логической функции в парафазное представление образует две новые функции – прямую и инверсную, каждая из которых обладает свойством монотонности. Синтез прямой и инверсной функций сопровождается введением специальных индикаторов окончания переходных процессов. Совокупность синтезированных прямой и инверсной функций, индикации переходных процессов, элементов хранения и схемы управления формирует законченный сегмент самосинхронной схемы. Замыкая такие сегменты определенным образом, можно получить самосинхронный автомат. Описанный способ проектирования дает не самые компактные по площади и потреблению самосинхронные схемы, но позволяет получать быстрый результат практически без ограничений по сложности схемы. Полученные блоки удобно объединять с помощью синхростратума [6, 7] в более крупные самосинхронные блоки.
Метод перекрестной реализации оказался наиболее удобным для реализации в САПР Synopsys Design Compiler, поскольку может использовать результаты предварительного синтеза отдельных участков схемы. Конвертацию предварительно синтезированной синхронной комбинационной схемы в парафазное представление удобно делать с помощью шаблонов. Такую конвертацию по шаблонам будем называть перекрестным преобразованием. Все процедуры, включая предварительный синтез, перекрестное преобразование и построение схемы индикации, проводятся в САПР под управлением специально написанного скрипта на языке Tcl. В настоящий момент скрипт ограниченно функционален, так как обрабатывает только одну стадию конвейерной схемы, не строит схему управления и может работать только с ограниченным списком стандартных библиотечных элементов.
Предварительный синтез
На начальном этапе исходная схема разделяется на участки, соответствующие одной стадии конвейера. Таким образом, исходной спецификацией является синхронная комбинационная схема, написанная на языке Verilog HDL. Производится синтез схемы в САПР Synopsys DC с использованием ограниченного набора доступных библиотечных элементов и введением виртуального синхроимпульса. Разрешается использовать элементы И(НЕ), ИЛИ(НЕ) и инверторы. Другие элементы скрипт не поддерживает. Синтез можно производить итеративно, с промежуточным статическим временным анализом временных характеристик полученных вариантов схемы и коррекцией периода виртуального синхроимпульса для следующей итерации. Полученные итеративным синтезом схемы наиболее быстрые, но и самые большие по площади и потреблению. Если же максимальная производительность не требуется, синтез может проводиться с оптимизацией по площади или потреблению.
Перекрестное преобразование
В результате предварительного синтеза получается синхронная схема на базе элементов И(НЕ), ИЛИ(НЕ) и инверторов, которая выполняет требуемую логическую функцию. Дальнейшее преобразование использует метод перекрестной реализации и производится по шаблонам (рис. 1) путем замены всех сигналов на парафазные и раздвоения элементов, в результате чего образуются прямой и инверсный каналы. При этом получается, что сигналы прямого канала могут использоваться в инверсном и наоборот. В процессе преобразования каждый провод удваивается, инверторы заменяются на перекрестья проводов, элементы И-НЕ заменяются на пару И-НЕ и ИЛИ-НЕ и т.д. На рисунке 1 провода с индексом 1 являются частью прямого канала, а с индексом 0 – инверсного.
В тестовых целях скрипт поддерживает преобразование элементов, содержащих два каскада транзисторов, за исключением элементов с инверсией на выходе. Таким образом, если в библиотеке стандартных элементов есть однокаскадные (или двухкаскадные с инвертором) сложные элементы типа 2И-2ИЛИ-НЕ, 3ИЛИ-2И и т.д., их также можно использовать. Некоторые элементы типа исключающего ИЛИ и сумматоров могут быть преобразованы в однокаскадные элементы с парафазными входами и в таком виде использоваться, но это требует заказного проектирования. Остальные многокаскадные элементы использоваться не могут, поскольку в них невозможно контролировать переключение всех каскадов. Контроль за переключением каскадов в схеме необходим для индикации завершения всех переходных процессов.
Передача данных
В самосинхронных схемах передача данных происходит с использованием двух фаз – передачи данных и спейсера. Фаза спейсера нужна для подготовки схемы к принятию новых данных и придает канальным функциям свойство монотон- ности. Смена фаз осуществляется схемой управления, которая контролирует окончание всех переходных процессов в схеме в каждой из фаз. При парафазном кодировании состояния линий 01 и 10 являются информационными и появляются только в фазе данных, а состояния 00 и 11 называются спейсерными и появляются в фазе спейсера. Скрипт написан из расчета, что на входе и выходе схемы спейсер должен быть нулевым (00), в то время как внутри схемы может использоваться спейсер и из нулей, и из единиц. После пребразования схемы в прямой и инверсный каналы необходимо установить одинаковые спейсеры для каждой группы проводов, разделенных по принадлежности ярусам схемы. Если этого не сделать, в фазе спейсера на выходе схемы может не получиться состояние спейсера (рис. 2б). Исправления производятся вставкой парафазных буферов (рис. 1е), которые меняют спейсер парафазного сигнала, не нарушая логику схемы.
Алгоритм исправления спейсера следующий: для каждого элемента вычисляется номер яруса, в котором он расположен, а для выхода этого элемента вычисляется тип сейсера – нулевой или единичный. Далее у каждого элемента проверяется спейсер на входах и неверный спейсер исправляется вставкой буфера (рис. 2в).
Необходимо отметить, что инверторы исходной схемы исчезают в результате преобразования, а при исправлении спейсеров добавляются новые инверторы. Таким образом, результирующая схема (без индикации) имеет приблизительно вдвое большее число элементов по сравнению с исходной.
Оптимизация нагрузочной способности элементов
Исходная схема сбалансирована по мощности элементов на этапе синтеза, но после преобразования могут возникнуть большие паразитные емкости в проводах, ухудшающие характеристики схемы. Это связано с преобразованиями инверторов исходной схемы (рис. 1а), в результате чего может образоваться большой коэффициент ветвления по выходу у отдельных элементов. Другим примером увеличения емкости проводов может быть преобразование двухкаскадных элементов с инверсией в антитонные элементы (рис. 1г, д). В двухкаскадных элементах емкость входов определяется параметрами транзисторов первого каскада, а емкость выходов – транзисторами второго каскада, поэтому двухкаскадные элементы могут иметь высокую нагрузочную способность и очень малую входную емкость. При замене такого элемента на однокаскадный входные транзисторы вынужденно заменяются на более мощные, в результате чего емкость входов тоже увеличивается.
Подбор мощностей элементов вручную является сверхсложной задачей, поскольку современные библиотеки содержат векторное представление характеристик элементов, учитывающее целый ряд параметров. Использование САПР позволяет автоматически менять мощности элементов для оптимизации производительности (рис. 3а). Если подбором мощности добиться нужного эффекта не удалось, синтезатор автоматически исправляет высоконагруженные цепи вставкой дерева из инверторов, дробя нагруженный провод на меньшие сегменты (рис. 3б).
Деревья из инверторов нежелательны при проектировании самосинхронных схем, поскольку усложняют схему индикации. Бороться с вставкой инверторов можно либо их последующим удалением, либо заменой антитонных элементов на двухкаскадные элементы с инверсией и последующим исправлением спейсера в ярусах (рис. 3в). Замена осуществляется с помощью специальной процедуры в скрипте, поскольку САПР такие операции выполнять не может. Эксперименты с библиотекой TSMC 65нм показали, что подобная превентивная мера в большинстве случаев позволяет избежать последующей вставки дерева инверторов САПРом. Несмотря на очевидную задержку пути сигнала добавляемыми инверсиями на выходах элементов, по производительности результат зачастую получается даже лучше, чем при простой автоматической замене мощности элементов с помощью САПР. Это связано с задержками в проводах, сопоставимыми с задержкой транзистора при использовании технологий 65нм и ниже. Таким образом, применение скрипта позволило использовать возможности САПР по подбору мощностей элементов без внесения изменений в логику схемы и усложнения индикации.
Построение схемы индикации
После завершения работы над прямым и инверсным каналами скрипт переходит к заключительной части – построению схемы индикации, которая должна контролировать переключение каждого каскада каждого элемента в прямом и инверсном каналах. Схема индикации состоит из элементов индикации (индикаторов) и схем компреcсии. Используются элементы индикации двух видов: элемент 2И-НЕ для единичного спейсера (рис. 4а) и 2ИЛИ для нулевого (рис. 4б).
Специальная процедура в скрипте автоматически вставляет элементы индикации для каждого парафазного сигнала в зависимости от типа спейсера, а затем сортирует их по принадлежности к ярусам. Для каждого яруса строится своя схема компрессии (рис. 4в), к которой подключаются выходы индикаторов этого яруса. Схема компрессии написана в виде параметризованного модуля на языке Verilog HDL. Процедура автоматически рассчитывает число требуемых входов и вызывает модуль компрессии с нужными параметрами. После завершения подключения индикаторов выход схемы компрессии первого яруса подключается к входу схемы компрессии следующего яруса, и так далее по цепочке. Таким образом, выход схемы компрессии последнего яруса собирает в себе все индикаторы и может сигнализировать о завершении всех переходных процессов в текущей фазе.
В некоторых случаях индикаторы различных парафазных сигналов контролируют переключение одних и тех же элементов и схема индикации может быть упрощена. В частности, не требуется ставить индикатор на выход элемента, если он подключен к инвертору, – достаточно индикатора на выходе инвертора. Если элементы 2ИЛИ(НЕ) и 2И(НЕ) имеют общие входы, то для этих элементов установление спейсера на входах индицируется по выходу, то есть на входе нужно индицировать только установление данных. Существуют и другие случаи, когда индикацию можно упростить, но скрипт их не поддерживает. В общем случае полученная схема индикации больше или равна одному из каналов по числу транзисторов (рис. 4) в зависимости от размера схемы компрессии. Таким образом, результирующая схема содержит как минимум в 2,5 раза больше транзисторов, чем схема после предварительного синтеза.
Завершающая стадия – синтез схемы индикации. Ограничений на используемые элементы библиотеки в данном случае нет, и можно использовать все возможности САПР. Вначале произ- водится характеризация блока индикации, включающего в себя все индикаторы и схемы ком- прессии. Затем блок индикации выделяется и синтезируется отдельно. Исследования показали, что наилучший результат получается при удалении всей иерархии внутри блока перед синтезом.
Верификация и анализ полученной схемы
Современные средства моделирования не учитывают вариации таких параметров, как напряжение питания и температура во время теста. Для синхронных схем изменение условий эксплуатации, как правило, не влияет на работоспособность, поскольку все изменения в работе схемы маскируются тактовым импульсом, который выбирается с запасом. Для асинхронных схем любое малейшее отклонение условий работы немедленно сказывается на быстродействии, и проверяться таким моделированием они, строго говоря, не могут. Тем не менее, моделированием можно осуществлять функциональную верификацию без учета разброса параметров и временных характеристик схемы. Наиболее простая проверка получается в рамках принятых ограничений для работы скрипта: работа только с одной стадией конвейера, не содержащей элементов хранения (триггеров). Найденное решение позволяет сравнивать логическую функцию схемы до и после преобразования, а также получение спейсера на выходе схемы в фазе спейсера. На входы исходной и проверяемой схем подаются одинаковые логические наборы, стробированные тактовым импульсом с заведомо большим периодом, чем время окончания всех переходных процессов. Выходы схем затем сравниваются. При низком уровне тактового импульса самосинхронная схема находится в фазе спейсера, поэтому ее выходы проверяются на соответствие спейсеру. При высоком уровне тактового импульса самосинхронная схема находится в фазе данных, и состояния выходов содержат информацию, которую можно сравнить с выходами схемы до преобразования. Процент покрытия тестом логики схемы считается обычным для синхронных схем спо- собом. Функциональное моделирование прово- дилось в Cadence SimVision и оказалось замечательным инструментом для выявления ошибок во время создания скрипта. Проверка на самосинхронность полученных схем не проводилась.
Исследования работы скрипта
Для исследований выбран блок, отвечающий за обработку экспонент в модуле умножения с накоплением (FMA) с плавающей точкой и разрядностью 64 бита. Это сравнительно большой блок (около 2000 логических элементов), не содержащий триггеров. Ручной синтез самосинхронной схемы такого размера может занять несколько дней; САПР под управлением скрипта выполняет всю работу за 5–10 минут. В качестве исходной спецификации написана Verilog-модель, после чего проведен предварительный синтез для минимальной задержки схемы 0,33 нс, произведено перекрестное преобразование и построена схема индикации. Параметры полученной схемы приняты в качестве базовых для нормализации последующих результатов.
Для предварительно синтезированной схемы параметр минимальной задержки последовательно увеличивался с шагом 0,01 нс и проводилась оптимизация в САПР (кривая (а) на рис. 5). На каждой итерации осуществлялось преобразование в самосинхронную схему, измерялись задержка (кривая (б) на рис. 5) и площадь элементов (кривая (в) на рис. 5), все результаты нормировались по значениям первого шага итерации. Как видно из графиков, ухудшение скорости схемы на 20 % позволяет уменьшить площадь элементов всего на 10 % и дальнейшее уменьшение площади почти не происходит.
На каждой итерации предварительного синтеза сравнивались параметры схем до и после преобразований. Результаты показаны на двух совмещенных графиках (рис. 6). Ось ординат первого графика отражает коэффициент увеличения площади элементов самосинхронной схемы (кривая а) на рис. 6). В среднем площадь элементов увеличивается в 4 раза, при этом половина площади приходится на схему индикации. Ось ординат второго графика отражает коэффициент увеличения задержки схемы (кривая б) на рис. 6), который снижается пропорционально ослаблению требований по задержке предварительно синтезированной схемы.
Характеристики полученной самосинхронной схемы зависят от настроек предварительного синтеза в САПР. Схема индикации значительно увеличивает занимаемую площадь и всегда имеет задержку большую, чем у элементов логической схемы. Если исходная схема содержит малое число ярусов, то процесс индикации протекает в большей степени параллельно, имеет большую площадь и относительную задержку. При ослаблении ограничений задержки схемы на этапе предварительного синтеза число ярусов увеличивается, поэтому схема индикации становится проще, но результирующая задержка увеличивается. Таким образом, схема на первом шаге итерации обладает наилучшими показателями по скорости, а также самой большой площадью элементов. Исследования потребления энергии полученными схемами не проводились.
Подытоживая, отметим, что использование скрипта позволило автоматически синтезировать самосинхронные схемы с помощью САПР Synopsys Design Compiler. Алгоритм работы основан на методе перекрестной реализации из синтезированной обычным способом схемы. Изначально САПР не может выполнять многие специфичные для самосинхронных схем операции. К примеру, синхронный синтезатор не умеет работать с логикой парафазного кодирования и не может автоматически осуществлять соответствующие оптимизации. Таким образом, расширить функциональность САПР возможно только за счет создания специальных дополнений в виде процедур на языке tcl, являющихся составной частью скрипта. А использование заложенных в САПР алгоритмов статического временного анализа позволило задействовать такие полезные операции, как оптимизация схемы по скорости или по площади элементов. Таким образом, с учетом ограничений функциональности скрипта удалось автоматизировать весь маршрут синтеза для одной стадии самосинхронного конвейера.
К сожалению, результрующие схемы получаются громоздкими и медленными. Связано это прежде всего с отсутствием наиболее удобных для парафазного кодирования логических элементов, которые могут быть созданы только заказным проектированием.
Таким образом, дальнейшим развитием скрипта будет написание процедур для использования заказных элементов. Планируется расширить возможности скрипта для обработки более крупных сегментов схем.
Литература
1. Астановский А.Г., Варшавский В.И., Марахов- ский В.Б. [и др.]. Апериодические автоматы. М.: Наука, 1976. 424 с.
2. Варшавский В.И., Кишиневский М.А., Марахов- ский В.Б. [и др.]. Автоматное управление асинхронными процессами в ЭВМ и дискретных системах. М.: Наука, 1986. 400 с.
3. Kondratyev A., Lwin K. Design of Asynchronous Circuits Using Synchronous CAD Tools. IEEE Design & Test, 2002, vol. 19 (4), pp. 107–117.
4. Sokolov D. Automated synthesis of asynchronous circuits using direct mapping for control and data paths. Univ. of Newcastle upon Tyne Publ., 2006.
5. Khomenko V., Koutny M., Yakovlev A. Logic synthesis for asynchronous circuits based on Petri net unfoldings and incremental sat. Proc. Int. Conf. Application Concurrency System Design, 2004, pp. 16–25.
6. Мараховский В.Б., Мелехин В.Ф. Проектирование средств синхронизации блоков глобально асинхронных систем с произвольной локальной синхронизацией // Информационно-управляющие системы. 2010. № 1. С. 29–38.
7. Мараховский В.Б., Мелехин В.Ф. Проектирование глобально асинхронных систем с произвольной локальной синхронизацией // Информационно-управляющие системы. 2011. № 1. С. 41–49.
References
1. Astanovskiy A.G., Varshavskiy V.I., Marakhovskiy V.B. Aperiodicheskie avtomaty [Deadbeat automata]. Moscow,
Nauka Publ., 1976, 424 p.
2. Varshavskiy V.I., Kishinevskiy M.A., Marakhovskiy V.B. Self-Timed Control of Concurrent Processes: The Design
of Aperiodic Logical Circuits in Computers and Discrete Systems. Kluwer Academic Publ., Dordrecht, Netherlands, 1990,
p. 408.
3. Kondratyev A., Lwin K. Design of asynchronous circuits using synchronous CAD Tools. IEEE Design & Test. 2002,
vol. 19 (4), pp. 107–117.
4. Sokolov D. Automated synthesis of asynchronous circuits using direct mapping for control and data paths.
University of Newcastle upon Tyne Publ., 2006.
5. Khomenko V., Koutny M., Yakovlev A. Logic synthesis for asynchronous circuits based on Petri net unfoldings and
incremental sat. Proc. Int. Conf. Application Concurrency System Design. 2004, pp. 16–25.
6. Marakhovsky V.B., Melekhin V.F. Design of Module Synchronization Facilities in Globally Asynchronous
Multiprocessor Systems with Arbitrary Local Synchronization. Informatsionno-upravlyayushchie sistemy [Information and
Control Systems]. 2010, no. 1 (44), pp. 29–38.
7. Marakhovsky V.B., Melekhin V.F. Design of globally asynchronous systems with arbitrary local synchronization.
Informatsionno-upravlyayushchie sistemy [Information and Control Systems]. 2011, no. 1 (50), pp. 41–49.