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

Есть ActiveHDL 7.1, Synplify 8.4 и Quartus 5.1. Все это хозяйство используется для создания firmware для EP2C8F256. На ранних стадиях проекта все было хорошо, поскольку синтезировались/компилировались только небольшие части всей системы. Ближе к завершению все больше и больше блоков подключается в финальную сборку для отработки вопросов совместного функционирования в пределах всей системы и все больше и больше времени уходит на компиляцию. Проект, как обычно, затянут констрейнами по самое "не могу". Синтез Synplify занимает, обычно, до 5 минут, раскладка в чип Quartus'ом - еще 20 минут. Попытки включить инкрементальную компиляцию в Quartus приводят просто к невыполнению требований по рабочим частотам.

 

В теории, с этим можно было жить - сильно страдает эффективность работы, но сама работа не останавливается. Однако пару часов назад Synplify "подарил" еще один подарок. На пятом десятке исходных файлов он начал ругаться на переполнение внутренних таблий маппера и вылетать с критической ошибкой. Попытка синтезировать части проекта Synplify, а окончательную сборку производить самим Quartus из ранее генеренных VQM ни к чему не привела - VQM пересекаются по именам используемых примитивов, а это в свою очередь выводит Quartus из душевного равновесия. Конечно, можно ручками поменять названия нескольких примитивов в VQM'ах и добиться сборки проекта, однако это отнимает значительную часть времени и не всегда безопасно, поскольку контекстный поиск и замена одних имен на другие может сработать не правильно. Да и сборка проекта из VQM результируется в увеличении занимаемых ресурсов, поскольку Quartus все же не так эффективно вырезает "лишнюю" логику из проекта.

 

Что-то подсказывает, что мы что-то делаем неправильно. EP2C8F256 - не самая большая микросхема, а рабочая станция на P4 3GHz с гигом памяти на борту не самый медленный компьютер. Во время компиляции Quartus использует порядка 800МБ памяти и дисковый своп не трогает, т.е. на данном этапе увеличение количества памяти ни к чему не приведет. Использование двухпроцессорных конфигураций также бессмысленно, поскольку компиляция в Quartus однопоточная. Возможно, ситуацию может улучшить новый Core 2. Изучая его микроархитектуру в своей программистской ипостаси мне очень понравились его растактовки по машинным инструкциям и возможностям параллелизма вкупе с внеочередным исполнением инструкций. Да и мой кодек, оптимизированный под P4, показал более чем двойное увеличение увеличение производительности на Core 2 на каждом ядре. Может и Quartus'у с Synplify'ем полегчает?

 

Вот, собственно, и вопросы:

1. Кто как борется с большими проектами - более 6-7 тысяч логических ячеек для чипов Altera?

2. Кто какое железо использует под разработкой и есть ли реальные впечатления от использования Core 2?

3. Как помирить Synplify с большим количеством файлов исходников?

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


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

Синтез Synplify занимает, обычно, до 5 минут, раскладка вчип Quartus'ом - еще 20 минут.

И вы называете это большим проектом???

На пятом десятке исходных файлов

Что ж так много-то? Может, вам пересмотреть структуру проекта?

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


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

Вот, собственно, и вопросы:

1. Кто как борется с большими проектами - более 6-7 тысяч логических ячеек для чипов Altera?

2. Кто какое железо использует под разработкой и есть ли реальные впечатления от использования Core 2?

3. Как помирить Synplify с большим количеством файлов исходников?

 

У меня сейчас 9К ячеек. Все собирается за 10 с половиной минут (синтез+фиттер+фссемблер+тайминг-аналайзер). Машина состоит из двух 275-х оптеронов и 4 гига памяти. Квартус 64-битный. Синплифи не используется в принципе, ибо ничего полезного не дает. И это разве большой проект?

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


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

У меня сейчас 9К ячеек. Все собирается за 10 с половиной минут (синтез+фиттер+фссемблер+тайминг-аналайзер). Машина состоит из двух 275-х оптеронов и 4 гига памяти. Квартус 64-битный.

 

Так 64-битный Квартус дает существенный выигрыш по быстродействию? А под какой ОС собираете? У нас тоже можно добиться 10 минут, если повыключать оптимизацию Квартуса - особенно много занимает комбинаторный ресинтез и ретайминг регистров. Однако проект после этого не работает на требуемых частотах. У нас используется самый медленный чип семейства, а рабочие частоты все в районе 130MHz. Вот и приходится извращаться с оптимизацией и ресинтезом.

 

Синплифи не используется в принципе, ибо ничего полезного не дает.

У нас проект синтезированный с VHDL Квартусом разгоняется до 125MHz, то же самое после Synplify - 130 с лишним. После имплементации Quartus only занимает в среднем на 5-10% ячеек больше, чем после Synplify. Ну не умеет Quartus нормально синтезировать VHDL :cranky:

 

Что ж так много-то? Может, вам пересмотреть структуру проекта?

Устройство большое, или скорее, разноплановое. Обычно мы стараемся в одном файле размещать не более одного entity, но даже и в этом случае средний размер файла редко меньше 10-15kB - ну болтливый язык VHDL - ну что с ним сделаешь ;)

 

И вы называете это большим проектом???

Может быть он и маленький, но опыта работы с более крупными у нас еще не было. Потому и пытаемся научиться.

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


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

