Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как заставить Quartus сделать то, что я хочу?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Среды разработки - обсуждаем САПРы
ViKo
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.
Realking
Цитата(ViKo @ Dec 25 2017, 22:23) *
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.


в файле .qsf

set_location_assignment

ViKo
Цитата(Realking @ Dec 26 2017, 08:46) *
в файле .qsf
set_location_assignment

Это значит жестко задать расположение. Я не уверен, что знаю, как задать оптимально. Хочу отдать это компьютеру.
Помнится, в MaxPlus+ II были некие "клики".
Realking
Цитата(ViKo @ Dec 26 2017, 09:38) *
Это значит жестко задать расположение. Я не уверен, что знаю, как задать оптимально. Хочу отдать это компьютеру.
Помнится, в MaxPlus+ II были некие "клики".


тогда можно попробовать LogicLock

bogaev_roman
Цитата(Realking @ Dec 26 2017, 09:50) *
тогда можно попробовать LogicLock

Тогда он будет размещать элементы только в заданной области, но как захочет.
Тут скорее подойдет какое-нибудь временное ограничение (типа set_min_delay, но лично у меня были какие-то проблемы с его использованием) ну или гвоздями прибивать, как Вы уже советовали.
Цитата
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?

fast input register, если Вас устроит.
to ViKo асинхронщиной решили заняться?
Realking
Цитата(bogaev_roman @ Dec 26 2017, 10:06) *
Тогда он будет размещать элементы только в заданной области, но как захочет.
Тут скорее подойдет какое-нибудь временное ограничение ну или гвоздями прибивать, как Вы уже советовали.


Ну он и пишет, что хочет

а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.
ViKo
Цитата(bogaev_roman @ Dec 26 2017, 10:06) *
fast input register, если Вас устроит.
to ViKo асинхронщиной решили заняться?

Не устроит. Сигнал асинхронный с тактовыми.
Я-я, натюрлих!
Борюсь со звоном на фронтах сигнала с компаратора, из-за чего триггер срабатывает по обоим фронтам сигнала.
Гистерезис в компараторе помогает, конечно. Но не на 100%. А большой делать - значит, чувствительность ухудшать.
blackfin
Цитата(ViKo @ Dec 25 2017, 22:23) *
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.

IMHO, в *.sdc указать значение set_max_delay:
Цитата
The set_max_delay and set_min_delay commands specify that the maximum and minimum respectively, required delay for any start point in <from_node_list> to any endpoint in <to_node_list> must be less than or greater than <delay_value>.Typically, you use these commands to override the default setup constraint for any path with a specific maximum or minimum time value for the path.

В RTL при этом для каждой "lcell, соединенных в последовательную цепь" указать атрибут: /* synthesis keep */.

См. Quartus Handbook, p.872, p.1001.

PS. В файле *.sdc для set_max_delay нужно указать суммарное значение задержки для всей цепочки: input_pin -> last_lcell_output_pin.
ViKo
lcell никогда не выкидываются, атрибут не нужен. Насколько я имел опыта.
А насчет set_min_delay сложилось мнение, что это для внешних сигналов. Возможно, ошибаюсь. Будем смотреть. Однако, задашь слишком мало - не уложится. Задашь много - ничего делать не будет. rolleyes.gif Как сказать Квартусу - сделай как можно меньше?
blackfin
Цитата(ViKo @ Dec 26 2017, 11:12) *
Как сказать Квартусу - сделай как можно меньше?

Можно, для начала, задать заведомо невыполнимое значение задержки, напр., 0.01 ns и посмотреть отчет STA.. wink.gif

Ну или читать DS на конкретное семейство FPGA и задавать минимально гарантированную задержку.
TRILLER
В связке симплифай/вивада развлекался с точками компиляции. Разбиваешь проект на куски по необходимой плотности и задаёшь разные стратегии для маппера(фиттера). Проект и без этого водился, но с точками компиляции была просто песня! Посмотрите, может и в квартусе такое можно провернуть(я, слава богу, с альтерой к этому даже близко не подобрался sm.gif )
Правда, тут надо потратить время, чтоб аккуратно всё сделать. А в реализованном уже проекте это кажется вдвойне проблематичным.
alexadmin
Цитата(ViKo @ Dec 25 2017, 22:23) *
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.


У Xilinx есть (были?) т.н. Relatively Placed Macro. Может altera тоже изобрела что-то подобное?
ViKo
В Quartus есть Partition compilation, но я никогда не делал, не знаю, как подступиться. И мне думается, это слишком сложный путь для такой задачи.
Тут бы атрибутик какой задать (group).
iosifk
Цитата(ViKo @ Dec 25 2017, 22:23) *
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.

А думаю я так.
Взять только этот кусочек, скомпилить, расположить. Потом вручную переставить элементы и в списке связей найти, как называются их места расположения. И уже это в виде аттрибутов добавить в проект...
ViKo
Цитата(iosifk @ Dec 26 2017, 15:37) *
Взять только этот кусочек, скомпилить, расположить. Потом вручную переставить элементы и в списке связей найти, как называются их места расположения. И уже это в виде атрибутов добавить в проект...

Что-то такое?:
https://alteraforum.com/forum/showthread.php?t=43255

Лучше оставлю, как есть.
dvladim
Цитата(ViKo @ Dec 26 2017, 11:12) *
lcell никогда не выкидываются, атрибут не нужен. Насколько я имел опыта.
А насчет set_min_delay сложилось мнение, что это для внешних сигналов. Возможно, ошибаюсь.

Оптимизация lcell - это параметры синтеза. По-умолчанию выключено.
set_min_delay - это исключение для sdc и запросто может обрабатываться только при анализе в Таймквест, а при размещении игнорироваться. Это надо детально смотреть.

Ручное расположение (фиксация) элементов в LAB ближайшем к пину практически гарантирует минимальные времена.
Ну а ежели вы фанат повторяемости (*ухмылка*) то можете законстрейнить и трассировку. Искать формат файла RCF и гуглить QUIP Benchmark (исследовательская программа совместно с университетом Торонто).
А вообще, вы бы поподробней рассказали бы для чего такое решение применяете.
ViKo
Все уже сказал выше.
ViKo
А какая настройка выкидывает lcell?
Realking
Цитата(ViKo @ Dec 27 2017, 09:50) *
А какая настройка выкидывает lcell?


Ignore LCELL Buffers

в расширенных настройках синтеза
ViKo
Цитата(Realking @ Dec 27 2017, 09:53) *
Ignore LCELL Buffers
в расширенных настройках синтеза

Да, нашел. Спасибо! Буду знать. Включать не буду. rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.