Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Среды разработки - обсуждаем САПРы _ PLL от Cyclone 10 LP не моделируется в Modelsim

Автор: AVR Aug 24 2018, 07:05

Использую Quartus Prime 17.1.0 build 590 + Modelsim Intel FPGA starter edition 10.5b.
Есть пример с PLL, который легко запустить - просто файл sim.bat, только пути поправить:
 test_pll.zip ( 7.06 килобайт ) : 12

Наблюдается странная проблема:


Делаю резет как положено, на вход 200 МГц, что допустимо, тем более в симуляторе. Locked никогда не поднимается. Что я делаю не так?

Читал о всех возможных причинах неработоспособности PLL при моделировании - отсутствие сброса, инициализации, недостаточная точность модели, но у меня ведь 1ns/1ps и этого достаточно.
Самое интересное, что внутри компонента altlvds_rx встроенный в него PLL работает в модели, а ведь там то же самое altpll.

Автор: Flip-fl0p Aug 24 2018, 07:09

Попробуйте подольше начальный сброс подержать....
Т.е сначала ничего не подаете. Потом подаете сброс, держите какое-то время и снимаете....
У меня только так на моделировании PLL Завелся. Но если есть возможность не моделировать PLL лучше так и делать. Иначе скорость моделирования уменьшается в разы. Фактически быстрее будет отладить автомат управления фазой, и отлаживаться по signal tap, чем ждать результатов моделирования.
Если запустите все-же моделирование PLL учтите, что в прошлых версиях сигнал ответа от PLL phase_done раньше формировался с ошибкой (ошибка только в моделировании, в реальном железе все нормально), исправили ли они в более новых версиях Quartus - не знаю.

Автор: AVR Aug 24 2018, 07:21

Цитата(Flip-fl0p @ Aug 24 2018, 10:09) *
Попробуйте подольше начальный сброс подержать....
Т.е сначала ничего не подаете. Потом подаете сброс, держите какое-то время и снимаете....
У меня только так на моделировании PLL Завелся. Но если есть возможность не моделировать PLL лучше так и делать. Иначе скорость моделирования уменьшается в разы. Фактически быстрее будет отладить автомат управления фазой, и отлаживаться по signal tap, чем ждать результатов моделирования.

Вот, 15 мкс жду, потом 15 мкс сбрасываю, более чем достаточно:

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

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

Автор: iosifk Aug 24 2018, 07:21

Цитата(AVR @ Aug 24 2018, 10:05) *
Locked никогда не поднимается. Что я делаю не так?
Читал о всех возможных причинах неработоспособности PLL при моделировании - отсутствие сброса, инициализации, недостаточная точность модели, но у меня ведь 1ns/1ps и этого достаточно.


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

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

Автор: AVR Aug 24 2018, 07:37

Цитата(iosifk @ Aug 24 2018, 10:21) *
Я думаю, что для altpll в ее описании где-то сидит задержка по срабатыванию захвата. Наверняка она зависит от разрядности счетчиков и от времени их заполнения входными импульсами...
Надо найти это место и сделать симуляцию больше по времени или солько для симуляции эту задержку покоцать.
Вот у Ксайлинкса есть примитив глобального сброса после загрузки. Он требуется для симуляции памяти, так как мне лень тупо ждать в RTL симуляции, я переношу его в рабочую папку и там убираю задержку...

100 мкс жду, 100 мкс сброс висит, далее 500 миллисекунд и ничего опять. Мне кажется это запредельно, в altlvds_rx это заводится за микросекунды.

Мне очевидно наличие бага. Слепо предположим - это баг. Что можно с этим сделать? Скомпилировать другую версию библиотек? Взять старую версию Modelsim? Нужно чтоб Cyclone 10 LP умела версия. Может Quartus Prime 18? Может версию для Linux?

Автор: iosifk Aug 24 2018, 07:43

Цитата(AVR @ Aug 24 2018, 10:37) *
100 мкс жду, 100 мкс сброс висит, далее 500 миллисекунд и ничего опять. Мне кажется это запредельно, в altlvds_rx это заводится за микросекунды.

Мне очевидно наличие бага. Слепо предположим - это баг. Что можно с этим сделать? Скомпилировать другую версию библиотек? Взять старую версию Modelsim? Нужно чтоб Cyclone 10 LP умела версия. Может Quartus Prime 18? Может версию для Linux?


