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

Нуждаюсь в советах по констрейнам

Latch With Positive Gate Verilog Coding Example

 

....

 

Я очень уважительно отношусь к синтезатору альтеры то есть к квартусу. Если откомпилить данный файл в нем, то увидим, что там именно мультиплексор

 

Латч это и есть мультиплексор, выход которого закольцован на один из его же входов.

 

Избавьтесь от них всех! Для этого надо или явно описывать все пути if/case, или указывать "/* synthesis full_case parallel_case */" для case мульиплексора, если лень default писать. Это принципиально важно, так как такой мультиплексор, из которого получился латч, анализируется как триггер с клоком, а не как мультиплексор, что приведет к плохим последствиям.

 

ЗЫ. сорри, оказывается латчи уже устранили...

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


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

Те 4 клока-на них можно не обращать внимания-потом исправлю

главное не забыть.

 

в отчете есть такие строки

 

Timing constraint: Default period analysis for Clock 'BusRxClock_p'

Clock period: 13.559ns (frequency: 73.749MHz)

 

Timing constraint: Default period analysis for Clock 'Phy0RxClk'

Clock period: 13.007ns (frequency: 76.879MHz)

 

на первой странице топика

 

# Time constraints

NET "BusRxClock_n" TNM_NET = BusRxClock_n;

TIMESPEC TS_BusRxClock_n = PERIOD "BusRxClock_n" 8 ns HIGH 50%;

 

NET "BusRxClock_p" TNM_NET = BusRxClock_p;

TIMESPEC TS_BusRxClock_p = PERIOD "BusRxClock_p" 8 ns HIGH 50%;

 

NET "Phy0RxClk" TNM_NET = Phy0RxClk;

TIMESPEC TS_Phy0RxClk = PERIOD "Phy0RxClk" 8 ns HIGH 50%;

 

ничего что вы не проходите по времянкам ? :)

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


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

Ну по клокам все выполнено. Теперь следующий вопрос - где констрейны, описывающие окружение ПЛИСы, а именно допустимые времянки для работы с внешними устройствами, как синхронными, так и асинхронными (у вас там SRAM? Ее тоже надо обконстрейнить, чтобы все сигналы гарантировано вовремя приходили). Надо описать допустимые "pad to setup", "clock to pad" (в терминологии ксилинкса) для сигналов данных и управления.

 

ничего что вы не проходите по времянкам ? :)

наверное спецификацию изменили :) Иначе бы оно материлось в лог :)

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


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

Ну по клокам все выполнено. Теперь следующий вопрос - где констрейны, описывающие окружение ПЛИСы, а именно допустимые времянки для работы с внешними устройствами, как синхронными, так и асинхронными (у вас там SRAM? Ее тоже надо обконстрейнить, чтобы все сигналы гарантировано вовремя приходили). Надо описать допустимые "pad to setup", "clock to pad" (в терминологии ксилинкса) для сигналов данных и управления.

 

 

наверное спецификацию изменили :) Иначе бы оно материлось в лог :)

Я в курсе этого. Просто не всегда синтезатор указывает правильные числа. Он не учитывает такие вещи, что некоторые логические сравнения подготавливаются за пару тактов раньше

 

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

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


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

Я в курсе этого. Просто не всегда синтезатор указывает правильные числа. Он не учитывает такие вещи, что некоторые логические сравнения подготавливаются за пару тактов раньше

Вот тут ИМХО собака и порылась.Если мне память не изменяет ISE в отчете пишет только самый критичный путь, за ним могут быть замаскированы нужные вам. Тогда выкатывайте полный STA, с указанием всех путей по которым валяться констрейны или описывайте все мультициклы для корректного анализа.

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


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

Вот тут ИМХО собака и порылась.Если мне память не изменяет ISE в отчете пишет только самый критичный путь, за ним могут быть замаскированы нужные вам. Тогда выкатывайте полный STA, с указанием всех путей по которым валяться констрейны или описывайте все мультициклы для корректного анализа.

Может помогут timegoup или чето похожее на волшебную кнопку "чтоб все работало". Сейчас я добился по приему все работало (по всем 4-м каналам), обрабатывалосьб писалось в QDRII SRAM, считывалось с него и передавалось в другой фпга. Все это наблюдаю в чипскопе. Вот по передаче в обратную сторону чето не то. И это учитывая то что он указывает:

Timing constraint: Default period analysis for Clock 'Phy0RxClk'

Clock period: 13.007ns (frequency: 76.879MHz)

 

А у меня они все 125 в данный момент.

 

Также вспомнился модуль с приличной логикой, для которого он указал эту частоту в районе 700 МГц :)

 

 

И еще если в модуль подается 125 МГц и клок енабле раз в 4 такта (идет на все триггеры), то для таких модулей F max и не надо 125. А таких модулей у меня достаточно

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


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

