Источник данных: docs/stat/stat_others_spartan6.md, docs/stat/stat_others_spartan7.md, docs/stat/stat_others_artix7.md.
Все цифры — оценки на основе ручного подсчёта по RTL-коду (погрешность ±20–25%).
| Device | Семейство | LUT6 | FF | DSP | BRAM |
|---|---|---|---|---|---|
| XC6SLX9 | Spartan-6 | 5,720 | 11,440 | 16× DSP48A1 | 32× 18Kb |
| XC6SLX16 | Spartan-6 | 9,112 | 18,224 | 32× DSP48A1 | 32× 18Kb |
| XC7S15 | Spartan-7 | 8,000 | 16,000 | 20× DSP48E1 | 10× 36Kb |
| XC7A15T | Artix-7 | 10,400 | 20,800 | 45× DSP48E1 | 25× 36Kb |
| Подмодуль | XC6SLX9 | XC6SLX16 | XC7S15 | XC7A15T |
|---|---|---|---|---|
mul4x4 |
~45 | ~45 | ~45 | ~45 |
mul4x4_lat2 |
~50 | ~50 | ~50 | ~50 |
mul4x4_comb |
~45 | ~45 | ~45 | ~45 |
mul_u8_u8_u16_lat2 |
~208 | ~208 | ~208 | ~208 |
mul_u8_u8_u16_lat3 |
~230 | ~230 | ~230 | ~230 |
add8x8_lat2 |
~18 | ~18 | ~18 | ~18 |
add8x8 (branch) |
~18 | ~18 | ~18 | ~18 |
sign |
~1 | ~1 | ~1 | ~1 |
flags_lat1 |
~11 | ~11 | ~11 | ~11 |
flags_lat2 |
~11 | ~11 | ~11 | ~11 |
except_lat2 |
~54 | ~54 | ~54 | ~54 |
except_lat3 |
~52 | ~52 | ~52 | ~52 |
| ИТОГО (уникальные) | ~626 | ~626 | ~626 | ~626 |
«Уникальные» — без модулей, входящих в состав других:
mul4x4(вmul_u8_u8_u16_lat2),mul4x4_lat2(вmul_u8_u8_u16_lat3),flags_lat1(вexcept_lat2),flags_lat2(вexcept_lat3). Альтернативные реализации (mul_u8_u8_u16_lat2/mul_u8_u8_u16_lat3,except_lat2/except_lat3,add8x8_lat2/add8x8_branch) учтены раздельно.
| Подмодуль | XC6SLX9 | XC6SLX16 | XC7S15 | XC7A15T |
|---|---|---|---|---|
mul4x4 |
8 | 8 | 8 | 8 |
mul4x4_lat2 |
37 | 37 | 37 | 37 |
mul4x4_comb |
0 | 0 | 0 | 0 |
mul_u8_u8_u16_lat2 |
48 | 48 | 48 | 48 |
mul_u8_u8_u16_lat3 |
160 | 160 | 160 | 160 |
add8x8_lat2 |
19 | 19 | 19 | 19 |
add8x8 (branch) |
19 | 19 | 19 | 19 |
sign |
3 | 3 | 3 | 3 |
flags_lat1 |
5 | 5 | 5 | 5 |
flags_lat2 |
11 | 11 | 11 | 11 |
except_lat2 |
63 | 63 | 63 | 63 |
except_lat3 |
108 | 108 | 108 | 108 |
| ИТОГО (уникальные) | ~420 | ~420 | ~420 | ~420 |
| Подмодуль | XC6SLX9 (5,720) | XC6SLX16 (9,112) | XC7S15 (8,000) | XC7A15T (10,400) |
|---|---|---|---|---|
mul4x4 |
0.8% | 0.5% | 0.6% | 0.4% |
mul4x4_lat2 |
0.9% | 0.5% | 0.6% | 0.5% |
mul4x4_comb |
0.8% | 0.5% | 0.6% | 0.4% |
mul_u8_u8_u16_lat2 |
3.6% | 2.3% | 2.6% | 2.0% |
mul_u8_u8_u16_lat3 |
4.0% | 2.5% | 2.9% | 2.2% |
add8x8_lat2 |
0.3% | 0.2% | 0.2% | 0.2% |
add8x8 (branch) |
0.3% | 0.2% | 0.2% | 0.2% |
sign |
0.02% | 0.01% | 0.01% | 0.01% |
flags_lat1 |
0.2% | 0.1% | 0.1% | 0.1% |
flags_lat2 |
0.2% | 0.1% | 0.1% | 0.1% |
except_lat2 |
0.9% | 0.6% | 0.7% | 0.5% |
except_lat3 |
0.9% | 0.6% | 0.7% | 0.5% |
| ИТОГО (уникальные) | 10.9% | 6.9% | 7.8% | 6.0% |
| Подмодуль | XC6SLX9 (11,440) | XC6SLX16 (18,224) | XC7S15 (16,000) | XC7A15T (20,800) |
|---|---|---|---|---|
mul4x4 |
0.1% | 0.04% | 0.05% | 0.04% |
mul4x4_lat2 |
0.3% | 0.2% | 0.2% | 0.2% |
mul4x4_comb |
0% | 0% | 0% | 0% |
mul_u8_u8_u16_lat2 |
0.4% | 0.3% | 0.3% | 0.2% |
mul_u8_u8_u16_lat3 |
1.4% | 0.9% | 1.0% | 0.8% |
add8x8_lat2 |
0.2% | 0.1% | 0.1% | 0.1% |
add8x8 (branch) |
0.2% | 0.1% | 0.1% | 0.1% |
sign |
0.03% | 0.02% | 0.02% | 0.01% |
flags_lat1 |
0.04% | 0.03% | 0.03% | 0.02% |
flags_lat2 |
0.1% | 0.06% | 0.07% | 0.05% |
except_lat2 |
0.6% | 0.3% | 0.4% | 0.3% |
except_lat3 |
0.9% | 0.6% | 0.7% | 0.5% |
| ИТОГО (уникальные) | 3.7% | 2.3% | 2.6% | 2.0% |
| Подмодуль | XC6SLX9-2 | XC6SLX16-2 | XC7S15-1 | XC7S15-2 | XC7A15T-1 |
|---|---|---|---|---|---|
mul4x4 |
250–280–320 MHz | 250–280–320 MHz | 280–320–380 MHz | 320–360–420 MHz | 340–380–460 MHz |
mul4x4_lat2 |
300–340–400 MHz | 300–340–400 MHz | 350–400–480 MHz | 400–450–520 MHz | 380–420–500 MHz |
mul4x4_comb |
280–320–380 MHz | 280–320–380 MHz | 320–360–440 MHz | 360–400–480 MHz | 340–380–460 MHz |
mul_u8_u8_u16_lat2 |
200–230–270 MHz | 200–230–270 MHz | 230–270–320 MHz | 260–300–360 MHz | 250–290–350 MHz |
mul_u8_u8_u16_lat3 |
250–290–340 MHz | 250–290–340 MHz | 290–330–400 MHz | 330–370–440 MHz | 310–350–420 MHz |
add8x8_lat2 |
350–400–480 MHz | 350–400–480 MHz | 400–450–540 MHz | 450–500–600 MHz | 420–480–580 MHz |
add8x8 (branch) |
350–400–480 MHz | 350–400–480 MHz | 400–450–540 MHz | 450–500–600 MHz | 420–480–580 MHz |
sign |
400–500–600 MHz | 400–500–600 MHz | 500–600–700 MHz | 550–650–750 MHz | 520–620–720 MHz |
flags_lat1 |
350–400–480 MHz | 350–400–480 MHz | 400–450–540 MHz | 450–500–600 MHz | 420–480–580 MHz |
flags_lat2 |
400–450–520 MHz | 400–450–520 MHz | 450–500–600 MHz | 500–550–650 MHz | 480–540–640 MHz |
except_lat2 |
280–320–380 MHz | 280–320–380 MHz | 320–360–440 MHz | 360–400–480 MHz | 340–380–460 MHz |
except_lat3 |
320–360–420 MHz | 320–360–420 MHz | 360–400–480 MHz | 400–450–520 MHz | 380–420–500 MHz |
| Подмодуль | XC6SLX9-2 | XC6SLX16-2 | XC7S15-1 | XC7S15-2 | XC7A15T-1 |
|---|---|---|---|---|---|
mul4x4 |
~280 | ~280 | ~320 | ~360 | ~380 |
mul4x4_lat2 |
~340 | ~340 | ~400 | ~450 | ~420 |
mul4x4_comb |
~320 | ~320 | ~360 | ~400 | ~380 |
mul_u8_u8_u16_lat2 |
~230 | ~230 | ~270 | ~300 | ~290 |
mul_u8_u8_u16_lat3 |
~290 | ~290 | ~330 | ~370 | ~350 |
add8x8_lat2 |
~400 | ~400 | ~450 | ~500 | ~480 |
add8x8 (branch) |
~400 | ~400 | ~450 | ~500 | ~480 |
sign |
~500 | ~500 | ~600 | ~650 | ~620 |
flags_lat1 |
~400 | ~400 | ~450 | ~500 | ~480 |
flags_lat2 |
~450 | ~450 | ~500 | ~550 | ~540 |
except_lat2 |
~320 | ~320 | ~360 | ~400 | ~380 |
except_lat3 |
~360 | ~360 | ~400 | ~450 | ~420 |
Значения
typ— середины оценочных диапазонов из таблицы выше (ручная оценка ±20–25%, без реального синтеза).
Самый прожорливый подмодуль — mul_u8_u8_u16_lat3 (~230 LUT, 4.0% на XC6SLX9), затем mul_u8_u8_u16_lat2 (~208 LUT, 3.6% на XC6SLX9).
Рефакторинг mul_u8_u8_u16_lat2 сэкономил ~2 LUT (с ~210 до ~208) за счёт замены 3 последовательных CPA на CSA-дерево (2 уровня CSA + 1 CPA).
Новые модули после рефакторинга: mul4x4_lat2 (~50 LUT, 37 FF), mul4x4_comb (~45 LUT, 0 FF), mul_u8_u8_u16_lat3 (~230 LUT, 160 FF).
Все подмодули вместе занимают ~10.9% LUT6 на XC6SLX9 (наименьшем устройстве) и всего ~6.0% на XC7A15T.
FF-затраты невелики: максимум 3.7% на XC6SLX9, в основном из-за mul_u8_u8_u16_lat3 (160 FF) и except_lat3 (108 FF).