Sobol' 0 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба Всем привет! Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0. Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает. Пробовал директиву /*synthesis keep*/, не помогло. Подскажите пожалуйста, как поступить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба Всем привет! Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0. Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает. Пробовал директиву /*synthesis keep*/, не помогло. Подскажите пожалуйста, как поступить. /*noprune*/ но вообще лучше так задержку не делать)) ну или lcell вставлять Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба lcell не убирает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sobol' 0 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба с 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба wire keep_wire /* synthesis keep */; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sobol' 0 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба keep_wire - это просто имя, может быть любым, понятное дело. Привел пример с сайта Altera. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Спасибо, добрый человек! У меня получилось: Вы цепочку инверторов поставили в ознакомительных целях? Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать. 1. Вы привели схему после синтеза, расположение элементов может меняться от компиляции к компиляции, если их не прибить гвоздями и, соответственно, временной путь прохождения сигнала будет меняться. 2. Временной путь зависит от трех параметров - температура, напряжение, технологический разброс. Задержка сигнала будет плавать от этих условий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Задержка сигнала будет плавать от этих условий. Насколько будет плавать, вы не подскажете? Топикстартер тоже мог бы показать по отчетам TimeQuest. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Просто интересно, что ожидается от такой схемы, изначальная идея, так сказать. Ну так это "задержка". Но не сигнала, а головной боли. Или каких-либо сбоев. Причем это как мина, которую подбрасывали в угольный тендер. Ясно, что паровоз от этой мины рванет. Но точно сказать где нельзя.... Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить. Ну так хоть так. Авось удастся подложить мину. Я такого одного застал, правда он быстро уволился. Так вот он под каждую плату корректировал число ячеек. Правда там плат было немного, но все же... А его начальник в этом ничего не понимал и считал, что это "типа круто"... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Ах! :rolleyes: А lcell для чего предлагаются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Насколько будет плавать, вы не подскажете? Топикстартер тоже мог бы показать по отчетам TimeQuest. Сильно будет зависеть от расположения пинов. Если обычная сигнальная линия по горизонтали, пересекая блоки дсп и память, то несколько нс (я для аррии 5 смотрел как-то). Точнее - только отчет TimeQuest для крайних углов анализа - по самой быстрой и медленной модели. :bb-offtopic: Периодически сталкивался с реализациями генераторов высокой частоты на инверторах (точнее lcell) на ПЛИС - в комнатных условиях на одном модуле все хорошо, ради прикола ставил мощный обдув и разработчик начинал впадать в ступор, не понимая что происходит. Так здесь у ТС имеется CPLD. Она маленькая, плохой проект со сбоями в ней сделать трудно, т.к. проверяющий сможет заметить. Я как обычно слона не заметил, извиняюсь. Может с CPLD и прокатит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Сильно будет зависеть от расположения пинов. Если обычная сигнальная линия по горизонтали, пересекая блоки дсп и память, то несколько нс (я для аррии 5 смотрел как-то). Точнее - только отчет TimeQuest для крайних углов анализа - по самой быстрой и медленной модели. Так то общая задержка от ноги к ноге. А каков был разброс от условий? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Так то общая задержка от ноги к ноге. А каков был разброс от условий? Это разброс, общая задержка до 10нс. ЗЫ. Сейчас провел анализ быстрый. К сожалению нет возможности прикрепить файлы. Можете проверить сами. Чип 5AGXFB5K4F40I5, протянул вход на выход по диагонали (пины AL33-G6). На самой медленной модели суммарная задержка 14.249нс, на самой быстрой 13.339нс. Т.е. разброс почти в нс, при этом сигнал идет один в один, т. е. нет дополнительных слоев логики. Ну и код: assign out=inp ЗЗЫ. Одна компиляция, только подставляется другая временная модель, приведенные задержки были SLOW, самая быстрая модель MIN_fast -40C для 1100mV дает задержку 8.025 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2017 Опубликовано 16 декабря, 2017 · Жалоба Это разброс, общая задержка до 10нс. Понятно. И это зависело только от условий? Раскладка цепей всегда была одной и той же? И еще - lcell-ов у вас там не было? А разброс был. Так отчего тогда такая нелюбовь к lcell, если и без них все гуляет? Т.е. разброс почти в нс, при этом сигнал идет один в один, т. е. нет дополнительных слоев логики. Там другая "логика" есть, нам недоступная. Переключатели с рядов на колонны, драйверы входов-выходов... Что хочу сказать. Конечно, там, где можно обойтись синхронной работой, то так и нужно. А где нельзя - там придется втыкать задержки. Да, нужно внимательно симулировать, изучать, как оно будет работать. Но выбора нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться