Перейти к содержанию
    

Позитивные результаты синтеза и печалька с имплементацией

Товарищи, это же статический мультиплексор в LUT. У него нет других целей.

 

Что касается появления внезапных LUT-ов в путях - это вполне возможно.

Этим грешит как синтезатор, который из экономии делает, например, много LUT3 где можно сделать мало LUT6,

или "Улучшитель потребления" (Coolgate ) который, гад, тоже много себе позволяет - из чистокровного регистра, например BRAM enable делает lut-ы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, про мультиплексор я дописал.

 

И ещё добавил, оно в то же сообщение попало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Опять в темной комнате ищем кошку :wacko:

Есть же логи в которых все должно быть понятно - почему не развелось, каких ресурсов не хватило.

Так нет же - будем гадать на интерконектой гуще.

 

ISE добавляет LUT/регистры для роутинга очень редко и в логе отдельной строкой идет

Number used as Latch-thrus: 4

 

В общем для решения нужны логи!

 

Успехов! Rob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, и про печальку с имплепентацией.

 

Если

1. укоротить пути распространения сигнала до 1-2 LUT,

2. не пережимать констрейны размещения и частот,

3. управлять входами clock enable с выхода триггера,

4. закладывать избыточные регистры в путях с выхода BRAM,

и т.п.

 

то под крышку занятая ПЛИС собирается на автомате за ~час с частотами вплоть до максимально возможных по даташиту.

Причём без констрейнов на размещение.

 

Если в проекте есть хоть какая-то дыра, она вылезет из-за высокой плотности размещения или частоты.

И перебор стратегий сборки в сложных случаях не поможет вплоть до

1. устранения причин,

2. смирения с происходящим.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сколько ячеек будут заняты под интерконнект.
Я правильно понял, что всё же причина не в этом, и ячейки под интерконнект не расходуются (по крайней мере сверх того, что предложил синтез)?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтез этого не предлагает. Он определяет только количество функциональных элементов.

Затем плейсмент размещает все эти элементы в заданной модели FPGA.

Затем роутинг ищет пути соединения этих элементов (возможно перемещает и сами элементы), удовлетворяющие констрейнам.

 

До окончания роутинга все оценки таймингов и занятых ресурсов - приблизительные.

Изменено пользователем Vascom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чип xilinx spartan6 XC6SLX9

Синтез в synplify h-2013.03

Имплементация ise14.4

 

А если самим ISE синтезировать, не пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понял, что всё же причина не в этом, и ячейки под интерконнект не расходуются (по крайней мере сверх того, что предложил синтез)?

Вы правильно поняли. Просто так ЛУТы для интерконнекта использоваться не будут.

 

Вот эта выходная SLICEL целиком

reg_reg_4.jpg

Этот пример некорректен по многим причинам.

Во первых: B6LUT уже используется под логику(B5 и B6). В силу этого вполне логично, что маппер решил использовать лишний вход ЛУТа под интерконнект.

Во вторых: линия BX уже используется под логику, и соответственно, не может быть использована для прямого соединения триггеров.

В третьих - что самое главное: Ваш триггер BQ является элементом шины, а значит маппер в первую очередь поставил элементы вашего вектора в одну ячейку, а потом уже начал крутить логику и интерконнект вокруг них.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтез этого не предлагает. Он определяет только количество функциональных элементов.

Затем плейсмент размещает все эти элементы в заданной модели FPGA.

Затем роутинг ищет пути соединения этих элементов (возможно перемещает и сами элементы), удовлетворяющие констрейнам.

Это всё понятно. Но мой вопрос был в том, что изначально было предположение, что PAR расходует элементы (допустим LUT) на интерконнект там, где по результатам синтеза LUTа быть не должно, а должна быть прямая связь. Вывод из предыдущих Ваших скриншотов такой, что предположение было ошибочным? Там потом ещё ув. jojo написал, что были задействованы лишь статические мультиплексоры, которые не задействованными и не могли быть. Т.е. их задействование неверно относить к аргументу в пользу предположения.

 

 

До окончания роутинга все оценки таймингов и занятых ресурсов - приблизительные.
Да, это тоже всё понятно, не спорю. Особенно бывают всякие схемы оптимизации типа registers duplication и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если самим ISE синтезировать, не пробовали?

ISE не дружит с systemverilog, надо много чего переписывать.

 

... больше света в темную комнату

Mapping to part: xc6slx9tqg144-2
Cell usage:
DCM_SP          1 use
FD              94 uses
FDE             2720 uses
FDR             245 uses
FDRE            3189 uses
FDSE            4 uses
GND             33 uses
MUXCY           12 uses
MUXCY_L         233 uses
MUXF7           290 uses
MUXF8           144 uses
VCC             33 uses
XORCY           209 uses
fifo_w4d16_spartan6  1 use
LUT1            109 uses
LUT2            202 uses
LUT3            934 uses
LUT4            991 uses
LUT5            527 uses
LUT6            1570 uses
LUT6_2            5 uses

I/O ports: 57
I/O primitives: 53
IBUF           12 uses
IBUFG          1 use
OBUF           40 uses

BUFG           2 uses

SRL primitives:
SRLC32E        48 uses

I/O Register bits:                  0
Register bits not including I/Os:   6252 (50%)

Global Clock Buffers: 2 of 16 (12%)

Total load per clock:
   clk8x|CLKFX_BUF_derived_clock: 6301
   clk8x|CLK0_BUF_derived_clock: 1
   clock_p51: 1

Mapping Summary:
Total  LUTs: 3773 (61%)

Distribution of All Consumed LUTs = SRL + LUT1 + LUT2 + LUT3 + LUT4 + LUT5 + LUT6 + LUT6_2- HLUTNM/2 
Distribution of All Consumed Luts 3773 = 48 + 109 + 202 + 934 + 991 + 527 + 1570 + 5- 1226/2 


Number of unique control sets:              130


Region Summary:
Other LUTs: 4338 Other Registers: 6252
Mapper successful!

 

Xilinx пишет

Interim Summary
---------------
Slice Logic Utilization:
  Number of Slice Registers:                 6,282 out of  11,440   54%
    Number used as Flip Flops:               6,282
    Number used as Latches:                      0
    Number used as Latch-thrus:                  0
    Number used as AND/OR logics:                0
  Number of Slice LUTs:                      3,779 out of   5,720   66%
    Number used as logic:                    3,717 out of   5,720   64%
      Number using O6 output only:           2,880
      Number using O5 output only:              70
      Number using O5 and O6:                  767
      Number used as ROM:                        0
    Number used as Memory:                      48 out of   1,440    3%
      Number used as Dual Port RAM:              0
      Number used as Single Port RAM:            0
      Number used as Shift Register:            48
        Number using O6 output only:            48
        Number using O5 output only:             0
        Number using O5 and O6:                  0
    Number used exclusively as route-thrus:     14
      Number with same-slice register load:      0
      Number with same-slice carry load:        14
      Number with other load:                    0

Slice Logic Distribution:
  Number of MUXCYs used:                       320 out of   2,860   11%
  Number of LUT Flip Flop pairs used:        8,885
    Number with an unused Flip Flop:         2,732 out of   8,885   30%
    Number with an unused LUT:               5,106 out of   8,885   57%
    Number of fully used LUT-FF pairs:       1,047 out of   8,885   11%
    Number of unique control sets:             180
    Number of slice register sites lost
      to control set restrictions:             742 out of  11,440    6%

  A LUT Flip Flop pair for this architecture represents one LUT paired with
  one Flip Flop within a slice.  A control set is a unique combination of
  clock, reset, set, and enable signals for a registered element.
  The Slice Logic Distribution report is not meaningful if the design is
  over-mapped for a non-slice resource or if Placement fails.

IO Utilization:
  Number of bonded IOBs:                        53 out of     102   51%

Specific Feature Utilization:
  Number of RAMB16BWERs:                         0 out of      32    0%
  Number of RAMB8BWERs:                          1 out of      64    1%
  Number of BUFIO2/BUFIO2_2CLKs:                 1 out of      32    3%
    Number used as BUFIO2s:                      1
    Number used as BUFIO2_2CLKs:                 0
  Number of BUFIO2FB/BUFIO2FB_2CLKs:             1 out of      32    3%
    Number used as BUFIO2FBs:                    1
    Number used as BUFIO2FB_2CLKs:               0
  Number of BUFG/BUFGMUXs:                       2 out of      16   12%
    Number used as BUFGs:                        2
    Number used as BUFGMUX:                      0
  Number of DCM/DCM_CLKGENs:                     1 out of       4   25%
    Number used as DCMs:                         1
    Number used as DCM_CLKGENs:                  0
  Number of ILOGIC2/ISERDES2s:                   0 out of     200    0%
  Number of IODELAY2/IODRP2/IODRP2_MCBs:         0 out of     200    0%
  Number of OLOGIC2/OSERDES2s:                   0 out of     200    0%
  Number of BSCANs:                              0 out of       4    0%
  Number of BUFHs:                               0 out of     128    0%
  Number of BUFPLLs:                             0 out of       8    0%
  Number of BUFPLL_MCBs:                         0 out of       4    0%
  Number of DSP48A1s:                            0 out of      16    0%
  Number of ICAPs:                               0 out of       1    0%
  Number of MCBs:                                0 out of       2    0%
  Number of PCILOGICSEs:                         0 out of       2    0%
  Number of PLL_ADVs:                            0 out of       2    0%
  Number of PMVs:                                0 out of       1    0%
  Number of STARTUPs:                            0 out of       1    0%
  Number of SUSPEND_SYNCs:                       0 out of       1    0%

 

 

До окончания роутинга все оценки таймингов и занятых ресурсов - приблизительные.

огорчает приближение +- полчипа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вообще не обращаю внимание на сообщения синтезатора о тайминге в конце синтеза. Смотрю только после PAR.

А по поводу утилизации: результат может быть достигнут довольно близкий (синтез к PAR), если в PAR выключить все оптимизации типа registers duplication и т.п. Но кому это надо? Лучше просто не смотреть на сообщения синтезатора )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вообще не обращаю внимание на сообщения синтезатора о тайминге в конце синтеза. Смотрю только после PAR.

А по поводу утилизации: результат может быть достигнут довольно близкий (синтез к PAR), если в PAR выключить все оптимизации типа registers duplication и т.п. Но кому это надо? Лучше просто не смотреть на сообщения синтезатора )))

 

Starting Clock                    Frequency     Frequency     Period        Period        Slack       Type                         Group           
---------------------------------------------------------------------------------------------------------------------------------------------------
clk8x|CLKFX_BUF_derived_clock     100.0 MHz     155.8 MHz     10.000        6.417         3.583       derived (from clock_p51)     default_clkgroup
clock_p51                         50.0 MHz      NA            20.000        NA            DCM/PLL     declared                     default_clkgroup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сегодня Xilinx решил зависнуть на другом этапе (обычно зависал на Phase 9.8 Global Placement):

Screen_Shot_2015_10_15_at_09_53_53.jpg

 

Поддерживаю.

Это значит, что не хватило интерконнектов.

Посмотрите, можно ли убрать параллельные схемы. И заменить их на последовательные.

Или вместо логики применить память, SRL и т.д....

В новой ветке проекта этим и занимаюсь.

 

У S6 только половина слайсов пригодна для сложения, и половина от пригодных для сложения - пригодна и для распределённой памяти. Поэтому, если в дизайне много сумматоров и распределённой памяти, может и не влезть, несмотря на вроде бы большой общий запас.

Можете дать ссылку про это почитать?

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...