Первое что надо делать - официально обратиться в техподдержку Альтеры. Второе - тоже самое написать на Альтеровский форум.
Просто, если это баг, то там статистика больше.
Потом на калькуляторе посчитать, как я написал в предыдущем посте про время симуляции. Наверняка в ПЛЛ задержка определяется счетчиками, и задается в параметрах. Поэтому время может и отличаться на порядки...

Автор: AVR Aug 24 2018, 07:52

Цитата(iosifk @ Aug 24 2018, 10:43) *
Первое что надо делать - официально обратиться в техподдержку Альтеры. Второе - тоже самое написать на Альтеровский форум.
Просто, если это баг, то там статистика больше.
Потом на калькуляторе посчитать, как я написал в предыдущем посте про время симуляции. Наверняка в ПЛЛ задержка определяется счетчиками, и задается в параметрах. Поэтому время может и отличаться на порядки...

Время задается в sim.do, run 500ms. Прописал в файле pll масштаб из 1ps/1ps в 1ps/1fs, в основном файле теста тоже такие единицы и поправил периоды - опять ноль эффекта.

Я сейчас напишу им в техподдержку, но создавал тему и думал многие этим пользуются, уж PLL это вообще товар первой необходимости. Странно что ни у кого бага с PLL нет, или решается большим временем моделирования. В Xilinx ISE/Vivado проблем с PLL вообще ноль - работает с пол оборота в обоих ихних симуляторах.

Автор: warrior-2001 Aug 24 2018, 08:59

Приветствую.
Даю наводку - а что за порт такой у pll - inclk0(inclk0)?
И где он на времянке?

Автор: AVR Aug 24 2018, 09:23

Цитата(warrior-2001 @ Aug 24 2018, 11:59) *
Даю наводку - а что за порт такой у pll - inclk0(inclk0)?
И где он на времянке?

Ох елки, это эпический фейспалм с пробитием моей пустой черепной коробки...
Тем не менее, после исправления - результат такой же. Неделю назад пробовал аналогичный пример в составе другого проекта, тогда я подать входную частоту не забыл. Результат все равно - на выходах Z.

Вот версия с исправлением:
 test_pll2.zip ( 7.19 килобайт ) : 9

Не работает все равно. Выведены внутренние сигналы модели PLL, этих сигналов там много. Многие висят в Z состоянии. Не понимаю почему. Входная тактовая теперь видна.

Автор: Sergey_Bekrenyov Aug 24 2018, 17:55

Цитата(AVR @ Aug 24 2018, 12:23) *
Ох елки, это эпический фейспалм с пробитием моей пустой черепной коробки...
Тем не менее, после исправления - результат такой же. Неделю назад пробовал аналогичный пример в составе другого проекта, тогда я подать входную частоту не забыл. Результат все равно - на выходах Z.

Вот версия с исправлением:
 test_pll2.zip ( 7.19 килобайт ) : 9

Не работает все равно. Выведены внутренние сигналы модели PLL, этих сигналов там много. Многие висят в Z состоянии. Не понимаю почему. Входная тактовая теперь видна.


еще в Cyclone V надо было модель PLL использовать, а не файл для синтеза. У Вас скорее всего Modelsim пишет warning типа "PLL is not bound"

поищите у себя в папке проекта msim_setup.tcl и проверьте какой файл команда "com" компилирует

Автор: AVR Aug 25 2018, 19:09

Цитата(Sergey_Bekrenyov @ Aug 24 2018, 20:55) *
еще в Cyclone V надо было модель PLL использовать, а не файл для синтеза. У Вас скорее всего Modelsim пишет warning типа "PLL is not bound"
поищите у себя в папке проекта msim_setup.tcl и проверьте какой файл команда "com" компилирует

Вот том то и беда, что не припоминаю такого варнинга, ни единой ошибки. Самое смешное что в altlvds_rx/tx если включать PLL - всё прекрасно моделируется! Но отдельный PLL я ничего не компилирую, вот что есть в связке Quartus+Modelsim - то и должно по идее быть идеально совместимо между собой.

Автор: Sergey_Bekrenyov Aug 26 2018, 16:47

Цитата(AVR @ Aug 25 2018, 22:09) *
.. вот что есть в связке Quartus+Modelsim - то и должно по идее быть идеально совместимо между собой.


Нy ведь и программировать надо без ошибок в идеальном случае sm.gif

Я лучше сам напишу скрипт и буду свои ошибки исправлять, а не "индийского GUI" ( привет Кузьмичу sm.gif )

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)