Jump to content

    

TRILLER

Свой
  • Content Count

    198
  • Joined

  • Last visited

Community Reputation

0 Обычный

About TRILLER

  • Rank
    Частый гость
  • Birthday 07/26/1987

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Санкт-Петербург

Recent Profile Visitors

2230 profile views
  1. Писал им на ХХ - в ответ тишина. Может не стоит?..
  2. Не часто такое нужно. Странно, что пропустил..
  3. Даа, тогда Ваше первое предположение обретает почву. Тут либо что-то в схеме приводит к такому поведению, либо глюки софта для SLR кристалла. Думаю, действительно стоит попробовать явно развязать клоки для отдельных кластеров. Я делаю так. В коде: (* dont_touch = "true" *)wire clkd_ibuf; (* dont_touch = "true" *)wire clkd; (* dont_touch = "true" *)wire clkj; IBUFDS u_clkd_ibuf( .I (CLK_200_P), .IB (CLK_200_N), .O (clkd_ibuf)); BUFG u_clkd( .I (clkd_ibuf), .O (clkd)); BUFG u_clkj( .I (clkd_ibuf), .O (clkj)); В констейнах: set_false_path -through [get_pins {u_aaa/u_clkd_ibuf/O}] create_clock -period 5.000 -name clkd [get_pins u_aaa/u_clkd/O] create_clock -period 5.000 -name clkj [get_pins u_aaa/u_clkj/O] set_clock_groups -name async_groups -asynchronous -group clkd -group clkj Позволяет надёжно развязать клоки из одного источника. Всё остальное ненадёжно(или не нашёл..) Поставьте по буферу на кластер. Если не поможет, тогда надо схему ковырять, на мой взгляд. Да, IBUFDS нужно заменить на BUFG, если внутренне сгенерированный клок.
  4. Вообще-то не должен, только опосредованно. Вычислитель влезает в один тактовый регион? Сколько у Вас Clock Skew на плохих путях? Если до 400пик - то это нормально и улучшить что-то в ряд ли получится. Да и не стоит. Сколько регионов пересекает поломанный путь?
  5. Думаю, что дело не в желании, а в необходимости. При увеличении заполнения кристалла некоторые элементы вычислителей, скорее всего, размазываются по многим регионам. Я бы настоятельно рекомендовал локализовать непосредственно каждый вычислитель из конфиг 2 в отдельный блок. Тогда сразу увидите, где у Вас возникают проблемы и сможете предсказуемо влиять на результат. В целом, Вам уже более развёрнуто ответили: create_generated_clock можно назначить или на клоковый вход синхронного элемента или на порты клоковых элементов. Есть в доках.
  6. На мой взгляд, есть лишь единственный способ надёжно водить большие проекты на 400-500 МГц: закладывать подобную сложность ещё на этапе написания исходников и с чётким осознанием маршрута проектирования. Все остальное - это монетка при любом изменении.
  7. Присоединяюсь к вышесказанному. В целом, ксайлинкс прямо рекомендует использовать одни констрейны для синтеза и другие для раскладки. Хотя лично я просто забиваю на ругань синтезатора.
  8. Может констрейны покажете, которые для захвата данных используются? Особенно интересна часть с IDELAYCTRL.
  9. Ну, если анализирует времянку, тогда действительно не важно. Наверное, перестраховались.
  10. Глитчи это одно, а нарушение setup/hold - другое. Если произойдёт так, что асинхронный ресет будет отменяться(устанавливаться) в момент прихода синхроимпульса на триггер - то он может попасть в метастабильное состояние. Я лишь хочу сказать, что синтезатор прав, вываливая варнинг и в данном случае я бы последовал совету Роба.
  11. Вы здесь ошибаетесь. Хоть сигнал сброса и генерируется по клоку, но ведь применяется(так как вход асинхронный) тогда, когда долетел по линии. И это бы ладно, только ведь он и отменяется тоже в произвольный момент времени. Синтезатор прав - это ошибка. Хотя и индусов понять можно, они-то вынуждены делать "для всех": если сделать синхронный сброс для empty, то есть вероятность, что кто-нибудь этот empty всё таки не сбросит. Они выбрали меньшее из зол - шанс поймать метастабильность по отмене ресета значительно ниже. Как бороться? Сделать своё. Фифо применяются часто - не будет пустой тратой времени.
  12. Действительно, зачем своё время тратить на поиск, пусть лучше другие его тратят :( Всё делалось по диаграммам из доков.
  13. Вы правы. Я не посмотрел внимательно, а у меня в рабочем варианте как раз была конкатенация std_logic и std_logic_vector. Прошу прощения, что внёс смуту :)
  14. Да, у меня симплифай - всё работает.
  15. Не правда, можно. ТС: 2. Если Вы видите преимущество в их применении, то можно. Я лично предпочитаю следующую связку, нежели стандартную. use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; 3. Преобразования типов там действительно нету. 4. Поднесите case либо под process со списком чувствительности, либо под generate. Например так: process (vADDR, VDin) begin case (vADDR(6)&vADDR(1)) is when "00" => att_latch<=VDin(1 downto 0); when "01" => att_latch<=VDin(3 downto 2); when "10" => att_latch<=VDin(5 downto 4); when others => att_latch<=VDin(7 downto 6); end case; end process;