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

Специалисты по XILINX...Подскажите по опции Registers IOB Packing

Здравствуйте! Вот возник вопрос. У Ксайлинкса в опциях мэппера есть такой пункт - Perform registers and latches packing into iobs. Эту опцию рекомендуется включать для достижения наилучших скоростных результатов на внешних шинах. Я так понимаю что при этом триггера которые соединены с IOB просто переносятся в эти самые IOB, так? Вот возникает вопрос, а что происходит при включении этой опции, когда в VHDL коде между последним триггером и выходным пином присутствует комбинаторная логика? Он что, все равно добавляет регистр в IOB(несанкционированная задержка на такт!) или оставляет все как есть?

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


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

Комбинаторная логика не дает мапперу помещать триггеры в IOB. Т.е. все остается как есть.

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


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

Вот возникает вопрос, а что происходит при включении этой опции, когда в VHDL коде между последним триггером и выходным пином присутствует комбинаторная логика? Он что, все равно добавляет регистр в IOB(несанкционированная задержка на такт!) или оставляет все как есть?

ISE никакой отсебятины не добавляет.

 

Если может затолкать триггеры в IOB, то заталкивает. Если ей что-то помешает запихнуть триггер в IOB, то может выдать предупреждение вида: "вот если бы не то-то, то этот триггер прекрасно бы залез в IOB".

 

Рекомендую поглядывать FPGA Editor'ом на получившийся результат. И если чего не запихнулось в IOB - анализировать причины.

 

Ну а чтобы у меня не было каких-либо проблем, то я еще в и HDL описании вставляют все на интересующие меня регистры (триггеры) атрибут IOB=true.

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


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

Я так понимаю что при этом триггера которые соединены с IOB просто переносятся в эти самые IOB, так? Вот возникает вопрос, а что происходит при включении этой опции, когда в VHDL коде между последним триггером и выходным пином присутствует комбинаторная логика?

В этом случае триггер не является соединенным с IOB и следовательно (сюрприз!) в него не переносится в силу невозможности этой операции.

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


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

Спасибо за ответы! Просто Precision 2007 был пойман на несанкционированном ретайминге (глобально ретайминг был запрещен, но в одном месте он упорно вставлял триггер (которому при этом красноречиво ставил название типа origsig_retimed), которого в коде не было, при этом логика работы разваливалась, пришлось принудительно поставить атрибут dont_retime на этот сигнал). После этого дую на воду :) Кстати никто не сталкивался с таким? Это у меня был пока единственный случай такой самодеятельности, но неприятный.

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


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

Всегда смотреть FPGA Editor -ом на кристалл.
Это экстремизм. :( Всё хорошо видно в отчёте map. В Section 6 есть этого отчёта таблица, в таблице есть колонка "Reg (s)".

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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