Viwon 0 20 марта, 2014 Опубликовано 20 марта, 2014 · Жалоба Всем доброго времени суток! Кто-нибудь может объяснить, почему Quartus от компиляции к компиляции может реализовывать один и тот же триггер по-разному – с использованием LUT входящую в LE где находится регистр(1 вариант) и без (2 вариант). Причем задержка в 1 варианте (с использованием LUT) оказывается меньше. От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
o_khavin 0 20 марта, 2014 Опубликовано 20 марта, 2014 · Жалоба От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию? Полностью аналогичная тема была несколько дней назад. Общий ответ на вопрос - никак, кроме использования примитивов FPGA в явном виде (через пупер-визард, к примеру). А если тайминг сходится, то можно и вовсе не обращать внимание на это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 67 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию? Много факторов. Например, значение констрейна register packing. Пользователю главное, чтобы результат устраивал (как уже отметили выше), он может влиять на качество результата констрейнами. У вас чисто академический интерес или что-то не получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Вы никогда не получите воспроизводимость проекта! Каждая компиляция одного и того же проекта будет разной, если не предпринимать специальных мер... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее... В теории нет разницы между теорией и практикой. А на практике - есть Вообще говоря, Xilinx били себя в грудь пару лет назад и обещали что в Vivado результат сборки проекта будет абсолютно оптимален и детерменирован. Чем дело закончилось я не знаю, так и не успел приобщиться. Было бы интересно послушать тех, кто на практике с вивадой работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее... Все верно говорите! Лезьте в настройки компилятора КВАКТУСА :smile3046: в районе разводчика (map и т.д.) Должны быть настройки которые запрещают переразводить топологию при перекомпиляции проекта. Синтезатор по идее в таком режиме работает с той топологией кристалла, которая вас устраивает по временным задержкам, и все изменения в проекте учитывает пользуясь свободными ресурсами кристалла. Т.о. Вы перекомпилите, а ваши драгоценные триггера стоят все на том же месте, и как следствие прежние задержки. Осталось разобраться где то место которое нужно чесануть=)). Квактус мне не друг, поэтому не подскажу.... Тут наверняка есть гугу по альтере.. Ищите их и спрашивайте... Ваша задача имеет решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Лезьте в настройки компилятора КВАКТУСА :smile3046: в районе разводчика (map и т.д.) Должны быть настройки которые запрещают переразводить топологию при перекомпиляции проекта. Синтезатор по идее в таком режиме работает с той топологией кристалла, которая вас устраивает по временным задержкам, и все изменения в проекте учитывает пользуясь свободными ресурсами кристалла. Т.о. Вы перекомпилите, а ваши драгоценные триггера стоят все на том же месте, и как следствие прежние задержки. Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Viwon 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Полностью аналогичная тема была несколько дней назад. А можно ссылочку? Сходу не нашел. У вас чисто академический интерес или что-то не получается? Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки. Вооот.... так объясните нашему уважаемому автору топика, куда и как нажимать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс. Поставьте примитив LCELL, и назначьте ему assignment в тот же LE, что и триггеру (триггер тоже вручную привязать в конкретный LE). Тогда, по идее, оно должно все такие триггеры сделать одинаковыми, с проходом сигнала через LUT. А вот как сделать обратное, заставить сигнал не идти через LUT, я не знаю. Возможно, chip editor может помочь, с ручным допиливанием того, что развелось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Viwon 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Поставьте примитив LCELL, и назначьте ему assignment в тот же LE, что и триггеру (триггер тоже вручную привязать в конкретный LE). Тогда, по идее, оно должно все такие триггеры сделать одинаковыми, с проходом сигнала через LUT. А вот как сделать обратное, заставить сигнал не идти через LUT, я не знаю. Возможно, chip editor может помочь, с ручным допиливанием того, что развелось. А что это за примитив и куда его вставлять? Мой проект написан на Verilog'е. Зачем вообще используется LUT если нету промежуточной логики? Вооот.... так объясните нашему уважаемому автору топика, куда и как нажимать. Design Partition Planner, я нашел, но он работает только за деньги :rolleyes: А у меня бесплатная версия Quartus, поэтому этот вариант не подходит. Да и в целом меня беспокоит не то что каждый раз проект разводится по-разному, а то что такой примитив как триггер реализуется по разному внутри одной компиляции, в итоге получаются триггеры с разным быстродействием Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Зачем вообще используется LUT если нету промежуточной логики? могут использоваться для соединения входов триггеров Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Design Partition Planner, я нашел, но он работает только за деньги :rolleyes: А у меня бесплатная версия Quartus, поэтому этот вариант не подходит. Да и в целом меня беспокоит не то что каждый раз проект разводится по-разному, а то что такой примитив как триггер реализуется по разному внутри одной компиляции, в итоге получаются триггеры с разным быстродействием Халявщики Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Халявщики просто любопытство - у Вас ПО официально купленное? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться