ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

2
Publication date:
16 June 2024

Synthesis of burst-mode asynchronous schemes using Synopsys Design Compiler

UDC: 004.3
The article was published in issue no. № 4, 2014 [ pp. 24-30 ]
Abstract:The industrial needs in a robust computing systems increase the interest in asynchronous logic. The major reasons to use asynchronous design are the high robustness and wide operating temperature range of such schemes. The most significant counter argument is the long developing time as а result of the lack of asynchronous design automation tools (EDA). The burst mode schemes are the asynchronous schemes sub-class which is the easiest to build. The cross-coupled dual rail expansion method is the most popular to design the burst mode schemes and can use the synchronous schemes as an interim step of designing process. The synchronous scheme must perform the same function and can be obtained by a common synthesis way. The conversion from synchronous prototype to burst-mode scheme may use the templates, so it is easy to automate this process. We chose the Synopsys Design Compiler as one of EDA tools, which may provide synchronous synthesis and also use Tcl language for scripting. The whole burst mode synthesis workflow process consists of three major steps: synchronous synthesis from Verilog description, dual rail expansion and construction of complete detection sub-scheme. The last step is to optimize the load capability of the elements of the final scheme through the static timing analysis algorithms built into the DC tool. All the steps are processed by the one tcl script working in the DC shell, so overall process is fully automated. At this time the script has a limited functionality, an d can handle only one pipeline stage per run.
Аннотация:Потребности промышленности в высоконадежных вычислительных комплексах обусловили рост популярности асинхронной логики. Основными достоинствами асинхронных схем являются повышенная сбоеустойчивость и расширенный температурный диапазон эксплуатации. Среди недостатков следует отметить большую длительность проектирования вследствие отсутствия средств автоматизации проектирования асинхронных схем. Самосинхронные схемы являются наиболее простым для проектирования подклассом асинхронных схем. Для их создания чаще всего используется метод перекрестной реализации, который позволяет использовать синхронные схемы в качестве промежуточного этапа. Синхронная схема должна выполнять аналогичную функцию и может быть синтезирована обычным способом. Конвертация промежуточной синхронной схемы в самосинхронную может осуществляться с использованием шаблонов и поэтому легко автоматизируется. В качестве средства автоматизации выбрана система автоматизированного проектирования Synopsys Design Compiler (DC), которая используется для синтеза синхронных схем и может исполнять скрипты, написанные на языке Tcl. Весь процесс создания самосинхронной схемы делится на три этапа: предварительный синтез синхронной схемы из спецификации на языке Verilog HDL, конверсия в два канала и построение схемы индикации окончания переходных процессов. В завершение осуществляется оптимизация нагрузочной способности элементов схемы с использованием возможностей статического временного анализа DC. Все этапы проходятся под управлением одного скрипта, работающего в консоли DC, поэтому процесс полностью автоматизирован. В настоящий момент скрипт ограниченно функционален и может обработать только одну стадию конвейера за запуск.
Authors: Surkov A.V. (surkov@cs.niisi.ras.ru) - SRISA RAS, Moscow, Russia
Keywords: synopsys dc, CAD system, burst mode schemes, asynchronous schemes
Page views: 10586
Print version
Full issue in PDF (6.61Mb)
Download the cover in PDF (0.95Мб)

Font size:       Font:

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

 

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

В 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), который снижается пропорционально ослаблению требований по задержке предварительно синтезированной схемы.

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

Подытоживая, отметим, что использование скрипта позволило автоматически синтезировать самосинхронные схемы с помощью САПР Sy­nopsys Design Com­piler. Алгоритм работы основан на методе перекрестной реализации из синтезированной обычным способом схемы. Изначально САПР не может выполнять многие специфичные для самосинхронных схем операции. К примеру, синхронный синтезатор не умеет работать с логикой парафазного кодирования и не может автоматически осуществлять соответствующие оптимизации. Таким образом, расширить функциональность САПР возможно только за счет создания специальных дополнений в виде процедур на языке 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.


Permanent link:
http://swsys.ru/index.php?page=article&id=3893&lang=&lang=en&like=1
Print version
Full issue in PDF (6.61Mb)
Download the cover in PDF (0.95Мб)
The article was published in issue no. № 4, 2014 [ pp. 24-30 ]

Perhaps, you might be interested in the following articles of similar topics: