Научная статья
УДК 519.168:519.857:621.3.049.771.14 doi: 10.24151/1561-5405-2024-29-6-792-804 EDN: EHPCSZ
Алгоритм динамического программирования для оптимизации дерева буферизации по числу буферов и инверторов
К. К. Малинаускас
Национальный исследовательский университет «МИЭТ», г. Москва, Россия
Аннотация. Вставка буферных элементов в цифровых схемах необходима для контроля задержек в межсоединениях, которые играют доминирующую роль в производительности современных субмикронных СБИС. Синтез деревьев буферизации и их укладка на кристалле осложнены дефицитом свободного места после размещения основных логических вентилей, а также ограничениями потребляемой мощности. Использование инверторов в качестве буферных элементов, как правило, более эффективно с точки зрения площади, потребляемой мощности и временных характеристик. Однако необходимо соблюдать четность инверторов в дереве на пути до любого приемника для сохранения логики работы схемы. Для этого применяются различные эвристические методы, комбинирующие использование инверторов и буферов, но оптимальность получаемых решений исследована недостаточно. В работе представлен алгоритм для оптимизации заданного буферного дерева, основанный на динамическом программировании и заменяющий максимально возможное число буферов на инверторы. Алгоритм имеет линейную временную и пространственную сложности и достаточно прост в реализации. Проведен статистический анализ эффективности найденных оптимальных решений в сравнении с результатами известной простой эвристики. Установлено, что наибольшая эффективность достигается в случаях, когда конечные приемники сигнала подключены только к листьям буферного дерева: доля буферов снижается в среднем в 1,7 раза, максимум - примерно в 3 раза по сравнению с эвристическим решением.
Ключевые слова: буферизация соединений СБИС, буферное дерево, методы оптимизации, динамическое программирование, алгоритмы
Для цитирования: Малинаускас К. К. Алгоритм динамического программирования для оптимизации дерева буферизации по числу буферов и инверторов // Изв. вузов. Электроника. 2024. Т. 29. № 6. С. 792-804. https://doi.org/10.24151/1561-5405-2024-29-6-792-804. - EDN: EHPCSZ.
© К. К. Малинаускас, 2024
Original article
A dynamic programming algorithm for the buffering tree optimization by the number of buffers and inverters
K. K. Malinauskas
National Research University of Electronic Technology, Moscow, Russia [email protected]
Abstract. Repeater elements insertion (buffering) in digital circuits is necessary to control interconnect delays, which play a dominant role in the timing closure of deep submicron VLSI designs. The buffering tree synthesis and packing are complicated by the lack of free space after the main logic placement is done, as well as by the power constraints. Using inverters instead of buffer elements is generally more efficient in terms of area, power consumption and timing characteristics. However, it is necessary to maintain the inverters parity in a path to any receiver in the tree to preserve the circuit operation logic. For this purpose, various heuristic methods are applied combining the use of inverters and buffers, but the optimality of the resulting solutions has not been sufficiently studied. In this work, a buffer tree optimization algorithm based on dynamic programming and replacing the maximum possible number of buffers with inverters is presented. The algorithm has linear time and space complexities and is quite simple to implement. A statistical analysis of the efficiency of computed optimal solutions in comparison with the results of well-known simple heuristics was performed. It has been established that the best results are achieved in the cases with only tree leaf repeaters driving final receivers: the share of buffers is reduced by an average of 1.7 times, with a maximum of 3 times, compared to the heuristic solution.
Keywords: VLSI interconnect buffering, buffering tree, repeater tree optimization, dynamic programming, algorithms
For citation: Malinauskas K. K. A dynamic programming algorithm for the buffering tree optimization by the number of buffers and inverters. Proc. Univ. Electronics, 2024, vol. 29, no. 6, pp. 792-804. https://doi.org/10.24151/1561-5405-2024-29-6-792-804. -EDN: EHPCSZ.
Введение. С уменьшением технологических размеров элементов современных СБИС задержки в соединениях становятся все более критичными [1, 2]. Одно из решений, используемых в проектировании, - вставка специальных буферных элементов, не меняющих логику работы схемы, в точки разрыва соединений.
В настоящей работе рассматривается оптимальный выбор типов элементов (инвертирующих или неинвертирующих) в заданном буферном дереве. В качестве неинверти-рующих элементов используется минимальное число буферов или парных инверторов. Предлагается эффективный алгоритм оптимизации на основе динамического программирования, имеющий линейную вычислительную сложность. Выполняется статистический анализ эффективности оптимальных решений в сравнении с простой эвристической оптимизацией, разрешающей использование буферов только в терминальных узлах дерева. Без ограничения общности рассматриваются только сигнальные цепи (не цепи синхронизации), требующие относительно небольшого числа буферных элементов (до 20) и положительных полярностей сигналов на всех приемниках.
Буферизация. Буферизация цепей необходима для контроля максимальной нагрузки на выходах логических вентилей и уменьшения негативного эффекта паразитных параметров длинных проводников, а следовательно, для уменьшения задержек цифрового сигнала в межсоединениях и улучшения форм фронтов переключения (рис. 1).
Рис. 1. Временные характеристики цифрового сигнала: задержка передачи и длительность (наклон фронта) переключения Fig. 1. Digital signal timing characteristics: propagation delay and transition delay (slope, slew)
Буферизация проводится для больших цепей, таких как цепи синхронизации [3], а также для критических сигнальных цепей в соответствии с оценками их временных характеристик [4]. Одновременно следует соблюдать ограничения доступной свободной площади на кристалле и потребляемой мощности. Новые буферные элементы и их соединения образуют деревья (рис. 2). При этом используются новые элементы двух типов: буферы, или логические повторители, и инвертирующие буферы, или логические инверторы. Последние, как правило, более эффективны по площади и мощности и по скорости передачи сигналов [4]. Однако при использовании инверторов полярности сигналов в различных ветвях дерева могут быть разными (см. рис. 2).
Рис. 2. Буферизация цепи Fig. 2. The net buffering
Для соблюдения требуемых полярностей у каждого приемника необходимо выдержать четность числа инверторов на пути от источника. Одним из подходов является синтез дерева из одних только инверторов с последующей заменой некоторых элементов на буферы (или вставкой дополнительных инверторов) для исправления полярностей на отдельных приемниках. Для этого применяются различные эвристические подходы, но вопросу оптимальности получаемых решений уделяется недостаточно внимания. В работе [3] рассматривается простая эвристика, вставляющая дополнительные инверторы у приемников, где полярность нарушена. Для того чтобы таких приемников всегда было не более половины, сначала может быть вставлен дополнительный инвертор у источника (корня дерева). Далее предлагается эвристика для уменьшения количества необходимых дополнительных инверторов путем их объединения около узлов дерева - общих предшественников терминальных узлов с нарушенной полярностью. В работе [4] описывается другая эвристика для вставки дополнительных инверторов одновременно с построением всего дерева. Тривиальным и самым затратным решением по площади логических вентилей является использование в дереве всех буферов (или парных инверторов) [5]. Будем буферные деревья представлять ориентированными графами. На рис. 3 показана их визуализация с помощью программного средства ОгарЬу12 [6]. Как видно, в зависимости от выбранной эвристики количество неинвертирующих буферов (или дополнительных инверторов) может быть разным.
Рис. 3. Реализации буферного дерева с положительной полярностью на всех приемниках: a - тривиальный вариант (все буферы); б - простая оптимизация (все инверторы, кроме буферов у отдельных
приемников); в - случайное решение с соблюдением полярностей; г - оптимальное решение Fig. 3. Repeater tree implementations with all sinks having positive polarity: a - trivial solution (all buffers); b - simple optimization (all inverters but some terminal buffers); c - random solution with correct sink
polarities; d - optimal solution
Постановка задачи. Введем следующие обозначения: T = {1,...,n} - множество узлов буферного дерева (буферов) с корнем r gT, соединенным непосредственно с источником сигнала; т ^ T - подмножество терминальных узлов, соединенных непосредственно с приемниками сигнала. Будем требовать положительную полярность на выходах всех терминальных узлов. Для простоты буферное дерево (граф) также будем обозначать T. Отметим, что для одной цепи таких деревьев может быть несколько (см. рис. 2) и они могут быть оптимизированы независимо.
Введем булевы переменные решения: х = (х,..., хп) , где для каждого узла i выбор х{ = 0 будет означать выбор инвертора, xi = 1 - выбор (неинвертирующего) буфера. Тогда F(х) = х1 +... + хп - стоимость реализации дерева, равная общему числу буферов. Полярность на выходе каждого узла j обозначим как функцию p (х), принимающую значение 0 для положительной полярности, 1 - для отрицательной полярности. Оче-
видным образом ру (х) = ©ге11 х^ (сумма по модулю 2 отрицаний х{), где ж^ с Т - множество узлов, составляющих путь от корня г до узла у .
Тогда задачу оптимизации буферного дерева с ограничениями на положительную полярность у приемников можно сформулировать следующим образом:
V:
\F(x) —» min,
/■J'- T:/M.Y) 0. Пример оптимального решения х задачи V изображен на рис. 4.
Рис. 4. Пример оптимального решения задачи V (3-6 - терминальные узлы) Fig. 4. An example of optimal solution of V (3-6 - terminal nodes)
Алгоритм динамического программирования. В основе динамического программирования лежит идея разбиения, обычно рекурсивного, исходной задачи оптимизации на подзадачи меньшей сложности. Если решения последних могут быть использованы для решения исходной задачи, то говорят, что она имеет оптимальную подструктуру [7]. Покажем, что метод применим к оптимизации буферного дерева.
Для формулировки подзадач введем следующие обозначения (рис. 5): Т(г) с Т -множество узлов поддерева с корнем /' еТ,
включая терминальные узлы т(г) с Т '); вектор булевых переменных решения для поддерева Т): х(г) = (х | у е Т(г)); стоимость ре-
ализации поддерева F(гх(г= ^
Полярность на
0(i)(v(i)\- , j
выходе j-го
r(f)
j^T(" xj .
узла
Р) (х ) = )Х, где жу - путь от I до у . Теперь сформулируем декомпозицию исходной задачи V на 2п подзадач (по две
подзадачи для каждого узла i):
Я:
У/е т(0 :р<;)(ха)) = 0
и V
|>(0(*(0)->
min
IV/ е т(,) : M''V0) = 1.
По сути задача Ц - оптимизация поддерева Г"1 при положительной полярности на входе и с ограничениями на положительную полярность на выходах всех терминальных узлов, а сопряженная задача V* эквивалентна такой же оптимизации поддерева
Г"1, но при отрицательной полярности на входе. Тогда исходная задача для всего дерева Г с корнем г имеет вид V = Тг. Стратегия ее решения такова: для всех /еГ, начи-
~(г) -*(;)
ная с листьев и двигаясь к корню дерева, искать два оптимальных решения х их: ро) _ /,-<') - для подзадачи Т1 и Р"<п = /<<,) (х40 ) - для сопряженной подзадачи V*.
Для этого необходимо использовать ранее найденные оптимальные решения для поддеревьев и суперпозиции
^«(*)) = *г ^<к>(*к)),
где <5(г) с Т(г) - множество непосредственных потомков узла I,
Ук е ст(г), У] е т(к): р° = % Ф р(к ).
Таким образом, следует выбирать лучшие решения из вариантов х1. = 0 и х, = 1 в
комбинациях с ^ ,,, и ^ ,,, '. Отметим, что стратегия оптимальна в силу
независимости подзадач по переменным и простоты аддитивного разложения целевой функции. По достижении корня будет найдена оптимальная стоимость Р{г) искомой реализации х(" дерева
Т(')
. На рис. 6 изображен пример оптимальной реализации буферного дерева из шести узлов с оптимальными стоимостями поддеревьев и г0).
Рис. 6. Пример решения задачи V для буферного дерева из шести узлов с четырьмя терминальными узлами (листьями). В скобках указаны стоимости
оптимальных решений подзадач Vi и V* Fig. 6. A sample problem V solution for 6-node repeater tree with 4 sinks in the tree leaf nodes. The costs of optimal solutions to subproblems Vj and V*
are indicated in parentheses
Псевдокод алгоритма, реализующего изложенную стратегию с помощью рекурсивных процедур, имеет вид
// Локальные оптимизации поддеревьев:
// z=(z[0],z[l]) - пара переменных для локальных подзадач с // положительной и отрицательной входными полярностями
// х[] — массив пар локальных решений (0-инвертор, 1-буфер) // с[] - массив пар локальных стоимостей function OPTIMIZE(узел i)
// Вычисление суммарных стоимостей оптимальных поддеревьев cost = (0,0)
foreach потомок j узла i do
cost := cost + OPTIMIZE(j) // поэлементная сумма // Решение для текущего узла if i - терминальный узел then x[i] := (1,0)
c[i] := (1,0) + cost // поэлементная сумма else
if 1 + cost[0] < 0 + cost[1] then cost[0]
cost [1]
0 + cost[0] then cost [1]
cost[0]
¡turn c[i] end
// Формирование массива X[] глобального решения function APPLY(узел i, входная полярность p) X[i] := x[i][p] foreach потомок j узла i do
APPLY (j , (p = X[i])) // = - логическая эквивалентность return с [i][p] end
// Весь алгоритм: два этапа, решение // записывается в Х[], его стоимость - в С OPTIMIZE(root) С = APPLY(root, 0)
Поскольку алгоритм осуществляет два раза обход дерева в глубину, он имеет временную и пространственные сложности O(n), а также достаточно прост в рекурсивной реализации. Вычисляется оптимальное решение, часто значительно превосходящее по качеству решения известных эвристик (см. рис. 3). Данный алгоритм может быть обобщен для оптимизации более сложных целевых функций с различными ограничениями и параметрами, такими как размеры и мощность библиотечных буферных элементов, временные характеристики и пр.
Статистический анализ оптимальных буферных деревьев. Рассмотрим, насколько результаты полной оптимизации (оптимальные деревья) могут отличаться от тривиальных реализаций из всех буферов и от результатов простой оптимизации (все инверторы, кроме буферов у некоторых приемников). Результаты существенно зависят
x[i] [0] := 1
C[i] [0] := 1 +
else
x[i] [0] := 0
c[i] [0] := 0 +
if 1 + cost[1] <
X[i][1] := 1
C[i][1] := 1 +
else
x[i] [1] := 0
c[i] [1] := 0 +
return c[i]
от топологии дерева, теоретическая оценка количество здесь затруднена. Поэтому проведен вычислительный эксперимент:
- перебор всех неизоморфных корневых деревьев Тп с п < 20 узлами (считаем равновероятными);
- выполнение простой и полной оптимизации каждого дерева;
- статистический анализ результатов.
В эксперименте п < 20, так как число всех
неизоморфных корневых деревьев растет экспоненциально с ростом числа узлов: |{Ги}| = 0((2,955765...)пП3/2), т.е. увеличивается приблизительно в 3 раза при каждом следующем большом п [8, 9] (рис. 7).
Для перебора использовался описанный в [10] линейный порядок на множестве деревьев, представленных в каноническом виде, и кодировка деревьев строками, как показано на рис. 8.
Рис. 7. Количество всех неизоморфных корневых деревьев с n узлами (логарифмический масштаб)
Fig. 7. The number of all non-isomorphic rooted trees with n nodes (logarithmic scale)
Рис. 8. Линейный порядок на множестве неизоморфных корневых деревьев в каноническом виде (а) и кодировка деревьев строками (б) Fig. 8. Linear order on a set of non-isomorphic rooted trees shown in canonical form (a)
and encoding trees with strings (b)
Линейный порядок задается индукцией по числу узлов [10]. Rx< R или R, >~ Rl означает, что R2 старше Ru R^ R2 или R2 >z означает, что не старше R2. Пусть для всех деревьев с k < n узлами линейный порядок уже определен. Пусть дерево R содержит л1 < п узлов, дерево R2 содержит п2<п узлов, тогда если пх <п2, то R1 -< R2; если пг = «т, то упорядочим поддеревья непосредственно под корнями R] и R-,: В\ >z В\ >zВ1 и В{ К-.^Дг, далее упорядоченные списки сравниваются лексикографически.
Дерево представлено в каноническом виде, если потомки любого узла расположены в невозрастающем порядке порожденных ими поддеревьев [10]. Среди всех канонических деревьев с n узлами минимальным является звезда (граф Kin_бинарный
код 10 10... 10), максимальным - цепь Pn (бинарный код 111...1 000...0).
С учетом доступных вычислительных мощностей осуществлен перебор всех неизоморфных корневых деревьев с n < 20 узлами. Тривиальные реализации буферных
деревьев используют 100 % (неинвертирующих) буферов. Простая эвристическая оптимизация заключалась в выборе всех инверторов, кроме отдельных буферов у приемников для исправления полярности. Полная оптимизация проводилась предложенным алгоритмом. Собранная статистика по доле буферов в результатах простой и полной оптимизации приведена на рис. 9 и 10. Начиная с четырехузловых деревьев, наблюдается значительное преимущество полной оптимизации перед простой: уменьшение ожидаемой доли буферов с 22 до 13 % (в 1,7 раза), максимальной доли буферов -
Рис. 9. Доля буферов при простой (а) и полной (б) оптимизации, уменьшение доли буферов при
переходе от простой к полной оптимизации (в): ■ - диапазон значений; - среднее значение.
Терминальными узлами являются листья деревьев Fig. 9. Buffer rate with simple optimization (a), buffer rate with full optimization (b), buffer rate reduction with full vs. simple optimization (c): ■ - range of values; ---- average value. Terminal nodes are
tree leaf nodes
Рис. 10. Распределение числа 5-, 10-, 15-, 20-узловых деревьев по количеству буферов (перекрывающиеся гистограммы). Терминальными узлами являются листья деревьев Fig. 10. Distributions of the numbers of 5-, 10-, 15-, 20-node trees by the number of buffers (overlapping histograms). Terminal nodes are tree leaf nodes
приблизительно с 90 до 30 % (в 3 раза). Для отдельно взятых деревьев среднее уменьшение доли буферов составляет 9 %, максимальное - до 85 %. Гистограммы распределения числа деревьев по количеству неинвертирующих буферов заметно сдвигаются влево.
В проведенном эксперименте предполагалось, что приемники сигнала подключены только к листьям буферного дерева. В случае подключения приемников к листьям и к некоторым внутренним узлам для соблюдения положительной полярности у приемников доля требуемых буферов может возрасти, а доля инверторов - снизиться (см. рис. 2 и 11).
Рис. 11. Буферизация цепи с приемниками у листьев дерева и одного внутреннего узла Fig. 11. Net buffering with sinks at the tree leaf nodes and one internal node
Проведен еще один вычислительный эксперимент, где для каждого дерева из предыдущего эксперимента с n узлами и l листьями сгенерировано 2п-1 вариантов с различными комбинациями внутренних терминальных узлов наравне с терминалами-листьями (рис. 12). Результаты приведены на рис. 13 и 14.
Рис. 12. Перебор корневых деревьев с различными комбинациями помеченных терминальных узлов (листья всегда терминальные) Fig. 12. Rooted trees enumeration with various combinations of terminal nodes (leaf nodes are always terminal)
В данном эксперименте преимущество полной оптимизации перед простой уже не так выражено: начиная с четырехузловых деревьев, ожидаемая доля буферов уменьшается с 46,4 до 43,8 %, в худшем случае (все узлы терминальные) необходимо 100 % буферов. Для отдельно взятых деревьев среднее уменьшение доли буферов составляет 2,6 %, максимальное - по-прежнему до 85 %.
4 7 10 13 16 Размер дерева п б
Рис. 13. Доля буферов при простой (а) и полной (б) оптимизации, уменьшение доли буферов при
переходе от простой к полной оптимизации (в): ■ - диапазон значений;-среднее значение.
Терминальными узлами могут быть не только листья деревьев Fig. 13. Buffer rate with simple optimization (a), buffer rate with full optimization (b), buffer rate reduction with full vs. simple optimization (c): ■ - range of values; -average value. Terminal nodes
can be not only tree leaf nodes
Рис. 14. Распределение числа 5-, 10-, 15-, 20-узловых деревьев по количеству буферов (перекрывающиеся гистограммы). Терминальными узлами могут быть не только листья деревьев Fig. 14. Distributions of the numbers of 5-, 10-, 15-, 20-node trees by the number of buffers (overlapping histograms). Terminal nodes can be not only tree leaf nodes
Заключение. Предложенный эффективный алгоритм для оптимизации буферного дерева по числу буферов и инверторов основан на динамическом программировании. Алгоритм достаточно прост в рекурсивной реализации и может быть применен для оптимального выбора буферов и инверторов в первую очередь для сигнальных цепей в цифровых СБИС. В буферизации цепей синхронизации, скорее всего, понадобится использование иных подходов, учитывающих требования к сбалансированности деревьев для синхронности расписаний тактовых сигналов на приемниках.
Проведенный статистический анализ эффективности оптимальных решений в сравнении с простой оптимизацией (все инверторы, кроме буферов у отдельных приемников) показал значительное уменьшение доли буферов на деревьях с приемниками только у листьев: в среднем в 1,7 раза, максимум примерно в 3 раза. При наличии приемников у внутренних узлов преимущество предложенного алгоритма статистически уже не так заметно. На практике эффективность зависит от вероятностного распределения конкретных топологий буферных деревьев и требует проверки на реальных схемах.
Можно рекомендовать использование предложенного алгоритма в силу простоты его реализации и высокой производительности. Алгоритм может быть обобщен для оптимизации более сложных целевых функций с различными ограничениями и по разным параметрам, таким как размеры и мощность библиотечных буферных элементов, вре-меннъге характеристики и пр.
Литература
1. Khursheed A., Khare K. Optimized buffer insertion for efficient interconnects designs // Int. J. Numer. Model. 2020. Vol. 33. Iss. 5. Art. ID: e2748. https://doi.org/10.1002/jnm.2748
2. Khursheed A., Khare K. Performance tuning of nano-interconnects using PSO optimized buffer insertion strategy // 2022 3rd International Conference for Emerging Technology (INCET). Belgaum: IEEE, 2022. P. 1-6. https://doi.org/10.1109/INCET54531.2022.9824640
3. LeeD., Markov I. L. Contango: Integrated optimization of SoC clock networks // 2010 Design, Automation and Test in Europe Conference and Exhibition (DATE 2010). Dresden: IEEE, 2010. P. 1468-1473. https://doi.org/10.1109/DATE.2010.5457043
4. Ryzhenko N., Venger O. A practical repeater insertion flow // GLSVLSI'08: Proceedings of the 18th ACM Great Lakes Symposium on VLSI. Orlando, FL: ACM, 2008. P. 261-266. https://doi.org/10.1145/ 1366110.1366174
5. Лебедев И. Г., Корняков К. В., Мееров И. Б. Об одном алгоритме глобальной буферизации интегральных схем // Высокопроизводительные параллельные вычисления на кластерных системах: материалы XI Всерос. конф. (Н. Новгород, 01-03 нояб. 2011). Н. Новгород: Изд-во ННГУ им. Н. И. Лобачевского, 2011. С. 187-192.
6. Graphviz: open source graph visualization software [Электронный ресурс]. URL: https://graphviz.org (дата обращения: 02.09.2024).
7. Cormen Th. H., Leiserson Ch. E., Rivest R. L., Stein C. Introduction to algorithms. 3rd ed. Cambridge, MA: MIT Press, 2009. 1292 p.
8. OtterR. The number of trees // Annals of Mathematics. 1948. Vol. 49. No. 3. P. 583-599. https://doi.org/10.2307/1969046
9. A000081. Number of unlabeled rooted trees with n nodes (or connected functions with a fixed point) // On-line Encyclopedia of Integer Sequences [Электронный ресурс]. Обновл.: 17.02.2024. URL: https://oeis.org/A000081 (дата обращения: 02.09.2024).
10. Диниц Е. А., Зайцев М. А. Алгоритмы генерации неизоморфных деревьев // Автом. и телемех. 1977. № 4. С. 121-126.
Статья поступила в редакцию 20.03.2024 г.; одобрена после рецензирования 10.04.2024 г.;
принята к публикации 10.10.2024 г.
Информация об авторе
Малинаускас Костас Костович - кандидат физико-математических наук, доцент кафедры высшей математики № 1 Национального исследовательского университета «МИЭТ» (Россия, 124498, г. Москва, г. Зеленоград, пл. Шокина, 1), [email protected]
References
1. Khursheed A., Khare K. Optimized buffer insertion for efficient interconnects designs. Int. J. Numer. Model., 2020, vol. 33, iss. 5, art. ID: e2748. https://doi.org/10.1002/jnm.2748
2. Khursheed A., Khare K. Performance tuning of nano-interconnects using PSO optimized buffer insertion strategy. 2022 3rd International Conference for Emerging Technology (INCET). Belgaum, IEEE, 2022, pp. 1-6. https://doi.org/10.1109/INCET54531.2022.9824640
3. Lee D., Markov I. L. Contango: Integrated optimization of SoC clock networks. 2010 Design, Automation and Test in Europe Conference and Exhibition (DATE 2010). Dresden, IEEE, 2010, pp. 1468-1473. https://doi.org/10.1109/DATE.2010.5457043
4. Ryzhenko N., Venger O. A practical repeater insertion flow. GLSVLSI'08: Proceedings of the 18th ACM Great Lakes Symposium on VLSI. Orlando, FL, ACM, 2008, pp. 261-266. https://doi.org/10.1145/ 1366110.1366174
5. Lebedev I. G., Kornyakov K. V., Meyerov I. B. About an algorithm for global buffering of integrated circuits. Vysokoproizvoditel'nyye parallel'nyye vychisleniya na klasternykh sistemakh, proceedings of 11th Russia-wide conf. (N. Novgorod, Oct. 01-03, 2011). Nizhny Novgorod, Lobachevsky Univ. Publ., 2011, pp. 187-192. (In Russian).
6. Graphviz: open source graph visualization software. Available at: https://graphviz.org (access: 02.09.2024).
7. Cormen Th. H., Leiserson Ch. E., Rivest R. L., Stein C. Introduction to algorithms. 3rd ed. Cambridge, MA, MIT Press, 2009. 1292 p.
8. Otter R. The number of trees. Annals of Mathematics, 1948, vol. 49, no. 3, pp. 583-599. https://doi.org/10.2307/1969046
9. A000081. Number of unlabeled rooted trees with n nodes (or connected functions with a fixed point). On-line Encyclopedia of Integer Sequences. Last modified: 17.02.2024. Available at: https://oeis.org/A000081 (accessed: 02.09.2024).
10. Dinits E. A., Zaitsev M. A. Algorithms for generation of nonisomorphic trees. Avtom. i telemekh. = Autom. Remote Control, 1977, no. 4, pp. 121-126. (In Russian).
The article was submitted 20.03.2024; approved after reviewing 10.04.2024;
accepted for publication 10.10.2024.
Information about the author
Kostas K. Malinauskas - Cand. Sci. (Phys.-Math.), Assoc. Prof. of the Higher Mathemat-ics-1 Department, National Research University of Electronic Technology (Russia, 124498, Moscow, Zelenograd, Shokin sq., 1), [email protected]
Информация для читателей журнала «Известия высших учебных заведений. Электроника»
Полные тексты статей журнала с 2004 по 2023 гг. доступны на сайтах Научной электронной библиотеки: www.elibrary.ru и журнала «Известия высших учебных заведений. Электроника»: http://ivuz-e.ru