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

Нужна помощь в Quartus. возникли сложности с расположением элементов на ПЛИС.

Доброго времени суток. Когда меняю в проекте расположение элементов может полностью перестать работать....

Т.е. если к примеру добавляю что то... или двигаю элемент в чип планере... проект может перестать работать.

пробовал через TimeQuest. Но я его почти не знаю. и клоков у меня много.

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

И если кто то знает какие либо курсы в данном направлении, желательно где нибудь в Украине или России, тоже хотелось бы об этом узнать.

Зараннее спасибо.

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


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

И если кто то знает какие либо курсы в данном направлении, желательно где нибудь в Украине или России, тоже хотелось бы об этом узнать.

Зараннее спасибо.

 

http://digitallab.kiev.ua/we.htm

13________2007_.doc

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


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

Спасибо. Среди тем увы не увидел TimeQuest Analyzer и ClassicTime Analyzer.

И всё равно большое спасибо за информацию.

Ещё был бы признателен если бы подсказали насчет TimeQuest. Как в generate clock описывать. особенно если там клок уже генерируется из generate clock.

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

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


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

 

Звонил я в Киев,разговаривал с Лысенко.

Туго у них с этим делом(TimeQuest),сами ещё не освоили эту технологию.Так что....самому придётся разбираться.

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


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

У-у-у... как все запущено... Чему будущих инженеров учат.

MAX + PLUS II уже лет несколько как не поддерживается. Позавчерашний день можно сказать.

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


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

Возможно это связано с выбросами (Glitches). Очень уж характерный признак - работает/не работает в зависимости от настроек компиляции.

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

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

 

Вот большой кусок текста по этому вопросу, но, к сожалению еще без рисунков (фрагмент будущей методички для обучения молодых специалистов у нас на предпрятии, который я пишу)

 

Рассмотрим элементарный пример: двухвходвый элемент «И».

module simple_and

(

input

a,

b,

output

c

);

 

assign c = a & b;

 

endmodule

 

Уж проще этого примера и быть ничего не может. Вот как выглядит диаграмма функциональной симуляции этого модуля.

Однако, иногда, когда мы проводим временную симуляцию или проверяем работу этого модуля в реальной микросхеме с помощью осциллографа, как мы обнаруживаем невероятную вещь!

 

Почему это происходит? Давайте рассмотрим работу этого модуля в реальной микросхеме.

 

(Рисунок rtl) (Рисунок по кристаллу)

 

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

 

(рисунок)

 

Если посмотреть внимательнее, то можно обнаружить, что САПР сообщает нам то же самое в своих отчетах о компиляции. Вот как выглядят его предупреждения (хотя на первый взгляд эти сообщения не кажутся опасными):

 

(рисунок)

 

Естественным следствием этого является то, что мы видим на выходе. Так что, логическая ячейка работает совершенно правильно, хотя весь проект в целом - неправильно.

Еще хуже будет ситуация, если мы рассмотрим более сложный комбинационный модуль. Например, 16-битный сумматор. Его временная диаграмма при смене сигналов на входах выглядит просто катастрофически!

 

(рисунок)

 

Что же мы должны сделать, чтобы не иметь таких выбросов? Можем ли мы их избежать?

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

 

Вы сами поймете, если попробуете эту технику, в «промышленных масштабах», а точнее для крупного проекта, такое решение не подходит. Да и техника очень ненадежна, ведь задержка на самом деле не постоянна, она зависит от напряжения питания, от температуры кристалла. Сами производители ПЛИС не рекомендуют использовать задержки внутри ПЛИС для каких бы то ни было целей.

Других методов уничтожить выбросы не существует. Вся комбинационная логика, кроме тривиальных функций «не», когда на вход логической ячейке заходит только один сигнал, имеет выбросы при определенном стечении обстоятельств. Общий вывод:

 

Комбинационная логика всегда имеет выбросы.

 

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

 

 

4.4.2. Выбросы на сигнале установки регистра

Когда мы начинаем применять регистры в проекте, мы сразу сталкиваемся с проблемой выбросов. Откуда берутся выбросы, мы с вами рассмотрели в предыдущей главе. Теперь, рассмотрим, к каким последствиям ведет их наличие.

Когда появляется выброс на сигнале фиксации регистра, который срабатывает по уровню, он фиксирует данные, или перестает фиксировать данные (в зависимости, от того, был выброс положительным или отрицательным). Однако, если рассматривать текст описания «функционально», он не должен был этого делать!

Регистр, фиксирующий по фронту, также работает неправильно: он фиксирует данные на «паразитном» фронте выброса.

Расхождение реальной работы с результатами симуляции ведет к ошибкам. Обнаружить такие ошибки может только временная симуляция. Но, учитывая, что выбросы в проекте могут появляться и исчезать в зависимости от того, как САПР «разложила» проекте по площади кристалла, мы должны будем запускать временную симуляцию после каждой компиляции проекта и проверять все возможные состояния. Но симуляция крупного проекта – дело часов, а иногда суток, а достаточно подробная временная симуляция вообще может затянуться на несколько месяцев.

Ситуация, слишком знакомая многим начинающим инженерам: хотя изменения в тексте проекта минимальны, после компиляции он не работает. Если изменить настройки компиляции, проект может снова заработать. Основная причина таких «непонятных» сбоев – выбросы.

Чтобы не тратить рабочее время на непродуктивный перебор настроек компиляции (которые лучше использовать по их прямому назначению), мы с вами должны разработать такой подход, чтобы выбросы не влияли на работу нашего проекта.

Сделать проект совсем без выбросов невозможно, как сказано выше, любая комбинационная логика содержит выбросы. Нужно лишь, чтобы выбросы не попадали на входы фиксации данных регистров. Следовательно, те сигналы, на которых могут быть выбросы, а именно любая комбинационная логика, кроме тривиальной функции «не», не должна быть подключена к входам фиксации данных регистров.

 

Следует быть особо осторожным с сигналами, по событиям на которых, регистры фиксируют данные. Это всегда должны быть сигналы свободные от выбросов, то есть: выходы регистров или качественные сигналы, поступающие с выводов ПЛИС. Единственная операция, которая может проводиться с этими качественными сигналами, не приводящая к появлению выбросов – логическое «не» (инверсия).

То же самое относится и к сигналам асинхронной установки или сброса.

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


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

 

Интересно,а для чего нужно формировать клоки комбинационной логикой?Я до сих пор обходился только внешним global clock и PLL.

Или мне все эти годы везло с проектами?

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


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

Интересно,а для чего нужно формировать клоки комбинационной логикой?Я до сих пор обходился только внешним global clock и PLL.

Или мне все эти годы везло с проектами?

Вот в том то и дело, что не надо (клоки, тактовые сигналы). Но в асинхронной логике тактовые сигналы формируются отдельно для каждого регистра (не глобально). Вот здесь и нужна дополнительная осторожность. Как я догадываюсь в проблемном проекте использовалась асинхронная логика.

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


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

У меня похожая проблема (та что в сабже), только с пинами.

Один и тот же сигнал вывожу на ножки с разных банков - на одном все хорошо работает, а на другом - то есть сигнал, то нет. И в зависимости от компиляции и размещения - такие проблемы, то появляются, то исчезают.

Как быть?Что почитать?Может где про размещение хорошо написано?

Спасибо)

 

PS. Работаю на Cyclone

Изменено пользователем Egor-ka

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


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

У меня похожая проблема (та что в сабже), только с пинами.

Один и тот же сигнал вывожу на ножки с разных банков - на одном все хорошо работает, а на другом - то есть сигнал, то нет. И в зависимости от компиляции и размещения - такие проблемы, то появляются, то исчезают.

Как быть?Что почитать?Может где про размещение хорошо написано?

Спасибо)

 

PS. Работаю на Cyclone

 

1. А что говорит временной анализ после компиляции? Я имею ввиду, нет ли у Вас крититческих варнингов от TimeQuest.

2. Может у Вас синтезатор просто-напросто удалиляет часть логики из-за неизменных входов-выходов. При этом должны появляться варнинги.

3. Вы по SignalTap смотрите поведение?

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


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

Варнинги есть и достаточно много)

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

