1294
правки
Irina (обсуждение | вклад) |
KVN (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 28: | Строка 28: | ||
В [7] был представлен другой алгоритм, который использовал преимущество знания того факта, что на практике K является небольшим целым числом, обычно от 3 до 6. Алгоритм выполняет перечисление всех K-входовых конусов для каждого вентиля. Он может учитывать другие целевые показатели оптимизации (например, площадь и мощность) и может применяться к стандартным библиотекам логических элементов. | В работе [7] был представлен другой алгоритм, который использовал преимущество знания того факта, что на практике K является небольшим целым числом, обычно от 3 до 6. Алгоритм выполняет перечисление всех K-входовых конусов для каждого вентиля. Он может учитывать другие целевые показатели оптимизации (например, площадь и мощность) и может применяться к стандартным библиотекам логических элементов. | ||
'''Перечисление разрезов''' | '''Перечисление разрезов''' | ||
Булева сеть может быть представлена в виде ориентированного графа со взвешенными ребрами, вершинами которого являются логические вентили, первичные входы и первичные выходы. | Булева сеть может быть представлена в виде ориентированного графа со взвешенными ребрами, вершинами которого являются логические вентили, первичные входы и первичные выходы. В нем имеется ориентированное ребро (u, v) с весом d, если u, после прохода через d триггеров, воздействует на v. | ||
Логический конус для вершины может быть представлен в виде разреза, состоящего из входов конуса. Элемент разреза для v состоит из задающей вершины u и суммарного веса d на путях из u в v, обозначаемого <math>u^d</math>. Если u достигает 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-разрезом. | ||
Строка 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 не имеется циклов, | Если в сети N не имеется циклов, K-разрезы для всех вершин можно определить при помощи операции слияния merge в топологическом порядке, начиная с первичных входов. Для сетей общего вида на рис. 3 представлена процедура итеративного вычисления разрезов, предложенная в работе [7]. | ||
Строка 92: | Строка 92: | ||
В работе [7] были предложены некоторые техники для ускорения | В работе [7] были предложены некоторые техники для ускорения выполнения процедуры. С их помощью все 4-разрезы для каждой из эталонных схем ISCAS89 могут быть найдены не более чем за пять итераций. | ||
Строка 124: | Строка 124: | ||
|| <math>\{ a^1, z^1, b^1 \}: 0</math> | || <math>\{ a^1, z^1, b^1 \}: 0</math> | ||
|| <math>\{ z^0 \}: 0</math> | || <math>\{ z^0 \}: 0</math> | ||
|} | |} | ||
Строка 130: | Строка 129: | ||
Процедура разметки стремится найти метку для каждой вершины, как схематически показано на рис. 5, где <math>w_v</math> обозначает вес кратчайших | Процедура разметки стремится найти метку для каждой вершины, как схематически показано на рис. 5, где <math>w_v</math> обозначает вес кратчайших путей из первичных входов к вершине v. | ||
Строка 144: | Строка 143: | ||
'''Этап отображения''' | '''Этап отображения''' | ||
После | После успешного вычисления меток для всех вершин можно построить отображение, начиная с первичных выходов. В каждой вершине v процедура выбирает разрез, реализующий метку вершины, а затем переходит к выбору разреза для u, если <math>u^d</math> входит в состав разреза, выбранного для v. На ребре, идущем из таблицы LUT для u к LUT для v, добавляется d триггеров. Для схемы на рис. 1 (1) сгенерированное отображение, основанное на метках, найденных на рис. 6, представляет собой сеть на рис. 2 (2). | ||
Для получения отображения с целевой продолжительностью цикла <math>\varphi</math> таблица LUT для v может быть ресинхронизирована на <math> | Для получения отображения с целевой продолжительностью цикла <math>\varphi</math> таблица LUT для v может быть ресинхронизирована на <math>\lceil l(v) / \phi \rceil - 1</math>. Для схемы на рис. 1 (1) окончательное отображение после ресинхронизации представлено на рис. 2 (3). | ||
== Применение == | == Применение == | ||
Строка 175: | Строка 174: | ||
9. Pan, P., Liu, C.L.: Optimal Clock Period FPGA Technology Mapping for Sequential Circuits. ACM Trans. on Des. Autom. of Electron. Syst., 3(3), 437-462 (1998) | 9. Pan, P., Liu, C.L.: Optimal Clock Period FPGA Technology Mapping for Sequential Circuits. ACM Trans. on Des. Autom. of Electron. Syst., 3(3), 437-462 (1998) | ||
[[Категория: Совместное определение связанных терминов]] |