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

Почему один и тотже триггер реализуется по-разному?

Всем доброго времени суток!

 

Кто-нибудь может объяснить, почему Quartus от компиляции к компиляции может реализовывать один и тот же триггер по-разному – с использованием LUT входящую в LE где находится регистр(1 вариант) и без (2 вариант). Причем задержка в 1 варианте (с использованием LUT) оказывается меньше.

 

post-80976-1395292839_thumb.jpg

 

От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?

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


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

От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?

Полностью аналогичная тема была несколько дней назад.

Общий ответ на вопрос - никак, кроме использования примитивов FPGA в явном виде (через пупер-визард, к примеру).

А если тайминг сходится, то можно и вовсе не обращать внимание на это.

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


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

От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?

Много факторов. Например, значение констрейна register packing. Пользователю главное, чтобы результат устраивал (как уже отметили выше), он может влиять на качество результата констрейнами. У вас чисто академический интерес или что-то не получается?

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


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

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

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


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

То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...

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


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

То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...

 

В теории нет разницы между теорией и практикой. А на практике - есть :biggrin:

Вообще говоря, Xilinx били себя в грудь пару лет назад и обещали что в Vivado результат сборки проекта будет абсолютно оптимален и детерменирован. Чем дело закончилось я не знаю, так и не успел приобщиться. Было бы интересно послушать тех, кто на практике с вивадой работает.

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


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

То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...

 

Все верно говорите!

Лезьте в настройки компилятора КВАКТУСА :smile3046: в районе разводчика (map и т.д.) Должны быть настройки которые запрещают переразводить топологию при перекомпиляции проекта. Синтезатор по идее в таком режиме работает с той топологией кристалла, которая вас устраивает по временным задержкам, и все изменения в проекте учитывает пользуясь свободными ресурсами кристалла. Т.о. Вы перекомпилите, а ваши драгоценные триггера стоят все на том же месте, и как следствие прежние задержки.

Осталось разобраться где то место которое нужно чесануть=)). Квактус мне не друг, поэтому не подскажу.... Тут наверняка есть гугу по альтере.. Ищите их и спрашивайте... Ваша задача имеет решение.

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


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

Лезьте в настройки компилятора КВАКТУСА :smile3046: в районе разводчика (map и т.д.) Должны быть настройки которые запрещают переразводить топологию при перекомпиляции проекта. Синтезатор по идее в таком режиме работает с той топологией кристалла, которая вас устраивает по временным задержкам, и все изменения в проекте учитывает пользуясь свободными ресурсами кристалла. Т.о. Вы перекомпилите, а ваши драгоценные триггера стоят все на том же месте, и как следствие прежние задержки.

Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки.

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


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

Полностью аналогичная тема была несколько дней назад.

А можно ссылочку? Сходу не нашел.

 

У вас чисто академический интерес или что-то не получается?

Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс.

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


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

Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки.

 

Вооот.... так объясните нашему уважаемому автору топика, куда и как нажимать.

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


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

Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс.

 

Поставьте примитив LCELL, и назначьте ему assignment в тот же LE, что и триггеру (триггер тоже вручную привязать в конкретный LE). Тогда, по идее, оно должно все такие триггеры сделать одинаковыми, с проходом сигнала через LUT. А вот как сделать обратное, заставить сигнал не идти через LUT, я не знаю. Возможно, chip editor может помочь, с ручным допиливанием того, что развелось.

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


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

Поставьте примитив LCELL, и назначьте ему assignment в тот же LE, что и триггеру (триггер тоже вручную привязать в конкретный LE). Тогда, по идее, оно должно все такие триггеры сделать одинаковыми, с проходом сигнала через LUT. А вот как сделать обратное, заставить сигнал не идти через LUT, я не знаю. Возможно, chip editor может помочь, с ручным допиливанием того, что развелось.

 

А что это за примитив и куда его вставлять? Мой проект написан на Verilog'е.

 

Зачем вообще используется LUT если нету промежуточной логики?

 

Вооот.... так объясните нашему уважаемому автору топика, куда и как нажимать.

Design Partition Planner, я нашел, но он работает только за деньги :rolleyes: А у меня бесплатная версия Quartus, поэтому этот вариант не подходит.

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

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


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

Зачем вообще используется LUT если нету промежуточной логики?

могут использоваться для соединения входов триггеров

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


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

Design Partition Planner, я нашел, но он работает только за деньги :rolleyes: А у меня бесплатная версия Quartus, поэтому этот вариант не подходит.

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

 

:wacko: Халявщики

 

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


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

:wacko: Халявщики

просто любопытство - у Вас ПО официально купленное?

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


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

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

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

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

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

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

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

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

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

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