Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 64 бит. — различия между версиями
Материал из Модулярная арифметики
DimaT (обсуждение | вклад) (→Типовые Verilog-модули) |
DimaT (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
# [http://vscripts.ru/dima/fwd_generator.php Генератор Verilog для прямого преобразователя в базиса вида (2<sup>n</sup>-1, 2<sup>n</sup>, 2<sup>n</sup>+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). | # [http://vscripts.ru/dima/fwd_generator.php Генератор Verilog для прямого преобразователя в базиса вида (2<sup>n</sup>-1, 2<sup>n</sup>, 2<sup>n</sup>+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). | ||
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2<sup>n</sup>-1, 2<sup>n</sup>, 2<sup>n</sup>+1)] - сверхбыстрый обратный преобразователь в позиционную систему. | # [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2<sup>n</sup>-1, 2<sup>n</sup>, 2<sup>n</sup>+1)] - сверхбыстрый обратный преобразователь в позиционную систему. | ||
+ | |||
+ | == Библиотека стандартных ячеек == | ||
+ | <pre> | ||
+ | NangateOpenCellLibrary.lib | ||
+ | </pre> | ||
+ | |||
+ | == Скрипт для запуска == | ||
+ | <pre> | ||
+ | lappend search_path "../libs" "../src" | ||
+ | set target_library "NangateOpenCellLibrary.db" | ||
+ | set link_library [list "*" $target_library] | ||
+ | |||
+ | analyze -f <имя модуля>.v | ||
+ | elaborate <имя модуля> | ||
+ | uniquify | ||
+ | current_design <имя модуля> | ||
+ | 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 > result/timing_<имя модуля>.rpt | ||
+ | report_area > result/area_<имя модуля>.rpt | ||
+ | remove_design -all | ||
+ | </pre> |
Версия 08:13, 12 апреля 2013
Для того чтобы проанализировать конкурентоспособность модулярной арифметики, были проведены тесты прямых/обратных преобразователей для спец модулей вида . Сравнение производилось для широкого динамического диапазона до 128 бит. Соответственно, параметр варьировался от 3 до 43. Методы построения преобразователей были заимствованы из книги Residue number systems: Theory and implementation (Amos Omondi, Benjamin Premkumar).
Генераторы Verilog-модулей
Исследовались следующие преобразователи:
- Генератор Verilog для прямого преобразователя в базиса вида (2n-1, 2n, 2n+1) - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа).
- Генератор Verilog для прямого преобразователя в базиса вида (2n-1, 2n, 2n+1) - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы).
- Генератор Verilog для обратного преобразователя из базиса вида (2n-1, 2n, 2n+1) - сверхбыстрый обратный преобразователь в позиционную систему.
Библиотека стандартных ячеек
NangateOpenCellLibrary.lib
Скрипт для запуска
lappend search_path "../libs" "../src" set target_library "NangateOpenCellLibrary.db" set link_library [list "*" $target_library] analyze -f <имя модуля>.v elaborate <имя модуля> uniquify current_design <имя модуля> 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 > result/timing_<имя модуля>.rpt report_area > result/area_<имя модуля>.rpt remove_design -all