Поведение я смотрю по осциллографу.С SignalTap ни разу не работал((

Вот такие варнинги появляются:

Warning: Found pins functioning as undefined clocks and/or memory enables

Warning: Found node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew

Warning: Can't achieve timing requirement Clock Setup: 'altpll1:inst|altpll:altpll_component|_clk1' along 242 path(s). See Report window for details.

Warning: Can't achieve minimum setup and hold requirement clk along 1 path(s). See Report window for details.

Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details.

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


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

Знаю эти курсы http://digitallab.kiev.ua/we.htm

Лысенко наш завкаф))

Осваиваем FPGA на стендах от Altera UP2 (FLEX). Хороший метод обучения, нравится. Хоть все курсы по FPGA не дочитали(Verilog остался), но уровень чувствуется. На тех платных курсах наверное еще нокретные решения рассматриваются типа ядра NIOS и т.д. и т.п.

Изменено пользователем player999

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


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

Варнинги есть и достаточно много)

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

Поведение я смотрю по осциллографу.С SignalTap ни разу не работал((

Вот такие варнинги появляются:

Warning: Found pins functioning as undefined clocks and/or memory enables

Warning: Found node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew

Warning: Can't achieve timing requirement Clock Setup: 'altpll1:inst|altpll:altpll_component|_clk1' along 242 path(s). See Report window for details.

Warning: Can't achieve minimum setup and hold requirement clk along 1 path(s). See Report window for details.

Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details.

Если честно, я тоже новичок. Про первые 2 Вам квартус сам скажет - что это за недочеты (выделяем варнинг - жмем F1) и что с ними делать( или не делать).

А вот с таймингами лучше поработать. Открываете timequest и смотрите что имено не в порядке (если конечно временной анализ проводится с помощью него, а не внутреннего анализатора). Причем в Квартус 8 (а возможно это было и в 7,2)еще и наглядные картиночки в nimequest появились.

SignalTap советую попробовать - разобраться с ним (на моем уровне :) ) полчаса делов. И тогда про осциллограф во многих ситуациях можно забыть. Очень советую.

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


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

Качайте с Altera.com Quartus II handbook и внимательно изучайте раздел "Timing Verification" - там это все описано

 

Warning: Found pins functioning as undefined clocks and/or memory enables

В вашем проекте есть внешний вход тактового сигнала, но он не описан как тактовый - компилятор не знает его частоту и не сможет определить, будет ли работать ваш проект или нет. Читаем handbook

 

Warning: Can't achieve timing requirement Clock Setup: 'altpll1:inst|altpll:altpll_component|_clk1' along 242 path(s). See Report window for details.

Квартус Вам явно указывает, на то, что проект неработоспособен - время распространения сигнала из одного регистра в другой больше длительности периода тактового сигнала с выхода PLL.

Этот проект неработоспособен ! Он может и будет работать в отдельных частях, но полностью - нет. Для

того, чтобы он работал нужно откорректировать "провальные" пути распространения, коих, как квартус сообщает, 242 штуки. Открываете отчет компиляции, закладка "Timing analizer", пункт Clock Setup: 'altpll1:inst|altpll:altpll_component|_clk1' и получаете их список.

 

Warning: Found node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew

Это подтверждает мою теорию и выбросах - у вас в проекте есть регистры, тактовый сигнал которых берется из кобинационных функций, например:

always @ (posedge (a & B) )

my_reg <= c;

 

Такого делать нельзя, должно везде быть:

always @(global_clock_from_pin_or_pll_output)

my_reg <= c;

 

Иначе - выбросы на сигнале (a & B), которые не может анализировать timing analizer и ...

 

Вы наверно, как начинающий, все это в схематике нарисовали, но там будет тоже самое, что и в тексте.

 

Signal Tap II - великолепнейшая вешь, очень полезная для анализа "где сломалось". Однако выбросы он не увидит, т. к. фиксирует данные синхронно, а выбросы проявляются (псевдо)случайно.

 

Egor-ka, с пинами скорее всего тоже самое ! Вообще, если что-то "то работает, то не работает" от компиляции к компиляции, это шутки асинхронных цепей и порождаемых ею выбросов.

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


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

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

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

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

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

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

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

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

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

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