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

Как заставить Quartus сделать то, что я хочу?

Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Dec 25 2017, 22:23) <{POST_SNAPBACK}>
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.


в файле .qsf

set_location_assignment

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Realking @ Dec 26 2017, 08:46) <{POST_SNAPBACK}>
в файле .qsf
set_location_assignment

Это значит жестко задать расположение. Я не уверен, что знаю, как задать оптимально. Хочу отдать это компьютеру.
Помнится, в MaxPlus+ II были некие "клики".

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


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


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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Realking @ Dec 26 2017, 09:50) <{POST_SNAPBACK}>
тогда можно попробовать LogicLock

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

fast input register, если Вас устроит.
to ViKo асинхронщиной решили заняться?

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(bogaev_roman @ Dec 26 2017, 10:06) <{POST_SNAPBACK}>
Тогда он будет размещать элементы только в заданной области, но как захочет.
Тут скорее подойдет какое-нибудь временное ограничение ну или гвоздями прибивать, как Вы уже советовали.


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(bogaev_roman @ Dec 26 2017, 10:06) <{POST_SNAPBACK}>
fast input register, если Вас устроит.
to ViKo асинхронщиной решили заняться?

Не устроит. Сигнал асинхронный с тактовыми.
Я-я, натюрлих!
Борюсь со звоном на фронтах сигнала с компаратора, из-за чего триггер срабатывает по обоим фронтам сигнала.
Гистерезис в компараторе помогает, конечно. Но не на 100%. А большой делать - значит, чувствительность ухудшать.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Dec 25 2017, 22:23) <{POST_SNAPBACK}>
Конкретно, 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.

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


Ссылка на сообщение
Поделиться на другие сайты
lcell никогда не выкидываются, атрибут не нужен. Насколько я имел опыта.
А насчет set_min_delay сложилось мнение, что это для внешних сигналов. Возможно, ошибаюсь. Будем смотреть. Однако, задашь слишком мало - не уложится. Задашь много - ничего делать не будет. rolleyes.gif Как сказать Квартусу - сделай как можно меньше?

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Dec 26 2017, 11:12) <{POST_SNAPBACK}>
Как сказать Квартусу - сделай как можно меньше?

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

Ну или читать DS на конкретное семейство FPGA и задавать минимально гарантированную задержку.

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


Ссылка на сообщение
Поделиться на другие сайты
В связке симплифай/вивада развлекался с точками компиляции. Разбиваешь проект на куски по необходимой плотности и задаёшь разные стратегии для маппера(фиттера). Проект и без этого водился, но с точками компиляции была просто песня! Посмотрите, может и в квартусе такое можно провернуть(я, слава богу, с альтерой к этому даже близко не подобрался sm.gif )
Правда, тут надо потратить время, чтоб аккуратно всё сделать. А в реализованном уже проекте это кажется вдвойне проблематичным.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Dec 25 2017, 22:23) <{POST_SNAPBACK}>
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.


У Xilinx есть (были?) т.н. Relatively Placed Macro. Может altera тоже изобрела что-то подобное?

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


Ссылка на сообщение
Поделиться на другие сайты
В Quartus есть Partition compilation, но я никогда не делал, не знаю, как подступиться. И мне думается, это слишком сложный путь для такой задачи.
Тут бы атрибутик какой задать (group).

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Dec 25 2017, 22:23) <{POST_SNAPBACK}>
Конкретно, 2 желания.
1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?
2. Внутри ПЛИС есть некоторый набор элементов (lcell, соединенных в последовательную цепь). Как задать разместить этот набор компактно? Чтобы цепи между ними были короткими. Здесь даже не длина важна, а постоянство вне зависимости от компиляции, хотя бы приблизительное, времени прохождения сигнала по этой цепи.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(iosifk @ Dec 26 2017, 15:37) <{POST_SNAPBACK}>
Взять только этот кусочек, скомпилить, расположить. Потом вручную переставить элементы и в списке связей найти, как называются их места расположения. И уже это в виде атрибутов добавить в проект...

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

Лучше оставлю, как есть.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация