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

Первые впечатления от ISE

А какие ктати последовательности решили использовать? Голда, Касами, что-то еще?

По поводу 13.1

Главный плюс возможность partial reconfiguration уже на этапе синтеза. Практически во всем(я пока страдаю только с микроблейзом), PlanAhead уже заменил Project Navigator. Причем пользоваться им значительно удобней. Добавлены "критикал варнингс", те самые, которые дествительно стоит читать. Возможность удобно разложить части проекта по кристаллу. Не сошлись констрейны -тут же подсвечиваешь проблемный путь в ФПГА, раскладываешь блочки,которые он соединяет поближе друг к другу - и вуаля!

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


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

Достало...

 

Итак, простейшая задача. Есть система на кристалле на основе Microblaze, работаю в ISE12.2. Вот что получается и что было бы в связке NiosII/Quartus.

 

1. Нужно добавить свои компоненты на шину. Генерирую мастером обертку и пользовательский модуль. Напрямую с шиной не работаю, работаю с пользовательским модулем через сгенерированную обертку. У регистрового интерфейса свои сигналы управления, у памяти свои. Кривые, IMHO. Но без обертки интерфейс еще страшнее.

Что будет в Nios II - Avalon MM, который можно реализовать в любой конфигурации - от простой к сложной. Мне дают адрес, CS, и строб чтения-записи. Куда пишу - в регистры или в память, сколько таких интерфейсов в модуле - мое личное дело.

 

2. Даже боюсь задуматься о том, как настроить приоритеты арбитража на доступ по шине в Microblaze и возможно ли это.

В Nios II - Show arbitaration и пишу доли для мастеров.

 

3. Нужно сделать coregen'ом функции памяти и FIFO для своих модулей. Делаю. То, сколько мучается coregen - сравнивать с MegaWizard в Quartus даже неприлично. Понятно, он еще запускает синтезатор и делает ngc. Вопрос только - а зачем?

4. Собираю, компилирую проект в ISE... Опа... Ошибка. Тот самый ngc для сгенерированных coregen-ом функций не находит на этапе трасляции. Лезу в Интернет, читаю - оказывается, надо в свойствах Translate указать дополнительные пути поиска в папку с проектом coregen'а. См. п. 3 - уже два геморроя - потерянное время и ошибки. Их нельзя было свалить как исходники и синтезировать вместе с проектом?

В Quartus проблемы п.3-4 нет вообще. Все быстро и легко собирается вместе.

 

5. Не работает. Ну бывает. Добавляю Chipscope - до этого в Microblaze его не использовал. Опять ошибка. Нет достаточного числа BSCAN. Собственно, на этом я сорвался и написал все это. Я догадываюсь, что они не поделили JTAG с отладочным модулем Microblaze и я должен с этим разбираться.

Что в NiosII/Quartus? Все отлично! Запускай SignalTap с NiosII вместе и смотри сигналы обращения к своим периферийным сигналам на шине.

 

6. Время компиляции. На этапе реализации (без учета синтеза, это еще минут 5) ISE мучает мой компьютер около 15 минут. Квартус вместе с синтезом укладывает проект схожей функциональности (притом, что он занимает раза в полтора меньше места в ПЛИС) примерно за 6-7 минут...

 

А я пошел опять читать сайт Xilinx. Наверное, найду, как сопрячь Chipscope и debug module/jtag uart, но так достало...

 

P.S. Разобрался - ChipScope надо добавлять через EDK. Ну пускай так. Попробую завтра. Про полтора раза меньше места я сгоряча немного загнул. Если считать объем, который дает Quartus для первого Stratix и Cyclone с I по IV за 100%, то результат ISE для Spartan 3 у меня получается где-то 120-130% по объему (при пересчете 2LC = 1Slice).

 

P.P.S. Ааа!!! Вырвать им руки! Ну ладно два ядра - сам чипскоп и его контроллер. Так встроенный чипскоп еще и линии данных/триггера выносит одной шиной на верхний уровень соединений системы на кристалле. Мне надо смотреть сигналы в модулях, внутри! Что мне, теперь их в исходниках модулей наружу вытаскивать? И как мне сигналы в шину сшивать?

 

Я даже не буду сравнивать с NiosII и SignalTapII. Ппц. Всё, всё в этих тулзах сплошная борьба со средствами разработки, превращающаяся в нереальный, комический спотыкач, требующий на каждое действие в два раза больше времени и мысли, чем у Altera.

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


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

Пока идет Implement

Например, в ISE блочную память со _всеми_ сигналами можно описать на HDL, в Кактусе - только через мегафункцию. Пример - синтезируемое Верилог-описание блочной памяти со сигналом разрешения _чтения_.

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

 

Наслышен о ChipEditor, который позволяет редактировать окончательный проект без привлечения новых прогонов ISE, вплоть до замены ножек.

В Кактусе такие вольности запрещены.

Не совсем понял... В Quartus в ChipPlanner создаете атомы, пишете уравнения, указываете между ними источники и приемники сигналов и запускаете Processing>Start>Start Check & Save All Netlist Changes. Запускается разводчик с флагом --eco. Быстро добавляет то, что сделали в Chip Planner.

 

Вообще, переносить ножки на уровне Netlist - это сильно. IMHO, эта практика с копанием на уровне топологии порочная - это как править объектные файлы в программе вместо исходников на C или при разводке платы не вносить изменения в схему, а добавлять связи в разводчике. Но если нужно создавать и перемещать перемещать отладочные ножки, то есть SignalProbe - с отдельным удобным диалогом настройки и быстрым режимом компиляции Processing>Start>Start Signal Probe Compilation, не затрагивающим разводку проекта.

 

Но за десять с лишним лет работы с Altera я ни разу не редактировал ничего на уровне ChipPlanner. Просто потому, что необходимости не было - Quartus и так все делал.

 

P.S. Откомпилировалось. Продолжаю мучиться. Добавил чипскоп, вынес в него какие надо сигналы из модуля (шину 8 бит и два строба), собрал, загрузил ПЛИС, запустил программу. Открываю чипскоп - вижу десять линий данных TriggerPort. Что там строб, что там данные, куда он их в EDK в единую шину побросал... Сплошные неудобства.

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


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

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

Порой сам компонент (если 1-2 или задаются через generic) вставить быстрей и проще, чем в гуях конфигурировать память, а потом почти точно так же вставлять этот компонент.)

 

Не совсем понял... В Quartus в ChipPlanner создаете атомы, пишете уравнения, указываете между ними источники и приемники сигналов и запускаете Processing>Start>Start Check & Save All Netlist Changes. Запускается разводчик с флагом --eco. Быстро добавляет то, что сделали в Chip Planner.

 

Вообще, переносить ножки на уровне Netlist - это сильно. IMHO, эта практика с копанием на уровне топологии порочная - это как править объектные файлы в программе вместо исходников на C или при разводке платы не вносить изменения в схему, а добавлять связи в разводчике. Но если нужно создавать и перемещать перемещать отладочные ножки, то есть SignalProbe - с отдельным удобным диалогом настройки и быстрым режимом компиляции Processing>Start>Start Signal Probe Compilation, не затрагивающим разводку проекта.

Опять же, иногда это удобно, когда проект тяжёлый и разводить долго. Несколько лет назад пользовался (а лет 10 назад регулярно). Сейчас да, давно так не делал.

 

P.S. Откомпилировалось. Продолжаю мучиться. Добавил чипскоп, вынес в него какие надо сигналы из модуля (шину 8 бит и два строба), собрал, загрузил ПЛИС, запустил программу. Открываю чипскоп - вижу десять линий данных TriggerPort. Что там строб, что там данные, куда он их в EDK в единую шину побросал... Сплошные неудобства.

В 12-м чипскопом нало пользовался, но имхо в обоих всё ещё нужно было отдельно подгружать .cdc файл. В 13 версии эта опция включается галочкой при загрузке проекта.

 

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

 

Так что читать про все эти "первые впечатления от ISE" забавно на самом деле.) Это вопрос опыта, привычек и желания учиться. Когда 10 лет работаешь в одной среде, с кристаллами одной фирмы, "пригрелся", всё уже знакомое и понятное, многое делается просто на автомате. И переход на другую платформу может быть тягостным и неприятным. Ну как же - тут у меня всё отлично получалось, всё было логично и понятно! 5сек и всё готово. А тут засунули не пойми-разбери куда, это же заново учиться надо.

 

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

 

P.S. У нас сотрудники молодые недавно пришли, до этого как раз с Альтеры. Поначалу тоже ворчали на ISE. Но освоились довольно быстро и сейчас хорошо спокойно работают. И на вопрос "где удобней работать?" уже задумываются.)

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


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

