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

Перейти к навигации Перейти к поиску
Строка 28: Строка 28:




В [7] был представлен другой алгоритм, который использовал преимущество знания того факта, что на практике K является небольшим целым числом, обычно от 3 до 6. Алгоритм выполняет перечисление всех K-входовых конусов для каждого вентиля. Он может учитывать другие целевые показатели оптимизации (например, площадь и мощность) и может применяться к стандартным библиотекам логических элементов.
В работе [7] был представлен другой алгоритм, который использовал преимущество знания того факта, что на практике K является небольшим целым числом, обычно от 3 до 6. Алгоритм выполняет перечисление всех K-входовых конусов для каждого вентиля. Он может учитывать другие целевые показатели оптимизации (например, площадь и мощность) и может применяться к стандартным библиотекам логических элементов.




'''Перечисление разрезов'''
'''Перечисление разрезов'''


Булева сеть может быть представлена в виде ориентированного графа со взвешенными ребрами, вершинами которого являются логические вентили, первичные входы и первичные выходы. Существует ориентированное ребро (u, v) с весом d, если u, после прохода через d триггеров, воздействует на v.
Булева сеть может быть представлена в виде ориентированного графа со взвешенными ребрами, вершинами которого являются логические вентили, первичные входы и первичные выходы. В нем имеется ориентированное ребро (u, v) с весом d, если u, после прохода через d триггеров, воздействует на v.


Логический конус для вершины может быть представлен в виде разреза, состоящего из входов конуса. Элемент разреза для v состоит из задающей вершины u и суммарного веса d на путях из u в v, обозначаемого <math>u^d</math>. Если u достигает v по нескольким путям с разным числом вентилей, u будет входить в разрез несколько раз с разными значениями d. К примеру, для конуса для z на рис 2 (2) соответствующий разрез будет иметь вид <math>\{ z^1, a^1, b^1 \}</math>. Разрез размера K называется K-разрезом.
Логический конус для вершины может быть представлен в виде ''разреза'', состоящего из входов конуса. Элемент разреза для v состоит из задающей вершины u и суммарного веса d на путях из u в v, обозначаемого <math>u^d</math>. Если u достигает v по нескольким путям с разным числом триггеров, u будет входить в разрез несколько раз с разными значениями d. К примеру, для конуса для z на рис 2 (2) соответствующий разрез будет иметь вид <math>\{ z^1, a^1, b^1 \}</math>. Разрез размера K называется K-разрезом.




Строка 42: Строка 42:
<math>\{ \{ v^0 \} \} \cup \{ c^{d_1}_1 \cup ... \cup c^{d_t}_t | c_1 \in C(u_1), ..., c_t \in C(u_t), | c^{d_1}_1 \cup ... \cup c^{d_t}_t | \le K \}</math>,
<math>\{ \{ v^0 \} \} \cup \{ c^{d_1}_1 \cup ... \cup c^{d_t}_t | c_1 \in C(u_1), ..., c_t \in C(u_t), | c^{d_1}_1 \cup ... \cup c^{d_t}_t | \le K \}</math>,


где <math>c^{d_i}_i = \{ u^{d + d_i} | u^d \in c_i \}</math> для i = 1.. t. Очевидно, что <math>merge(C(u_1), ..., C(u_t))</math> является множеством K-разрезов для v.
где <math>c^{d_i}_i = \{ u^{d + d_i} | u^d \in c_i \}</math> для i = 1, ..., t. Очевидно, что <math>merge(C(u_1), ..., C(u_t))</math> является множеством K-разрезов для v.




Если в сети N не имеется циклов, K—разрезы для всех вершин можно определить при помощи операции слияния merge в топологическом порядке, начиная с первичных входов. Для сетей общего вида на рис. 3 представлена процедура итеративного вычисления разрезов, предложенная в работе [7].
Если в сети N не имеется циклов, K-разрезы для всех вершин можно определить при помощи операции слияния merge в топологическом порядке, начиная с первичных входов. Для сетей общего вида на рис. 3 представлена процедура итеративного вычисления разрезов, предложенная в работе [7].




4551

правка

Навигация