Так 64-битный Квартус дает существенный выигрыш по быстродействию? А под какой ОС собираете? У нас тоже можно добиться 10 минут, если повыключать оптимизацию Квартуса - особенно много занимает комбинаторный ресинтез и ретайминг регистров. Однако проект после этого не работает на требуемых частотах. У нас используется самый медленный чип семейства, а рабочие частоты все в районе 130MHz. Вот и приходится извращаться с оптимизацией и ресинтезом.

 

ОС FC4 x86_64 smp. Проц я перепутал - оптероны 270-е, а не 275.

 

64 битный квартус дает у меня увеличение скорости где-то в 1.3-1.5 раз по сравнению с 32-битным на той же платформе.

 

А хотите использовать синтезатор квартуса в полную силу - так таймквест включите. Вроде должен все констрейны упихать. И при этом физические оптимизации возможно удасться не использовать. Я им не пользуюсь, так как мне скорость пофигу, у меня просто проверка функциональности перед запихиванием в asic.

 

З.Ы. Включил все ресинтезы, дупликации и ретайминги - стало на 3.5 минуты дольше.

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


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

Я им не пользуюсь, так как мне скорость пофигу, у меня просто проверка функциональности перед запихиванием в asic.
А вы попытайтесь его еще по частоте "нагнуть" почти до насыщения выбранного семейства, и удовольствие превратится в ниже среднего - будет тех самых 20 минут а то и больше. Да и используемый вами Stratix это все таки машинка немного другого порядка нежели Cyclone II.

 

Если я правильно вас понял, то никаких фичей типа инкрементальной компиляции или back-annotation использовать не получается? Жаль, поскольку в документации обещают серьезное уменьшение времени компиляции без ухудшения результатов.

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


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

А вы попытайтесь его еще по частоте "нагнуть" почти до насыщения выбранного семейства, и удовольствие превратится в ниже среднего - будет тех самых 20 минут а то и больше. Да и используемый вами Stratix это все таки машинка немного другого порядка нежели Cyclone II.

 

Если я правильно вас понял, то никаких фичей типа инкрементальной компиляции или back-annotation использовать не получается? Жаль, поскольку в документации обещают серьезное уменьшение времени компиляции без ухудшения результатов.

 

Попытался - так что констрейны не сошлись. Время почти не изменилось. Использую я на данный момент циклон (не 2), а не стратикс.

 

Инкрементальная компиляция вкупе с LogicLock и партишенами работает на ура и без проблем, но я не юзаю, меня на таких небольших проектах все устраивает и без них.

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


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

хмм а что нибудь вроде Modular design или RPM в альтере нет ?

развести блок 1 раз, записать размещение, и потом он не будет переразводиться :)

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


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

Что ж так много-то? Может, вам пересмотретьструктуру проекта?

Устройство большое, или скорее, разноплановое.

Ну и что? Но, по-моему, пять десятков файлов --- это многовато для такого дизайна.

 

Обычно мы стараемся в одном файле размещать не более одного entity,

Правильно.

 

но даже и в этом случае средний размер файла редко меньше 10-15kB - ну болтливый язык VHDL - ну что с ним сделаешь ;)

Это вообще ни при чем. Кого интересует размер файла?

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


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

хмм а что нибудь вроде Modular design или RPM в альтере нет ?

развести блок 1 раз, записать размещение, и потом он не будет переразводиться :)

 

Я же только что написал - LogicLock с партишенами.

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


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

...пару часов назад Synplify "подарил" еще один подарок. На пятом десятке исходных файлов он начал ругаться на переполнение внутренних таблий маппера и вылетать с критической ошибкой. .....

....Как помирить Synplify с большим количеством файлов исходников?

Было подобное, изучил проблему, пришел к выводу, что все версии

Синплифай начиная с 8.0 и вплоть до 8.5 имеют багов больше чем "дозволено".

Вероятность их проявления как раз тем выше, чем сложнее проект

(мои проекты действительно были сложными со всех точек зрения!). Нормальная версия

Синплифай (допустимое количество багов) - 8.6.1. С ней пока проблем нет.

Алдек также нужно проапгрейдить в соответствии с используемыми версиями Синплифай и Квартус (библиотеки, design flow).

Несколько проектов перевел на Квартус 6.0сп1. Проблем нет,

похоже, PAR идет на ~20% быстрее. Да, использую Windows. Проекты на Стратиксах.

Если проект на верилоге - от хорошо разводится одним Квартусом

(и синтез, и PAR). Если на VHDL - лучше использовать сторонний

синтезатор. Но у шестого VHDL стал также лучше (имхо, подробно проверить это еще не было возможности).

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


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

Вот ради интереса отбросил в сторону лень, написал SDC к проекту, включил таймквест, задал партиции и логиклок регионы - и тайминги стали такими, какими никогда не были, и время компиляции сократилось.

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


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

Вот ради интереса отбросил в сторону лень, написал SDC к проекту, включил таймквест, задал партиции и логиклок регионы - и тайминги стали такими, какими никогда не были, и время компиляции сократилось.

А можно поподробнее как это Вы делаете?

Желательно по шагам.

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


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

Добрый день.

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

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


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

hobgoblin

написаное тут применимо к теме (только надо учесть что ISE не поддерживает многопроцессорность)

 

ЗЫЖ хотя многие средства для ASIC/FPGA это уже умеют

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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