Так что читать про все эти "первые впечатления от ISE" забавно на самом деле.) Это вопрос опыта, привычек и желания учиться. Когда 10 лет работаешь в одной среде, с кристаллами одной фирмы, "пригрелся", всё уже знакомое и понятное, многое делается просто на автомате. И переход на другую платформу может быть тягостным и неприятным. Ну как же - тут у меня всё отлично получалось, всё было логично и понятно! 5сек и всё готово. А тут засунули не пойми-разбери куда, это же заново учиться надо.

Я же не начинающий, на ISE я работаю больше 3 лет в рамках одного проекта. Работаю не постоянно, но достаточно часто, чтобы не забывать уже выученные ходы. Но материться при работе не перестаю. Что ни начинаешь делать новое - примерно такие впечатления. А учитывая, что проект компилируется раза в 3 дольше, теряешь намного больше времени даже на пробы в процессе освоения. С тем же ChipScope - почти весь день сегодня убил. Помню, когда в Quartus стал осваивать SignalTap для Nios II - создал проект, нашел все узлы и все заработало.

 

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

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


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

3. Нужно сделать coregen'ом функции памяти и FIFO для своих модулей. Делаю. То, сколько мучается coregen - сравнивать с MegaWizard в Quartus даже неприлично. Понятно, он еще запускает синтезатор и делает ngc. Вопрос только - а зачем?

4. Собираю, компилирую проект в ISE... Опа... Ошибка. Тот самый ngc для сгенерированных coregen-ом функций не находит на этапе трасляции. Лезу в Интернет, читаю - оказывается, надо в свойствах Translate указать дополнительные пути поиска в папку с проектом coregen'а. См. п. 3 - уже два геморроя - потерянное время и ошибки. Их нельзя было свалить как исходники и синтезировать вместе с проектом?

В Quartus проблемы п.3-4 нет вообще. Все быстро и легко собирается вместе.

 

Вы Coregen ручками что-ли запускали?

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


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

Я же не начинающий, на ISE я работаю больше 3 лет в рамках одного проекта. Работаю не постоянно, но достаточно часто, чтобы не забывать уже выученные ходы. Но материться при работе не перестаю. Что ни начинаешь делать новое - примерно такие впечатления. А учитывая, что проект компилируется раза в 3 дольше, теряешь намного больше времени даже на пробы в процессе освоения. С тем же ChipScope - почти весь день сегодня убил. Помню, когда в Quartus стал осваивать SignalTap для Nios II - создал проект, нашел все узлы и все заработало.

 

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

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

 

Такие сложности бывают как раз когда приноровился работать с другим софтом и с наскоку пытаюсь делать в новом софте ровно также как привык в старом. Ну или тупь нападает. Эт нормально.)

 

Я вот тоже в Чиппланёре искал, как залочить GXB на нужное место. Или долго думал, почему он не показывает номера пинов трансиверов - это ведь так естественно: смотришь, и сразу видишь внутреннюю структуру кристалла, как расположены трансиверы, на какие ноги подключены, где PCI-E - то, что PCB дизайнеры первым делом спрашивают. В ISE это видно в любом редакторе.

 

Вы Coregen ручками что-ли запускали?

Вряд ли. В Квартусе он через Tools запускается. А в ISE, чтобы корген в текущем проекте открылся запускать нужно было через New Source.

Недоработка эргономическая вообще-то, в 13.1 исправили.

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

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


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

Вы Coregen ручками что-ли запускали?

Да, ручками. У меня есть несколько модулей (реализующих определенные конфигурации блочной памяти, с регистрами, инициализацией и т.д.), которые используются в разных пользовательских ядрах, интегрирующихся в EDK. Какие-то одинаковые, какие-то разные. Я сделал в отдельной папке проект .cgp, свалил туда все ядра. Получил вот эту проблему:"ERROR:NgdBuild:604 logical block could not be resolved...". Вкратце - EDK при создании нетлиста не копирует .ngc, сделанный корегеном. Неважно даже, в какой папке его сделать.

 

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

Проблема с интеграцией с EDK. Если добавить внешний чипскоп - не компилируется, так как при трансляции они конфликтуют по доступу к bscan с jtag-uart. Если добавить через EDK, то все компилируется, но при выборе источников триггеров/данных видны только сигналы верхнего уровня системы на кристалле, которые мне не нужны. Можно назначить ерунду в EDK, а потом их переделать в Chip Editor на правильные источники сигналов, но после того, как я пошел этим путем и перестроил соединения ILA с нужными сигналами а потом запустил генерацию битстрима, я увидел ошибку, которой еще ни разу не видел в Windows - что приложение не работает.

 

Повторюсь, может быть, это проблемы версии 12.2. Если скажете, что в какой-то 13 версии они поправили эти проблемы - попробую. Но в рамках текущего проекта - это еще вопрос, так как мне их нужно сделать для ядра, которое я потом использую в EDK.

 

P.S. Но лучше я решу эти проблемы без чипскопа, чем буду убеждать программиста, что после того, как он перетащил приложение с LwIP под uC/OS-II с 10.3 на 12.2, ему надо повторить все это под 13.2. Тем более, что я уже понял, где ошибка - при переходе от нумерации [0:n] по всем шинам в Microblaze к [n:0] в моих проектах не так перекрутил шины Bus2IP_WrCE и RdCE при записи в регистры.

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


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

Да, ручками. У меня есть несколько модулей (реализующих определенные конфигурации блочной памяти, с регистрами, инициализацией и т.д.), которые используются в разных пользовательских ядрах, интегрирующихся в EDK. Какие-то одинаковые, какие-то разные. Я сделал в отдельной папке проект .cgp, свалил туда все ядра. Получил вот эту проблему:"ERROR:NgdBuild:604 logical block could not be resolved...". Вкратце - EDK при создании нетлиста не копирует .ngc, сделанный корегеном. Неважно даже, в какой папке его сделать.

 

Так может в этом и дело? Если Вы сидите в среде, то и генерите корки через New Source. Иначе - всё ручками.

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


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

А в ISE, чтобы корген в текущем проекте открылся запускать нужно было через New Source.

Недоработка эргономическая вообще-то, в 13.1 исправили.

Так может в этом и дело? Если Вы сидите в среде, то и генерите корки через New Source. Иначе - всё ручками.

Я бы с радостью, но не знаю, в каком. :) В том, в котором на верхнем уровне файл, созданный в EDK? Не думаю, что поможет.

К тому же у меня два проекта - один на devkit, другой на плате заказчика. Разная периферия, разные ПЛИС и одни и те же pcores для обработки.

 

 

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


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

Повторюсь, может быть, это проблемы версии 12.2. Если скажете, что в какой-то 13 версии они поправили эти проблемы - попробую. Но в рамках текущего проекта - это еще вопрос, так как мне их нужно сделать для ядра, которое я потом использую в EDK.

Я с Microblaze не работаю. Но коллеги уже месяца два отлаживают проект с ним, о проблемах с CS не говорили ни разу. Используют его постоянно. Были какие-то другие глюки с EDK, после установки апдейта для 13.1 они все ушли.

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


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

... С тем же ChipScope - почти весь день сегодня убил. Помню, когда в Quartus стал осваивать SignalTap для Nios II - создал проект, нашел все узлы и все заработало.

 

Прямо бальзам на душу! :biggrin:

 

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

Должно ведь быть!

Может кто подскажет как? Научите чайника! Были неудачные попытки через контроллер...

 

Именно сейчас бы пригодилось! ...Память RAM 2х портовая. Глянуть бы нутро?

 

...И еще вопросик. В Ква легко вручную менять состояния линий в СигналТапе(для внешнего управления процессом в железе). Как это сделать в ЧСкопе?

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


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

Прямо бальзам на душу! :biggrin:

 

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

Должно ведь быть!

Может кто подскажет как? Научите чайника! Были неудачные попытки через контроллер...

 

Именно сейчас бы пригодилось! ... Глянуть бы нутро?

 

...И еще вопросик. В Ква легко вручную менять состояния линий в СигналТапе(для внешнего управления процессом в железе). Как это сделать в ЧСкопе?

2х портовую память RAM, вы не посмотрите и в квартусе, посколку СигналТап использует 2-ой порт.

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


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

2х портовую память RAM, вы не посмотрите и в квартусе, посколку СигналТап использует 2-ой порт.

 

Ой спасибо! Хоть кто-то ответил!

Тогда делается финт ушами,- ставится параллельно однопортовка, где все записи от 2х портовки дублируются. По сути копия... Её и прослушивать JTAG-ом!

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


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

Тогда делается финт ушами,- ставится параллельно однопортовка, где все записи от 2х портовки дублируются. По сути копия...

3-портовка это называется %)

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


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

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

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

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

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

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

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

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

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

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