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

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

Конкретно, 2 желания.

1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?

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

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


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

Конкретно, 2 желания.

1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?

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

 

в файле .qsf

 

set_location_assignment

 

 

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


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

в файле .qsf

set_location_assignment

Это значит жестко задать расположение. Я не уверен, что знаю, как задать оптимально. Хочу отдать это компьютеру.

Помнится, в MaxPlus+ II были некие "клики".

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


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

Это значит жестко задать расположение. Я не уверен, что знаю, как задать оптимально. Хочу отдать это компьютеру.

Помнится, в MaxPlus+ II были некие "клики".

 

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

 

 

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


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

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

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

Тут скорее подойдет какое-нибудь временное ограничение (типа set_min_delay, но лично у меня были какие-то проблемы с его использованием) ну или гвоздями прибивать, как Вы уже советовали.

1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?

fast input register, если Вас устроит.

to ViKo асинхронщиной решили заняться?

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


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

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

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

 

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

 

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

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


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

fast input register, если Вас устроит.

to ViKo асинхронщиной решили заняться?

Не устроит. Сигнал асинхронный с тактовыми.

Я-я, натюрлих!

Борюсь со звоном на фронтах сигнала с компаратора, из-за чего триггер срабатывает по обоим фронтам сигнала.

Гистерезис в компараторе помогает, конечно. Но не на 100%. А большой делать - значит, чувствительность ухудшать.

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


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

Конкретно, 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: Как сказать Квартусу - сделай как можно меньше?

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


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

Как сказать Квартусу - сделай как можно меньше?

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

 

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

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


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

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

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

 

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


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

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

 

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

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


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

В Quartus есть Partition compilation, но я никогда не делал, не знаю, как подступиться. И мне думается, это слишком сложный путь для такой задачи.

Тут бы атрибутик какой задать (group).

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


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

Конкретно, 2 желания.

1. От входной площадки тянется связь в недра ПЛИС. Можно ли дать указание сделать эту связь минимальной?

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

А думаю я так.

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

 

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


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

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

Что-то такое?:

https://alteraforum.com/forum/showthread.php?t=43255

 

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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