novartis 0 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Есть проект для квартуса (16.0). Он состоит из нескольких модулей. Частота работы модулей достаточно высокая 320МГц. Проект еще не написан и на 30%, а уже иногда не пролажу по частоте. Решил поступить таким образом. Создал design partition, создал logic lock регионы. Оставил пока только два модуля, остальные закоментарил. Скомпилил проект. Частоты удовлетворены. Отрицательных слаков нет. Зафиксировал регионы (и из положение, и их размеры). Запретил размещение логики других модулей в этих регионах. Скомпилил проект еще раз. Частоты удовлетворены. Установил для них Netlist Type : Post-Fit. То есть как я думал, это означает, что жестко прибил гвоздями расположение моих модулей к кристаллу, и теперь от компиляции к компиляции мои модули будут успешно пролазить по частоте. Но фиг то там. Подключаю другие модули - получаю отрицательные слаки в моих зафиксированных модулях. Отключаю новые модули - все равно получаю отрицательные слаки. На второй раз компиляции после отключения новых модулей - начинает проходить по частоте. Чтож я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба создал logic lock регионы Хоть вы и зафиксировали модули в логиклок-регионах, он всё равно, хоть и внутри них, но переразводит ваши модули при компиляции. Тут нужна инкрементальная компиляция. Признаться честно я пока с ней так и не разобрался, может вы одолеете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба Подключаю другие модули - получаю отрицательные слаки в моих зафиксированных модулях. Отключаю новые модули - все равно получаю отрицательные слаки. На второй раз компиляции после отключения новых модулей - начинает проходить по частоте. А что в отчёте сообщает - какие нетлисты для ваших партишинов были применены? Включена ли смарт-компиляция? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба А что в отчёте сообщает - какие нетлисты для ваших партишинов были применены? Включена ли смарт-компиляция? Use smart compilation Off Значит надо разбираться, как правильно сделать, то что я хочу :rolleyes: Сейчас включу смарт компиляцию Галочка установки Use smart compile не активна, так и должно быть? quartus версии standart edition, нашел, что Rapid Recompile для Аррии 10 в стандарте не поддерживается, качаю pro edition Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба Галочка установки Use smart compile не активна, так и должно быть? Нет, у меня активна. Нужно разбираться с этой опцией. А что Вы имеете ввиду под "Запретил размещение логики других модулей в этих регионах"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба Нет, у меня активна. Нужно разбираться с этой опцией. А что Вы имеете ввиду под "Запретил размещение логики других модулей в этих регионах"? Для logic lock региона выставил свойство Reserved в On А у вас квартус какой стандарт или pro? для Аррии 10 эта галочка активна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба Для logic lock региона выставил свойство Reserved в On А у вас квартус какой стандарт или pro? для Аррии 10 эта галочка активна? С некоторых пор я вообще перестал пользоваться logic lock регионами,иногда только мешают, только партишинами. Квартус стандарт, Аррия 10 не установлена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
johan 0 27 января, 2017 Опубликовано 27 января, 2017 · Жалоба А что в отчёте сообщает - какие нетлисты для ваших партишинов были применены? Включена ли смарт-компиляция? novartis, посмотрите всё-таки отчет о сборке. Вам нужен файл PROJECT_NAME.merge.rpt, там есть табличка: +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ; Partition Merge Netlist Types Used ; +--------------------------------+----------------+-------------------+------------------------+---------------------------------------------------------------------------------------------------+ ; Partition Name ; Partition Type; Netlist Type Used; Netlist Type Requested; Partition Contents ; +--------------------------------+----------------+-------------------+------------------------+---------------------------------------------------------------------------------------------------+ Где и будет написано, что он использовал. Если там будет Source, вместо Post-Fit, то надо смотреть лог компиляции, он там говорит, почему выбрал Source, вместо Post-Fit. Один из кейсов, если не ошибаюсь, у разных патрициях, которые общаются между собой выставлена разная оптимизация на "границах", и из-за этого происходит лишний пересинтез. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Вам нужен файл PROJECT_NAME.merge.rpt, там есть табличка: Посмотрел, там написано Post-Fit. Да и в репорте фиттера тоже везде написано, что применялось Post-Fit. +------------------+-----------------+--------------------+---------------------------+-------------------- ; Partition Name ; Partition Type ; Netlist Type Used ; Netlist Type Requested ; Partition Contents +------------------+-----------------+--------------------+---------------------------+-------------------- ; x ; User-created ; Post-Fit ; Post-Fit ; x Провел такой эксперимент. Скопировал проект. Для второго проекта раскомментировал новый модуль. Компилю оба проекта. В итоге - первый проект без проблем, второй проект - с отрицательным слаком для одного пути. Запускаю анализ этого пути во втором проекте. Запускаю анализ такого же пути для первого проекта. Так вот, если смотреть на Data Path, то Location и Elements одинаковые для обоих проектов, а времена чуть отличаются, и для второго проекта время пути чуть больше набегает. Открываю конкретно LABCELL_X212_Y10_N18 в Resource Property Editor. Там есть отличия. Сигналы приходят на разные входа LAB. Имена сигналов одинаковые. Функции у LUT разные установлены, хотя исходники не менялись. Оно как бы понятно, раз на разные входы сигналы пришли, то и логика их обработки квартус поменял. Но не понятно, зачем он их завел на разные входа. И как этим можно управлять? Я в этом слабо разбираюсь, поэтому такой вопрос: квартус выполнил Post-Fit? По идеи путь проходить по одним и тем же локациям для обоих проектов. Или Post-Fit подразумевает одинаковость во всем, и в Resource Property Editor в том числе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Недостаточно только тип нетлиста указать! Вы Preservation Level в какое значение выставили в Partition Editor'е? Там же разные варианты, самый железобетонный, который защищает всё и вся внутри партиции - Placement and Routing, насколько я помню. Этот параметр задает что именно в данной партиции защищать от всемогущего фиттера - размещение/разводку/и то и другое. UPD: А если и это не поможет, можно попробовать сделать финт ушами: скомпилировать партицию так, чтобы она удовлетворяла временным требованиям, экспортировать ее в .qxp, после чего этот .qxp натянуть на новую партицию в основном проекте... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Недостаточно только тип нетлиста указать! Вы Preservation Level в какое значение выставили в Partition Editor'е? Там же разные варианты, самый железобетонный, который защищает всё и вся внутри партиции - Placement and Routing, насколько я помню. Этот параметр задает что именно в данной партиции защищать от всемогущего фиттера - размещение/разводку/и то и другое. UPD: А если и это не поможет, можно попробовать сделать финт ушами: скомпилировать партицию так, чтобы она удовлетворяла временным требованиям, экспортировать ее в .qxp, после чего этот .qxp натянуть на новую партицию в основном проекте... У меня выставлено Placement. Как раз вами описанный метод я и думал использовать. Компилить на мелких проектах партиции, чтобы им ничего не мешало, а потом их импортировать в основной проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба У меня выставлено Placement. Как раз вами описанный метод я и думал использовать. Компилить на мелких проектах партиции, чтобы им ничего не мешало, а потом их импортировать в основной проект. Попробуйте сначала другие методы защиты партиции, в частности Placement and Routing. Ну и попробуйте поставить галочки "Ignore changes in source files..." и "Allow partition to be strictly preserved...". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба UPD: А если и это не поможет, можно попробовать сделать финт ушами: скомпилировать партицию так, чтобы она удовлетворяла временным требованиям, экспортировать ее в .qxp, после чего этот .qxp натянуть на новую партицию в основном проекте... Я такими вещами занимался (именно post-fit) - работало без проблем, все временные соотношения сохранялись (хотя если добавлялись некоторые сигналы из внутренней логики на STII, то немного все-таки менялись). Один недостаток - при большом заполнении кристалла остальная логика разводилась плохо, поэтому при создании партиций приходилось их упаковывать плотно в заранее спланированные области и все входы/выходы жестко прибивать к конкретным координатам (по умолчанию компилятор их мог разместить где угодно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Но там только два варианта в выпадающем списке - Netlist Only и Placement. Placement and Routing - такого нету PS. Посмотрел для Stratix V например в выпадающем списке 3 пункта: Netlist Only, Placement, Placement and Routing. А для Арии 10 только два. И как быть? Это я в квартус стнадарт эдишин использую. все входы/выходы жестко прибивать к конкретным координатам (по умолчанию компилятор их мог разместить где угодно) а как это делается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба а как это делается? assignment editot -> имя сигнала - location - координата (например x1_y1), ну или прямо в qsf - файле, например, set_location_assignment X1_Y1 - to имя сигнала (с полным иерархическим путем к нему, если не на верхнем уровне) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться