Описание эксперимента
Было проведено исследование универсальных обратных преобразователей (для произвольных систем модулей). Для тестирования использовались следующие подходы:
Исследовались задержка и площадь. Также для спец. систем модулей сравнивались параметры со специализированными конвертерами.
Библиотека стандартных ячеек
NangateOpenCellLibrary.lib
Скрипт для запуска
set seq_run {"poilad-lut-511-512-513" "poilad-511-512-513" "seq-511-512-513"}
set comb_run {"comb-511-512-513"}
foreach design $comb_run {
	lappend search_path "../libs" "../src" "./verilog" "./"
	set target_library "NangateOpenCellLibrary.db"
	set link_library [list "*" $target_library]
	analyze -format verilog $design.v
	elaborate reverse_conv
	uniquify
	current_design reverse_conv
	check_design
	set_load [load_of [get_lib_pins NangateOpenCellLibrary/INV_X4/A]] [all_outputs]
	set_driving_cell -lib_cell DFFRS_X2 -library NangateOpenCellLibrary -pin Q  [all_inputs] 
	set_max_delay -to [all_outputs] 0 
	set_max_area 0 
	compile
	report_timing -significant_digits 6 -max_paths 10 > "timing.$design.rpt"
	report_area > "area.$design.rpt"
	report_power -analysis_effort high > "power.$design.rpt"
	remove_design -all
}
#with_clock
foreach design $seq_run {
	lappend search_path "../libs" "../src" "./verilog" "./"
	set target_library "NangateOpenCellLibrary.db"
	set link_library [list "*" $target_library]
	analyze -format verilog $design.v
	elaborate reverse_conv
	uniquify
	current_design reverse_conv
	check_design
	set_load [load_of [get_lib_pins NangateOpenCellLibrary/INV_X4/A]] [all_outputs]
	set_driving_cell -lib_cell DFFRS_X2 -library NangateOpenCellLibrary -pin Q  [all_inputs] 
	set_max_delay -to [all_outputs] 0 
	set_max_area 0 
	create_clock clk -period 0.1
	set_clock_uncertainty 0.0 [all_clocks]
	set_dont_touch_network [all_clocks]
	compile
	report_timing -significant_digits 6 -max_paths 10 > "timing.$design.rpt"
	report_area > "area.$design.rpt"
	report_power -analysis_effort high > "power.$design.rpt"
	remove_design -all
}
Результаты
Модули (3 5 7)
-  Дефолтный тест с малыми модулями
 
| Метод | 
Задержка | 
Общая латентность | 
Площадь | 
Мощность | 
| CRT 2 Комбинационная | 
1.657336 | 
1.657336 | 
588	 | 
0.454 | 
| CRT 2 Конвеерная | 
1.03069 | 
2.06138 | 
678	 | 
0.493 | 
| Полиадический c LUT | 
0.408523 | 
1.225569 | 
468	 | 
2.3425 | 
| Полиадический без таблиц LUT | 
0.694463 | 
2.083389 | 
507	 | 
3.1857 | 
Модули (193 257 449)
-  Типовые модули для небольшого модулярного FIR-фильтра
 
| Метод | 
Задержка | 
Общая латентность | 
Площадь | 
Мощность | 
| CRT 2 Комбинационная | 
4.360145 | 
4.360145 | 
4162	 | 
5.1871 | 
| CRT 2 Конвеерная | 
3.181364 | 
6.362728 | 
4317	 | 
37 | 
| Полиадический c LUT | 
1.034454 | 
3.103362 | 
81678	 | 
107 | 
| Полиадический без таблиц LUT | 
2.091278 | 
6.273834 | 
3213	 | 
27 | 
Модули (3 5 7 11 13 17 23 31)
-  Много модулей малой разрядности
 
| Метод | 
Задержка | 
Общая латентность | 
Площадь | 
Мощность | 
| CRT 2 Комбинационная | 
7.564148 | 
7.564148 | 
8765	 | 
11 | 
| CRT 2 Конвеерная | 
3.961807 | 
11.885421 | 
8154	 | 
71 | 
| Полиадический c LUT | 
0.669079 | 
5.352632 | 
12919 | 
70 | 
| Полиадический без таблиц LUT | 
1.674882 | 
13.399056 | 
7969 | 
69 | 
Модули (511 512 513)
-  Специальная система модулей вида (2n-1, 2n, 2n+1)
 
| Метод | 
Задержка | 
Общая латентность | 
Площадь | 
Мощность | 
| CRT 2 Комбинационная | 
3.584309 | 
3.584309 | 
3049	 | 
2.6 | 
| CRT 2 Конвеерная | 
2.404739 | 
7.214217 | 
3160	 | 
21 | 
| Полиадический c LUT | 
1.05807 | 
3.17421 | 
155055 | 
139 | 
| Полиадический без таблиц LUT | 
2.445659 | 
7.336977 | 
3849 | 
26 | 
| Специализированный преобразователь | 
0.82 | 
0.82 | 
1696 | 
--- | 
 
 
Выводы
-  Наиболее быстрым методом является "Полиадический с LUT (таблицами)", однако он является применимым лишь в случаях, когда используемые модули имеют маленькие значение. Иначе сильно растет площадь и мощность устройства.
 
-  Площадь всех остальных методов примерно одинакова и растет незначительно в зависимости от размера задачи
 
-  Мощность комбинационной версии является минимальной.
 
-  В случае когда требуется максимальная частота преобразователя, логично использовать полиадический преобразователь
 
-  В случае когда требуется минимальная латентность лучше использовать комбинационный преобразователь на базе CRT II
 
-  Если для задачи есть специализированный преобразователь (см. таблицу 511 512 513), то логично использовать именно его.
 
-  Похоже есть возможность разбить Конвеерный преобразователь на базе CRT II, на большее число этапов и тем самым повысить его эффективность. В данный момент задержка определяется последним этапом алгоритма CRT II, где сходятся максимальные модули. В итоге увеличивается общая латентность схемы и уменьшается возможная тактовая частота.
 
Файлы с входными данными
Файл с результатами