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

Можно ли победить Timing Errors

Не знаю что такое retiming. Где он включается?

это разрешение синтезатору, мапперу, фитеру передвигать регистры, которые вы уже описали в коде, между слоями логики, для обеспечения быстродействия. Штука полезная, но порой опасная.

"Мультицикловые констрейны и те, которые можно сунуть в игнор" - можно для чайника рассказать что это?

мультициклы

 

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


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

И его еще дорабатывать сильно надо, но при добавлении чего-либо в него, количество ошибок снова растет.

Еще раз: сделайте в floorplan в PlanAhead, разбейте проект на партиции - вы сможете предотвратить перемещение тех кусков проекта, которые уже размещены правильно.

 

Не знаю что такое retiming. Где он включается?

Register retiming, в настройках PAR.

 

Осознаю, что добавление триггеров увеличивает скорость работы. Но как их добавить? В ручную через FPGAEditor?

Нет конечно.

У вас есть код типа:

always @(posedge clk)
   begin
      a<=b+c+d+e+f+g+h+i;
   end

То есть много логики в один такт.

Вы из него делаете

always @(posedge clk)
   begin
      a1<=b+c;
      a2<=d+e;
      a3<=f+g;
      a4<=h+i;
      a12<=a1+a2;
      a34<=a3+a4;
      a<=a12+a34;
   end

Добавили 2 ступени триггеров.

 

"Мультицикловые констрейны и те, которые можно сунуть в игнор" - можно для чайника рассказать что это??

Например, вы знаете, что enable некой группы триггеров у вас по дизайну работает четко не чаще, чем раз в два такта. Вы можете пути между этими триггерами объявить в два цикла, и компилятор будет знать, что эти пути можно укладывать в 5 ns, несмотря на тактовую в 400MHz.

 

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


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

Хочу рассказать о моем изумлении при встрече с одним уникумом, который достигал ошеломительных цифр применяя Матлаб. Он там разрисовывал макроячейку своей микросхемы и вел на основании такого элемента и её маски(для переноса!) моделирование в Матлабе. Он получал и фильтры и ФФТ на 600МГц тактовой. Сам контролировал укладку в чипе всех элементов.

Интересно, а можно подробнее?

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


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

Если честно, прочитал только завязку дискусии и последнюю страницу, так что может чего и пропустил. Но нет сил просто.. )

Так вот.

Всё это, если честно, полный бред. И про 400МГц на V-4, и про 600(это вообще отжиг)) ). И даже фильтры на DSP не работают на таких частота, если их число больше, чем в одном столбце приходится на один фильтр. Для V-4 со скоростью -10 при 85% забитии кристалла максимум, что выжимал(хотя стараля, использовал только 2-х!! входовые мультиплексоры и т.д.) это 270 МГц. Дальше роутер начинает проводить совершенно нереальные соединения, и в итоге, ещё ухудшает времянку. Для -11, ну ещё 50 МГц - это потолок. Так что, поменьше иллюзий.

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


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

Если честно, прочитал только завязку дискусии и последнюю страницу, так что может чего и пропустил. Но нет сил просто.. )

Так вот.

Всё это, если честно, полный бред. И про 400МГц на V-4, и про 600(это вообще отжиг)) ). И даже фильтры на DSP не работают на таких частота, если их число больше, чем в одном столбце приходится на один фильтр. Для V-4 со скоростью -10 при 85% забитии кристалла максимум, что выжимал(хотя стараля, использовал только 2-х!! входовые мультиплексоры и т.д.) это 270 МГц. Дальше роутер начинает проводить совершенно нереальные соединения, и в итоге, ещё ухудшает времянку. Для -11, ну ещё 50 МГц - это потолок. Так что, поменьше иллюзий.

 

Тут на самом деле не так все просто. Про 600 МГц я думаю имели ввиду только теоретическую скорость работы небольшой или плотноуложенной схемы. Просто в V4 даже такт такой не завести.

Что касается 450 МГц и фильтра на DSP, так он у меня был еще и полностью комплЕксный высокго порядка, и одно умножение занимало 4 DSP48, и 4 столбца сразу было использовано. Но и архитектура этого фильтра была не простой, использующей все возможности архитектуры, другое дело что логики практически никакой больше не было использовано, поэтому и такие цифры. Многое зависит от плотности логики и качества разводочных ресурсов. Ув. des00 утверждает что у Alter'ы с этим получше чем у Xilinx, хотя мы это еще не проверили.

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


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

И что, работал фильтр, занимающий 2 столбца на 400 МГц?! Извините, но не верю. Если можно, киньте усечённый кусочек( чего не жалко) на [email protected]). Мне было бы очень полезно.

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


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

Интересно, а можно подробнее?

 

Это было пару лет назад. Знаю, что связывался с альтерой о применении параметров маски , после чего сделал эксперимент для всех вариантов масок, чтобы убедиться в выгодности и преимущества по быстродействию при переносе.

Его любимым режимом был тогда ВИЗИВИНГ(как рисую, так и разводится!). Он отслеживал расположение внутренней топологии ФПЖА, чтобы оптимально легли ответственные ножки. Речь о "столбиках"(близко расположенные макроячейки) внутри ПЛИС. Так достигалось предельное быстродействие!..

 

У меня на это руки не дошли,-занят был, а потом поменял работу и связь только по тлф. По праздникам....

-------- Это бомба! Колюсь...

Кстати, он утверждал, что в маске весь секрет! Что пользователю не дают возможности разогнать ячейку до предельного значения быстродействия!!!!!!

На самом деле это из недокументированного.... Так что его заявление о 1000МГц при встрече на осенней выставке меня не смутили.

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


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

Ув. des00 утверждает что у Alter'ы с этим получше чем у Xilinx, хотя мы это еще не проверили.

как бы начали проверять в соседней теме, но народ как то не шибко этим интересуется.

 

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


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

И что, работал фильтр, занимающий 2 столбца на 400 МГц?! Извините, но не верю. Если можно, киньте усечённый кусочек( чего не жалко) на [email protected]). Мне было бы очень полезно.

 

Конечно работал, собственно чему там не работать? Все элементы на этой частоте работают по даташиту, все полностью законвейерезировано было, разводочные ресурсы в основном использованы специальные, которые между DSP48 проложены. Выкладывать не буду, лень. Там половина в схематике была сделана - зеленый еще был.

 

как бы начали проверять в соседней теме, но народ как то не шибко этим интересуется.

 

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

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


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

Продолжим. Ошибки побеждены. Минимальный запас по setup есть.

Посмотрел как 400МГц часть разложилась на кристалл - схема раскинулась аж на пол кристалла.

Есть желание сделать 2 вещи:

1) создать Pblock и указать чтобы вся 400МГц часть располагалась в этом блоке

2) создать partition с 400МГц частью, чтобы раз и навсегда отладить этот кусок и не зависеть от того как будет написана остальная часть проекта

 

Читаю мануал к PlanAhead. Прочитал Hierarchical_Design_Methodology_Guide и PlanAhead_Tutorial_Design_Preservation. Да, и видео посмотрел с оф. сайта.

Вроде все просто, но применить эти знания не могу. Не могу понять как выделить нужные компоненты проекта для создания partition - если коры идут отдельным списком, то компоненты написанные мной на VHDL автоматичеки разбиваются на примитивы. Нужно все примитивы компонента выискивать?

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


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

Разобрался. В настройках компилятора в ISE надо галку поставить keep hierarchy. Создал один единственный компонент внутрь которого запихнул все, что связано с 400МГц. Pblock создал. Плохо что нельзя его создавать произвольным по форме - у меня почти все DSP48 использованы, поэтому блок получился длиной почти на вест кристал. После имплемента получил запас по setup 32пС. Затем этот же модуль назначил как partition. Снова сдела имплемент - и получил запас по setup равным 0. Это почему так?

Ну да ладно. Нажал remote partitions. Вроде как должен был создаться компонент для вставки в свой проект, но я так и не понял где он и как его вставить в общий проект. Подскажите!

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


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

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

 

Плохо что нельзя его создавать произвольным по форме - у меня почти все DSP48 использованы, поэтому блок получился длиной почти на вест кристал. После имплемента получил запас по

 

Почему нельзя - все можно - просто задаете несколько прямоугольников для одного pblock (Add Pblock rectange) можно даже не перекрывающихся.

Так можно нарисовать какую угодно форму. Причем необязательно чтобы в контур для LUT попадали все DSP или BRAM - это независимые друг от друга контуры

 

Удачи! Rob.

 

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


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

Так и не понимаю как сформированный partition из PlanAhead вставить обратно в ISE проект

 

След вашего пребывания в PlanAhead остается в *.ucf. Все там. Тупо перенесите в редакторе...

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


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

В UCF файле появился только констрейм AREA_GROUP, который относится к Pblock. А как с partition то быть. Мне надо чтобы модуль на 400МГц стал черным ящиком с неизменным размещением примитивов на кристалле.

Кстати при попытке скомпилировать в ISE тот же проект с новым UCF (добавлен только AREA_GROUP) - ISE выдал что недостаточно ресурсов, в то время как Planahead нормально развел. Чудеса.

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


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

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

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

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

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

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

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

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

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

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