Блог
Смерженный PR в FPGA-репозитории заменяет сравнение только модулей полным сумматором и сообщает о 3000 проверках оракулом, 0 ошибках и результате 440 LUT после синтеза.
[Измерено — Yosys] В смерженном PR в gHashTag/trinity-fpga добавлен полный сумматор плавающего формата TEF/TNF — tef_add_full.v. Он появился потому, что прежнее сравнение площади ставило рядом схему только для модулей и полную tapered-field-модель: обе стороны выполняли разные операции.
Новая схема принимает и выдаёт знак, выполняет эффективное вычитание при разных знаках, округляет round-to-nearest-even по guard/round/sticky, полностью нормализует ведущий ноль и использует строку переполнения самого формата. Исправление делает вопрос о цене сопоставимым; это не заявление, что формат лучше опубликованного конкурента.
Против собственного encode эталонного оракула проверены 3000 случайных пар: 0 ошибок. Проверка обнаружила две ошибки в написанном вручную golden-модуле: мантисса делилась на 512 + 1 вместо 512, а переполнение зажималось до максимального конечного значения вместо строки Inf. Первая ошибка изменила 133 из 3000 результатов ровно на один ulp. Третья ошибка была уже в RTL: бит переноса терялся вместо добавления в sticky.
| Схема | LUT | CARRY4 |
|---|---|---|
| Сумматор только для модулей | 97 | 8 |
| Полный: знак, вычитание, округление, нормализация | 440 | 48 |
| Внутренняя линейная структурная tapered-field-модель | 1182 | 211 |
В прогоне Yosys 0.65 с synth_xilinx для семейства xc7 и отключёнными DSP полная схема примерно в 2,7 раза меньше внутренней эталонной модели по LUT. Добавленные округление, вычитание и нормализация стоят 343 LUT, то есть примерно в 4,5 раза больше схемы только для модулей. Это число ячеек после синтеза, а не замер на плате.
Прежде чем сравнивать форматы, сравните операции, которые они действительно выполняют.
Практический вывод для инженера узкий, но полезный: в каждом заявлении о площади отдельно хранить схему только для модулей, полную арифметику, проверку оракулом и конфигурацию синтеза. Иначе асимметрия схем превращается в мнимое свойство формата.
Каждая цифра выше измерена, и рядом с ней названы её пределы.