Intekus 0 6 ноября, 2010 Опубликовано 6 ноября, 2010 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 6 ноября, 2010 Опубликовано 6 ноября, 2010 · Жалоба Наверняка, я чего-то не знаю, но выхожу из ситуации так: делаю для N выходов N-битный регистр для сигнала OE. На N-битный выходной сигнал регистра накладываю synthersis constaint'ы equivalent register removal = no и iob = true. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intekus 0 7 ноября, 2010 Опубликовано 7 ноября, 2010 · Жалоба выхожу из ситуации так: делаю для 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 . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 7 ноября, 2010 Опубликовано 7 ноября, 2010 · Жалоба Кроме того выяснилось, что можно отключить автообъединение только для данных конкретных регистров, прописав в коде // 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intekus 0 7 ноября, 2010 Опубликовано 7 ноября, 2010 · Жалоба Спасибо за наводку на xst.pdf - открывал когда-то давно за поддержкой языков; посмотрел сейчас - действтительно, ещё очень много всего полезного, влкючая synthesis constraints. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться