реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Почему один и тотже триггер реализуется по-разному?, как с этим бороться?
Viwon
сообщение Mar 20 2014, 05:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-03-14
Пользователь №: 80 976



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

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

Прикрепленное изображение


От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Mar 20 2014, 12:59
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(Viwon @ Mar 20 2014, 09:23) *
От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?

Полностью аналогичная тема была несколько дней назад.
Общий ответ на вопрос - никак, кроме использования примитивов FPGA в явном виде (через пупер-визард, к примеру).
А если тайминг сходится, то можно и вовсе не обращать внимание на это.
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 21 2014, 02:52
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Viwon @ Mar 20 2014, 12:23) *
От чего зависит реализация, и как сказать Quarus’у чтобы определенные триггеры имели одинаковую реализацию?

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Мур
сообщение Mar 21 2014, 04:34
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Вы никогда не получите воспроизводимость проекта! Каждая компиляция одного и того же проекта будет разной, если не предпринимать специальных мер...
Go to the top of the page
 
+Quote Post
spectr
сообщение Mar 21 2014, 05:20
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Mar 21 2014, 05:51
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(spectr @ Mar 21 2014, 09:20) *
То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...


В теории нет разницы между теорией и практикой. А на практике - есть biggrin.gif
Вообще говоря, Xilinx били себя в грудь пару лет назад и обещали что в Vivado результат сборки проекта будет абсолютно оптимален и детерменирован. Чем дело закончилось я не знаю, так и не успел приобщиться. Было бы интересно послушать тех, кто на практике с вивадой работает.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Mar 21 2014, 06:02
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(spectr @ Mar 21 2014, 09:20) *
То есть Вы хотите сказать, что один и тот же код (не меняющийся), с одними и теми же констрейнами, настройками компиляции и seed, будет каждый раз разодиться по разному? Да ну, не может такого быть, ведь начальными условиями для синтеза и разводки как раз и являются настройки, констрейны, код, а они не меняются. А раз не меняются начальные условия, то и результат не должен меняться... По идее...


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


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
spectr
сообщение Mar 21 2014, 06:11
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



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

Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки.
Go to the top of the page
 
+Quote Post
Viwon
сообщение Mar 21 2014, 06:24
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-03-14
Пользователь №: 80 976



Цитата(o_khavin @ Mar 20 2014, 16:59) *
Полностью аналогичная тема была несколько дней назад.

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

Цитата(dxp @ Mar 21 2014, 06:52) *
У вас чисто академический интерес или что-то не получается?

Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Mar 21 2014, 06:45
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(spectr @ Mar 21 2014, 10:11) *
Да, такая технология у альтеры называется design partitions. Настраивается по-другому в отдельном окне, но смысл ее именно такой - защитить хорошо разведенные части проекта от переразводки.


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


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 21 2014, 06:54
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Viwon @ Mar 21 2014, 10:24) *
Мне нужно чтобы сигнал от одного источника к нескольким триггерам приходил одновременно. Если все триггеры реализуются одинаково, то разница в задержках получается около 0,005нс, а если по-разному то около 0,150нс.


Поставьте примитив LCELL, и назначьте ему assignment в тот же LE, что и триггеру (триггер тоже вручную привязать в конкретный LE). Тогда, по идее, оно должно все такие триггеры сделать одинаковыми, с проходом сигнала через LUT. А вот как сделать обратное, заставить сигнал не идти через LUT, я не знаю. Возможно, chip editor может помочь, с ручным допиливанием того, что развелось.
Go to the top of the page
 
+Quote Post
Viwon
сообщение Mar 21 2014, 07:23
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-03-14
Пользователь №: 80 976



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


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

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

Цитата(Dmitriyspb @ Mar 21 2014, 10:45) *
Вооот.... так объясните нашему уважаемому автору топика, куда и как нажимать.

Design Partition Planner, я нашел, но он работает только за деньги rolleyes.gif А у меня бесплатная версия Quartus, поэтому этот вариант не подходит.
Да и в целом меня беспокоит не то что каждый раз проект разводится по-разному, а то что такой примитив как триггер реализуется по разному внутри одной компиляции, в итоге получаются триггеры с разным быстродействием
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 21 2014, 07:29
Сообщение #13


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Viwon @ Mar 21 2014, 09:01) *
Зачем вообще используется LUT если нету промежуточной логики?

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Mar 21 2014, 09:00
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(Viwon @ Mar 21 2014, 11:23) *
Design Partition Planner, я нашел, но он работает только за деньги rolleyes.gif А у меня бесплатная версия Quartus, поэтому этот вариант не подходит.
Да и в целом меня беспокоит не то что каждый раз проект разводится по-разному, а то что такой примитив как триггер реализуется по разному внутри одной компиляции, в итоге получаются триггеры с разным быстродействием


wacko.gif Халявщики


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 21 2014, 09:03
Сообщение #15


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Dmitriyspb @ Mar 21 2014, 11:00) *
wacko.gif Халявщики

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 10:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01553 секунд с 7
ELECTRONIX ©2004-2016