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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> как отключить оптимизацию в Quartus ?, при компиляции убирает нужное
Sobol'
сообщение Dec 15 2017, 12:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



Всем привет!
Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0.
Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает.
Пробовал директиву /*synthesis keep*/, не помогло.

Подскажите пожалуйста, как поступить.
Go to the top of the page
 
+Quote Post
Realking
сообщение Dec 15 2017, 13:05
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(Sobol' @ Dec 15 2017, 15:49) *
Всем привет!
Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0.
Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает.
Пробовал директиву /*synthesis keep*/, не помогло.

Подскажите пожалуйста, как поступить.


/*noprune*/

но вообще лучше так задержку не делать))
ну или lcell вставлять


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 15 2017, 13:55
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



lcell не убирает
Go to the top of the page
 
+Quote Post
Sobol'
сообщение Dec 15 2017, 14:50
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



с lcell разобрался, спасибо.
Однако все-таки интересно, как отключить оптимизацию в конкретном куске модуля.
/*noprune*/ не помогло, явно что-то делаю не так:
Код
module temp_altera (
input clk_in,

output clk_out_delay
    );

/*synthesis noprune*/
wire [3:0] line = { line [2:0], ~clk_in};

/*synthesis noprune*/
assign clk_out_delay = line[3];

endmodule



Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 15 2017, 15:00
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



wire keep_wire /* synthesis keep */;
Go to the top of the page
 
+Quote Post
Sobol'
сообщение Dec 16 2017, 10:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



Цитата(ViKo @ Dec 15 2017, 15:00) *
wire keep_wire /* synthesis keep */;


Спасибо, добрый человек! У меня получилось:

Код
module temp_altera (
input clk_in,

output clk_out_delay
    );

wire keep_wire_1 /* synthesis keep */;
assign keep_wire_1 =  !clk_in;
wire keep_wire_2 /* synthesis keep */;
assign keep_wire_2 =  !keep_wire_1;
wire keep_wire_3 /* synthesis keep */;
assign keep_wire_3 =  !keep_wire_2;

assign clk_out_delay = keep_wire_3;

endmodule




Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 10:56
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



keep_wire - это просто имя, может быть любым, понятное дело. Привел пример с сайта Altera.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 16 2017, 10:57
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Sobol' @ Dec 16 2017, 13:54) *
Спасибо, добрый человек! У меня получилось:

Вы цепочку инверторов поставили в ознакомительных целях? Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать.
1. Вы привели схему после синтеза, расположение элементов может меняться от компиляции к компиляции, если их не прибить гвоздями и, соответственно, временной путь прохождения сигнала будет меняться.
2. Временной путь зависит от трех параметров - температура, напряжение, технологический разброс. Задержка сигнала будет плавать от этих условий.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 11:37
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bogaev_roman @ Dec 16 2017, 13:57) *
Задержка сигнала будет плавать от этих условий.

Насколько будет плавать, вы не подскажете? Топикстартер тоже мог бы показать по отчетам TimeQuest.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 16 2017, 11:58
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(bogaev_roman @ Dec 16 2017, 13:57) *
Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать.

Ну так это "задержка".
Но не сигнала, а головной боли. Или каких-либо сбоев. Причем это как мина, которую подбрасывали в угольный тендер. Ясно, что паровоз от этой мины рванет. Но точно сказать где нельзя....
Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить. Ну так хоть так. Авось удастся подложить мину. Я такого одного застал, правда он быстро уволился. Так вот он под каждую плату корректировал число ячеек. Правда там плат было немного, но все же... А его начальник в этом ничего не понимал и считал, что это "типа круто"... sm.gif


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 12:06
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Ах! rolleyes.gif А lcell для чего предлагаются?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 16 2017, 12:10
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(ViKo @ Dec 16 2017, 14:37) *
Насколько будет плавать, вы не подскажете? Топикстартер тоже мог бы показать по отчетам TimeQuest.

Сильно будет зависеть от расположения пинов. Если обычная сигнальная линия по горизонтали, пересекая блоки дсп и память, то несколько нс (я для аррии 5 смотрел как-то). Точнее - только отчет TimeQuest для крайних углов анализа - по самой быстрой и медленной модели.
bb-offtopic.gif Периодически сталкивался с реализациями генераторов высокой частоты на инверторах (точнее lcell) на ПЛИС - в комнатных условиях на одном модуле все хорошо, ради прикола ставил мощный обдув и разработчик начинал впадать в ступор, не понимая что происходит.
Цитата
Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить.

Я как обычно слона не заметил, извиняюсь. Может с CPLD и прокатит.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 12:39
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bogaev_roman @ Dec 16 2017, 15:10) *
Сильно будет зависеть от расположения пинов. Если обычная сигнальная линия по горизонтали, пересекая блоки дсп и память, то несколько нс (я для аррии 5 смотрел как-то). Точнее - только отчет TimeQuest для крайних углов анализа - по самой быстрой и медленной модели.

Так то общая задержка от ноги к ноге. А каков был разброс от условий?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 16 2017, 12:42
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(ViKo @ Dec 16 2017, 15:39) *
Так то общая задержка от ноги к ноге. А каков был разброс от условий?

Это разброс, общая задержка до 10нс.
ЗЫ. Сейчас провел анализ быстрый. К сожалению нет возможности прикрепить файлы. Можете проверить сами. Чип 5AGXFB5K4F40I5, протянул вход на выход по диагонали (пины AL33-G6). На самой медленной модели суммарная задержка 14.249нс, на самой быстрой 13.339нс. Т.е. разброс почти в нс, при этом сигнал идет один в один, т. е. нет дополнительных слоев логики. Ну и код:

Код
assign out=inp

ЗЗЫ. Одна компиляция, только подставляется другая временная модель, приведенные задержки были SLOW, самая быстрая модель MIN_fast -40C для 1100mV дает задержку 8.025 biggrin.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 13:16
Сообщение #15


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bogaev_roman @ Dec 16 2017, 15:42) *
Это разброс, общая задержка до 10нс.

Понятно. И это зависело только от условий? Раскладка цепей всегда была одной и той же?
И еще - lcell-ов у вас там не было? А разброс был. Так отчего тогда такая нелюбовь к lcell, если и без них все гуляет?

Цитата(bogaev_roman @ Dec 16 2017, 15:42) *
Т.е. разброс почти в нс, при этом сигнал идет один в один, т. е. нет дополнительных слоев логики.

Там другая "логика" есть, нам недоступная. Переключатели с рядов на колонны, драйверы входов-выходов...

Что хочу сказать. Конечно, там, где можно обойтись синхронной работой, то так и нужно. А где нельзя - там придется втыкать задержки. Да, нужно внимательно симулировать, изучать, как оно будет работать. Но выбора нет.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 16 2017, 13:16
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(ViKo @ Dec 16 2017, 16:07) *
И еще - lcell-ов у вас там не было? А разброс был. Так отчего тогда такая нелюбовь к lcell, если и без них все гуляет?

У меня нет нелюбви к lcell, просто дополнительная логика лишь добавит временной разброс. Я исключительно против самого подхода использования ресурсов ПЛИС в качестве асинхронной логики, а вещи типа задержать сигнал на столько-то ps или сформировать генератор на логике в 1ГГц очень сложными (хотя и это при определенных условиях возможно).
Цитата
Что хочу сказать. Конечно, там, где можно обойтись синхронной работой, то так и нужно. А где нельзя - там придется втыкать задержки.

Я с Вами полностью согласен, просто лучше заранее подготовиться к возможным последствиям и оценить степень риска. Плюс не известно, что именно хотел ТС - может просто посмотреть, что задержку можно менять с помощью комбинаторной логики.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 13:19
Сообщение #17


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Ясно. Лучше знать и делать, чем не делать, потому что не знаешь. sm.gif Вот топикстартер - узнал, теперь у него есть выбор.
Go to the top of the page
 
+Quote Post
Sobol'
сообщение Dec 16 2017, 15:49
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



ТС хотел получить задержку тактового сигнала примерно на один лапоть силами означенной CPLD. Партия устройств маленькая, работать будут при комнатной температуре.
ПЛИСина эта уже имеется на борту устройства. И, да, количество инверторов будет подбираться экспериментально для каждой платы.
Да, это такой костыль.
Да, мне это все не нравится.
Да, руководство осознает что творит, но именно оно именно так поставило задачу.
Нет, тактовую логику использовать нельзя.

Еще раз говорю, что мне это все не нравится, но другого пути пока нет.
Lcell-буферы вполне меня устраивают, хотел разобраться с директивами компилятора чисто для общего развития.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 18 2017, 09:55
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Sobol' @ Dec 16 2017, 18:49) *
ПЛИСина эта уже имеется на борту устройства. И, да, количество инверторов будет подбираться экспериментально для каждой платы.

Тогда их положение лучше зафиксировать с помощью ограничений, причем чем короче будет путь, тем разброс будет меньше (для CPLD понятия не имею как можно и можно ли вообще, для fpga - set_location).
Цитата
Еще раз говорю, что мне это все не нравится, но другого пути пока нет.

Если осознание есть, то все получится - успехов.
Go to the top of the page
 
+Quote Post
Sobol'
сообщение Dec 19 2017, 13:41
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



Если вдруг кому интересно.

на чипе epm3064 мерили сейчас реальную задержку осциллографом.
Каждый Lcell увеличивает задержку примерно на 2.5нс.
Цепочка из 10 буферов при комнатной температуре сдвинула входной сигнал на 27ns.
Нагрели ПЛИС до 65 градусов, задержка увеличилась на 2.4ns.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 19 2017, 14:04
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Sobol' @ Dec 19 2017, 16:41) *
Если вдруг кому интересно.

Это интересно, спасибо. А как нагревали чип, если не секрет, и какова температура чипа была при комнатной температуре (или по умолчанию считается комнатной)? Я то сам только в термокамере грел жирные плисухи с термодатчиками, поэтому интересуюсь.
Go to the top of the page
 
+Quote Post
Sobol'
сообщение Dec 19 2017, 15:56
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-07-14
Пользователь №: 82 421



Изначально температура была 27 градусов. Грели тем, что под руку попалось. Сегодня под руку попался резистор 1ом и лабораторный источник тока... приложили бедолагу-резистор сверху к ПЛИС и смотрели на осциллографе, как ползет задержка.
Температуру мерили пирометром.

Сообщение отредактировал Sobol' - Dec 19 2017, 15:57
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 24 2017, 16:35
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я тут по своей работе столкнулся с желанием добавить lcell-ов. Конкретно, попробовал 6 шт. Отчитываюсь, что вижу в Chip Planner для EP3C5E144I7N.
Задержка от площадки до входного буфера 0.778 ns
Задержка от входного буфера до первой ячейки 0.668 ns
Задержка в ячейках (мин, тип, макс) 0.127, 0.283, 0.360 ns
Задержка между ячейками (мин, тип, макс) 0.243, 0.255, 0.296 ns
Задержка от последней ячейки до выходного буфера 2.458 ns
Задержка от выходного буфера до площадки 2.286 ns
Общая задержка сигнала от входа до выхода 9.203 ns
Видимо, задержка в буферах зависит от типа логики. Вход был LVDS, выход - стандартный CMOS.
Путь со входа был короче пути на выход. Потому и такая разница в задержках. Вот об этих путях не надо забывать.
Каждая из lcell дает в среднем задержку в 0.5 ns

Это было для медленной 100° модели.
Для медленной -40° модели общая задержка 8.271 ns.
Для быстрой -40° модели общая задержка 4.683 ns.
В-общем, в 2 раза задержка отличается.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 21:32
Рейтинг@Mail.ru


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