реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Большие проекты, как отлаживать?
edren_baton
сообщение Dec 12 2011, 10:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 13-10-08
Пользователь №: 40 915



Читая форум не раз натыкался на упоминания проектов, которые компилятся более получаса. Особо этому значения не придавал, т.к. работал только с "2-х, 3-х минутными проектами" ( с мыслью, что мне до такого расти и расти sm.gif ).

Сейчас столкнулся с проектом, который компилировался почти 40 минут. На моделировании, конечно, все работает, в железе - кривовато. И как быть с процессом отладки? не компилировать же по новой каждый раз?
Go to the top of the page
 
+Quote Post
Мур
сообщение Dec 12 2011, 10:15
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Инкрементная компиляция по регионам...

Она экономит до 50% времени. Там просто разводка не происходит, а остается прежняя. Именно в указанных регионах!
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 12 2011, 10:17
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(edren_baton @ Dec 12 2011, 14:06) *
Сейчас столкнулся с проектом, который компилировался почти 40 минут. На моделировании, конечно, все работает, в железе - кривовато. И как быть с процессом отладки? не компилировать же по новой каждый раз?


всего 40 минут? не так и много для хорошего проекта.
заведите сервер для компелирования, а на рабочей машине долбите файлы. Про инкрементальную компиляцию писать не буду, не работал с ней...
А вот почему же в железе кривовато? можно локализовать и по частям отладить.
Или же сказать себе, что архитектура не верна в принципе и искать другую архитектуру, которую легче отладить. Ну, например, можно сделать автомат на 100 состояний, а можно вместо него 1 или 2 микроконтроллера... И т.д.
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 12 2011, 10:20
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(edren_baton @ Dec 12 2011, 14:06) *
На моделировании, конечно, все работает, в железе - кривовато.

Инкрементальная компиляция конечно хорошо, но вот такого при правильных временных ограничениях и верной верификации быть не должно.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 12 2011, 10:38
Сообщение #5


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(edren_baton @ Dec 12 2011, 14:06) *
На моделировании, конечно, все работает, в железе - кривовато.

Если проект синхронный, то как писалось ранее:
Цитата(bogaev_roman @ Dec 12 2011, 14:20) *
Инкрементальная компиляция конечно хорошо, но вот такого при правильных временных ограничениях и верной верификации быть не должно.


А если есть узлы схемы с потенциальной метастабильностью, то их практически невозможно промоделировать, и, как правило, именно эти узлы доставляют максимум неприятностей.
Цитата(edren_baton @ Dec 12 2011, 14:06) *
И как быть с процессом отладки? не компилировать же по новой каждый раз?

Я бы рекомендовал отладить подобные узлы отдельно - при необходимости перекомпилируя столько раз, сколько будет необходимым для обеспечения стабильной работы (подбора правильных constraint’ов для Synthesis/Implementation). А потом интегрировать такие узлы в большой проект.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 12 2011, 11:04
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Boris_TS @ Dec 12 2011, 14:38) *
А если есть узлы схемы с потенциальной метастабильностью, то их практически невозможно промоделировать, и, как правило, именно эти узлы доставляют максимум неприятностей.

Если правильно задать все ограничения - частоты и их соотношения, тоже и с данными, и временной анализатор не выдаст временных ошибок - то в железе ошибок не будет с вероятностью 99%. Если соотношения не известны то дополнительно потребуются цепи пересинхронизации.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 12 2011, 11:24
Сообщение #7


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(bogaev_roman @ Dec 12 2011, 15:04) *
Если правильно задать все ограничения - частоты и их соотношения, тоже и с данными, и временной анализатор не выдаст временных ошибок - то в железе ошибок не будет с вероятностью 99%.
Конечно, всё задать надо. Но коли соотношения известны и заданы, то и метастабильности нет... а следовательно, и особых проблем тоже нет. Хотя иногда приходится и помучаться.

Цитата(bogaev_roman @ Dec 12 2011, 15:04) *
Если соотношения не известны то дополнительно потребуются цепи пересинхронизации.
Вот как раз подобные узлы я и имел ввиду. А с ними, как всегда, есть сложности, которые многократно обсуждались, в том числе и на этом форуме (надо лишь поискать слово «метастабильность»).
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Dec 12 2011, 18:08
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(edren_baton @ Dec 12 2011, 14:06) *
...
Сейчас столкнулся с проектом, который компилировался почти 40 минут. На моделировании, конечно, все работает, в железе - кривовато. И как быть с процессом отладки? не компилировать же по новой каждый раз?

Хорошо вам Кактусоводам, 40 минут это уже много...sm.gif Эх перевести бы вас всех на какой нибудь старый ISE.

Если вы в моделировании не сильны, а в железе всё равно не работает - для вас же придумали SignalTAP, Chipscope и Identify.
Go to the top of the page
 
+Quote Post
S_Hawk
сообщение Dec 12 2011, 20:11
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 3-06-08
Пользователь №: 38 035



я по 4 часа жду полной компиляции и около часа синтез на стратикс4-230. А что делать?...

Кстати, у меня синтез в один поток идет. Подумал, может AHDL виноват? Или на Verilog и VHDL Quartus тоже в один поток синтезирует?
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Dec 13 2011, 06:05
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Как правило, любой большой проект состоит из маленьких блоков, которые можно отлаживать отдельно от других.
Как вариант, проект может состоять из основного алгоритма, который отлаживается в первую очередь, а потом на него цепляются фичи и отлаживаются, имея в виду рабочесть уже отлаженного основного алгоритма.
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 13 2011, 15:28
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Цитата(bogaev_roman @ Dec 12 2011, 14:20) *
Инкрементальная компиляция конечно хорошо, но вот такого при правильных временных ограничениях и верной верификации быть не должно.

Разъясните кто нибудь, что такое верная верификация, как ее делать в квартусе, например?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 13 2011, 21:25
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Dec 13 2011, 19:28) *
Разъясните кто нибудь, что такое верная верификация, как ее делать в квартусе, например?

Да никак ее в квартусе не сделать для сложных проектов. Я имел ввиду сделать максимальное реальное тестовое покрытие для оборудования - если происходит сбой в железе, то проще написать направленный тест для поведенческого уровня.
Если это какая-нибудь система ЦОС типа цифровых приемо-передатчиков, то тут поможет совместное моделирование matlab/simulink модели из которой этот ЦПП и собирался и HDL-описание. Если это коммутатор с разных концов которого есть только СИшное описание интерфейсов процессоров и оборудования, то это специальные тесты на SV/СИ с полным контролем всех ключевых точек (допустим есть критичная statemachine у которого 100 состояний и требуется проверить, что каждое состояние выполняется правильно - составляется группа тестов, по результатам которых заполняется таблица о том, что такое-то состояние было проверено в таком то тесте, в результате оказывается что проверено 90 состояний чего вроде недостаточно и пишутся направленные тесты на оставшиеся состояния).
Вот у меня лично в последнее время был пример - на моделировании все работает (более 1000 тестов), а реально аппаратура повисала после нескольких минут работы при высокой загрузке - попросил верификаторов написать спецтесты на проверку переполнение буферов - оказалось не рассчитал размер буферов, происходило банальное переполнение. Мой косяк, но локальными тестами проверить было невозможно, т.к. интерфейс взаимодействия находится на системном уровне.
Go to the top of the page
 
+Quote Post
DevL
сообщение Dec 14 2011, 22:02
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 23-10-10
Из: астрал
Пользователь №: 60 371



Цитата(S_Hawk @ Dec 12 2011, 21:11) *
я по 4 часа жду полной компиляции и около часа синтез на стратикс4-230. А что делать?...

Кстати, у меня синтез в один поток идет. Подумал, может AHDL виноват? Или на Verilog и VHDL Quartus тоже в один поток синтезирует?


очень похоже на то что в один поток...

можно просто статистику посмотреть в Quartus

( один поток - один процессор? )
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 15 2011, 05:03
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(iosifk @ Dec 12 2011, 14:17) *
всего 40 минут? не так и много для хорошего проекта.

Кстати, забыл написать... Если Вы делаете при симуляции чтение данных из файла, а потом эти данные используете для задания например внешних воздействий на DUT, то проект не надо каждый раз компелировать. Просто меняете данные в файле, делаете сброс симуляции и пуск симуляции. Экономит время хорошо! Но, к сожалению все так отладить невозможно...
Кстати и выходные данные тоже полезно выводить в файл или хотя-бы на монитор, а не рыться в прорве сигналов. Ведь блольшинство частей проекта уже считаются отлаженными...
Как я это делаю, написано у меня в "Кратком курсе", в главе про отладку...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
tAmega
сообщение Dec 15 2011, 08:29
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



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

Весь проект разбивается на здоровенные функциональные блоки.
Предполагается что данные проходят последовательно все блоки от входа к выходу.
Далее берем первый блок, компилируем, делаем все что нужно, в составе всего проекта, значит весь проект
и подаем на вход первого блока реальные данные из файла, назовем файл 1.
И в процессе симуляции пишем данные с выхода блока в другой файл, файл 2.

Теперь пишем небольшой модуль, который будет "проигрывать" данные из файла 2 синхронно с выходными сигналами блока 1.
Сравниваем, когда все получилось, блок 1 в проекте можно заменить прогрывателем.

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

Для больших проектов, с огроменными последовательностями данных, когда никакого анализатора не хватит, это реальных выход отладить проект в behavioral.


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 02:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016