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

Поместить регистры в IOB

Xilinx ISE 11.3, Virtex 5. Хочу максимально улучшить времянки (для быстрой внешней памяти, писал здесь в другой теме), разместив регистры у ножек в IOB. Прописываю в UCF

INST "регистр*" IOB = FORCE;

FORCE - чтоб сразу видеть, если не получится. Входные регистры - размещает в IOB без вопросов; выходные - тоже.

А вот с регистрами управления 3-им состоянием что-то странное: на тестовом проекте с 1-битным выводом - не ругается; как только расширяешь разрядность (пробовал и просто так, и с ручным размножением управляющего регистра) - ругается, что выходы регистра не позволяют разместить его в OLOGIC. Причём даже в одноразрядном случае, судя по PlanAhead, ISE располагает его в обычном триггере.

Более того, на схеме Plan Ahead в прямоугольниках PAD'а я даже не вижу предусмотренного под такие регистры места - в отличие от входного и выходного, которые явно прорисованы. Хотя в руководстве по Virtex 5 (ug190.pdf, стр. 331) написано, что регистр именно под управление 3-им состоянием в OLOGIC есть, единственное ограничение - тактируется тем же сигналом, что и триггер выхода (а в проекте так и сделано).

Скажите, чего я не понимаю / делаю не так; тестовый проект могу выложить.

 

P. S. Ещё похоже (кто проверит и отпишется сюда - спасибо), что ISE не воспринимает ограничения

 (* IOB = "нужное_значение" *)

, если они прописаны прямо в Verilog-коде, но при этом содержащий их модуль вызван через generate - это в копилку знаний об "особенностях" ISE.

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


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

Наверняка, я чего-то не знаю, но выхожу из ситуации так: делаю для N выходов N-битный регистр для сигнала OE. На N-битный выходной сигнал регистра накладываю synthersis constaint'ы equivalent register removal = no и iob = true.

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


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

выхожу из ситуации так: делаю для N выходов N-битный регистр для сигнала OE. На N-битный выходной сигнал регистра накладываю synthersis constaint'ы equivalent register removal = no и iob = true.

Спасибо огромное, так - заработало :08: (уж очень угнетало это затруднение). И в PlanAhead прямоугольники выходных регистров волшебным образом разделились на 2, всё логично.

Кроме того выяснилось, что можно отключить автообъединение только для данных конкретных регистров, прописав в коде

// synthesis attribute equivalent_register_removal of <reg_name> is "no";
или
// synthesis attribute equivalent_register_removal <reg_name> no;

(попробовал - работают оба варианта). Причём это продвинутая магия :) , вообще не упомянутая в нашем обычном фолианте Constraints Guide, а только в http://www.xilinx.com/itp/xilinx5/data/doc....html#wp1006861 (и, наверное, в каких-то WP /AN)

Более того, этот констрейнт не задаётся через привычные UCF: только вот так, в самом HDL, или через XCF.

Наверняка, я чего-то не знаю, но

Могу предположить разве что то, что регистры не будут объединяться при заданных очень жёстких временных огреничениях типа FROM .. TO или MAXDELAY .

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


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

Кроме того выяснилось, что можно отключить автообъединение только для данных конкретных регистров, прописав в коде
// synthesis attribute equivalent_register_removal of <reg_name> is "no";
или
// synthesis attribute equivalent_register_removal <reg_name> no;

Ну, это я и имел в виду, только т.к. я пишу на VHDL, то синтаксис чуточку отличается.

 

Причём это продвинутая магия :) , вообще не упомянутая в нашем обычном фолианте Constraints Guide, а только в http://www.xilinx.com/itp/xilinx5/data/doc....html#wp1006861 (и, наверное, в каких-то WP /AN)

Более того, этот констрейнт не задаётся через привычные UCF: только вот так, в самом HDL, или через XCF.

Нет тут никакой магии - тут мат. часть учить надо. Т.к. это же - synthesis constraint, то его описание находится не в cdg.pdf, а в соседнем xst.pdf. Соответственно, если использовать не синтезатор XST, то прийдётся читать другой документ, описывающий работу с тем другим синтезатором.

 

Кстати, xst.pdf содержит массу полезной информации, поэтому обязательно с ним ознакомьтесь, для более правильного понимания: как и почему именно так происходит синтез у XST.

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


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

Спасибо за наводку на xst.pdf - открывал когда-то давно за поддержкой языков; посмотрел сейчас - действтительно, ещё очень много всего полезного, влкючая synthesis constraints.

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


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

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

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

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

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

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

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

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

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

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