|
как отключить оптимизацию в Quartus ?, при компиляции убирает нужное |
|
|
|
Dec 15 2017, 12:49
|
Участник

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

|
Всем привет! Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0. Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает. Пробовал директиву /*synthesis keep*/, не помогло.
Подскажите пожалуйста, как поступить.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Dec 15 2017, 13:05
|
Местный
  
Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771

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

Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 16 2017, 10:54
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 16 2017, 10:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Sobol' @ Dec 16 2017, 13:54)  Спасибо, добрый человек! У меня получилось: Вы цепочку инверторов поставили в ознакомительных целях? Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать. 1. Вы привели схему после синтеза, расположение элементов может меняться от компиляции к компиляции, если их не прибить гвоздями и, соответственно, временной путь прохождения сигнала будет меняться. 2. Временной путь зависит от трех параметров - температура, напряжение, технологический разброс. Задержка сигнала будет плавать от этих условий.
|
|
|
|
|
Dec 16 2017, 11:58
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(bogaev_roman @ Dec 16 2017, 13:57)  Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать. Ну так это "задержка". Но не сигнала, а головной боли. Или каких-либо сбоев. Причем это как мина, которую подбрасывали в угольный тендер. Ясно, что паровоз от этой мины рванет. Но точно сказать где нельзя.... Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить. Ну так хоть так. Авось удастся подложить мину. Я такого одного застал, правда он быстро уволился. Так вот он под каждую плату корректировал число ячеек. Правда там плат было немного, но все же... А его начальник в этом ничего не понимал и считал, что это "типа круто"...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 16 2017, 12:10
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(ViKo @ Dec 16 2017, 14:37)  Насколько будет плавать, вы не подскажете? Топикстартер тоже мог бы показать по отчетам TimeQuest. Сильно будет зависеть от расположения пинов. Если обычная сигнальная линия по горизонтали, пересекая блоки дсп и память, то несколько нс (я для аррии 5 смотрел как-то). Точнее - только отчет TimeQuest для крайних углов анализа - по самой быстрой и медленной модели.  Периодически сталкивался с реализациями генераторов высокой частоты на инверторах (точнее lcell) на ПЛИС - в комнатных условиях на одном модуле все хорошо, ради прикола ставил мощный обдув и разработчик начинал впадать в ступор, не понимая что происходит. Цитата Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить. Я как обычно слона не заметил, извиняюсь. Может с CPLD и прокатит.
|
|
|
|
|
Dec 16 2017, 12:42
|
Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 16 2017, 13:16
|

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

|
Цитата(bogaev_roman @ Dec 16 2017, 15:42)  Это разброс, общая задержка до 10нс. Понятно. И это зависело только от условий? Раскладка цепей всегда была одной и той же? И еще - lcell-ов у вас там не было? А разброс был. Так отчего тогда такая нелюбовь к lcell, если и без них все гуляет? Цитата(bogaev_roman @ Dec 16 2017, 15:42)  Т.е. разброс почти в нс, при этом сигнал идет один в один, т. е. нет дополнительных слоев логики. Там другая "логика" есть, нам недоступная. Переключатели с рядов на колонны, драйверы входов-выходов... Что хочу сказать. Конечно, там, где можно обойтись синхронной работой, то так и нужно. А где нельзя - там придется втыкать задержки. Да, нужно внимательно симулировать, изучать, как оно будет работать. Но выбора нет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|