И еще если в модуль подается 125 МГц и клок енабле раз в 4 такта (идет на все триггеры), то для таких модулей F max и не надо 125. А таких модулей у меня достаточно
Ну так и опишите мультицикл, чтобы разводчик не надрывался это утаптывать в 125 МГц.

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


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

Ну так и опишите мультицикл, чтобы разводчик не надрывался это утаптывать в 125 МГц.

Можно пример в студию. А пока же я попробую некоторые модули переписать. Ведь в конце то концов констрейны это крайность

 

Ну конечно я не имею ввиду распиновку и указание периодов клока.

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


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

А что ISE выдает в отчете "Place & Route report"?

Интересны табличка заполнения микросхемы и собственно соблюдения констрейнов.

 

рабочая частота 125 МГц, она же глобальная - это BusRxClock_n/p? Или на рабочие 125 МГц констрейнов не задано.

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


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

Ведь в конце то концов констрейны это крайность

А вот это основная тактическая ошибка. Констрейны это первоочередное, это основа основ, и их надо грамотно и полно описывать чуть ли не до написания HDL. А не крайность. И исполнение всех констрейнов - гарантия как и работоспособности, так и наиболее правильной оптимизации. Не ставьте их на второй план. Опишите как Вам советуют все мультициклы, все мегагерцы в том виде, в котором они есть. И все заработает.

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


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

А вот это основная тактическая ошибка. Констрейны это первоочередное, это основа основ, и их надо грамотно и полно описывать чуть ли не до написания HDL. А не крайность. И исполнение всех констрейнов - гарантия как и работоспособности, так и наиболее правильной оптимизации. Не ставьте их на второй план. Опишите как Вам советуют все мультициклы, все мегагерцы в том виде, в котором они есть. И все заработает.

Я уже писал-мегагерцы и распиновка у меня описаны изначально. Связь с внешним миром я делаю на примитивах и в IOB-соответственно констрейны не надо там. А вот по поводу констрейнов внутри, что они обязательны? Если все работает по одному клоку, а клок глобальный - то задержка сигналов всегда будет меньше чем задержка клока. Иначе все бы с опаской использовали сдвиговые регистры. Просто я данную проблему хотел временно констрейнами решить и параллельно переписать 3 модуля (они не такие маленькие-иначе проблемы бы не было), у которых F max немножко ниже чем 125. Кстати попробовал просинтезировать для спартана 6 - частота более чем в 2 раза поднялась... А мне запретили их поставить...а я та хотел, так хотел.... Была и другая причина более серьезная-в моем кристалле всего 8 BUFGMUX. А в плиз приходят 10 разных клоков... Эта проблема конечно решена, но она бы и не возникла в шестом. PS: Плиски были выбраны до меня.

 

Мультициклы мультициклы. Ну дайте уж пример :)

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


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

Я уже писал-мегагерцы и распиновка у меня описаны изначально. Связь с внешним миром я делаю на примитивах и в IOB-соответственно констрейны не надо там. А вот по поводу констрейнов внутри, что они обязательны?

IOB, примитивы. Это не отменяет констрейнов для наружнего мира. Проверить то, что Вам кажется, что руками сделано правильно, никогда не мешает.

По поводу констрейнов внутри - конечно нужно, именно в части мультициклов и false_path между клок-доменов, тактируемых асинхронными кловами и/или где нет важных путей.

 

Мультициклы мультициклы. Ну дайте уж пример :)

Блин. Был бы там стандартный SDC - дал бы примеров. А тут... Синтаксис какой-то мне неизвестный. Но в вашем Constraints Guide (или как ее) вроде вполне понятно описано.

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


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

Связь с внешним миром я делаю на примитивах и в IOB-соответственно констрейны не надо там.

В этом вы не правы...

Их очень нужно описывать, иначе можно даже и не узнать, что не выполнены спецификации...

Причем, как на вход, так и на выход.

 

А вот по поводу констрейнов внутри, что они обязательны? Если все работает по одному клоку, а клок глобальный - то задержка сигналов всегда будет меньше чем задержка клока. Иначе все бы с опаской использовали сдвиговые регистры.

Внутри, обычно, достаточно описания тактовой. _Но_ если все синхронно и синтезатор/PAR "все" понимают.

 

ЗЫ: Да, согласен с предыдущим оратором, если все однотактово, конечно.

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


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

Мультициклы мультициклы. Ну дайте уж пример :)
http://electronix.ru/forum/index.php?showtopic=66052&hl=

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


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

В этом вы не правы...

Их очень нужно описывать, иначе можно даже и не узнать, что не выполнены спецификации...

Причем, как на вход, так и на выход.

как так? если я сам пишу то как я могу не знать выполняю я требуемые спецификации или нет?

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


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

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

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

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

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

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

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

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

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

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