lkg47 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Здравствуйте, подскажите пожалуйста, проблема: есть асинхронный вход - data, тактовая - clk_1 как задать ограничение для Quartus такое, чтобы максимальная и минимальная разница в задержках между data --> R1|d и data --> R3|clk задавалась и фиттер мог под нее подстраивать пути? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Это делается с помощью констрейна set_input_delay. Но раз Вы спрашиваете такие вещи, то не уверен, что у Вас получится сделать правильно данную схему. Здесь ну очень много нужно понимать и дописывать. Например из первых мыслей: 1. Создать внешний виртуальный клок. 2. Поставить буффер перед клоком и задать там дженерейтед клок. 3. Задать инпут дилеи. 4. Если нет возможности сформировать дженерейтед клок с виртуального, тогда удалить виртуальный клок. Но самый главный вопрос: зачем? Зачем городить эту схему? Если данные на data приходят с частотой менее 50 МГц, тогда это вообще безсмысленная схема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lkg47 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба т.е. вы предлагаете сделать на подобие этого: ? вот только внешний регистр этого примера у меня внутри ПЛИС, а set_input_delay назначается только на порты, как быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Ну так нужно предоставить схему полностью, у меня закончился волшебный эликсир угадывания и я предположил, что data и clk_1 приходят через внешние пины. нарисуйте полную схему и чем тактируется регистр, выход которого и является data тогда скорее всего достаточно генерируемого клока. Но буффер перед clk R3 всё равно придётся прикрутить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lkg47 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба data - асинхронный сигнал clk_1 - выход ФАПЧ буфер перед R3 ставить нельзя Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darky777 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Присоеденяюсь к вопросу. Какая стоит задача? Что требуется видеть на выходе? Какая частота клока clk_1? Какова частота изменения data? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 4 hours ago, lkg47 said: data - асинхронный сигнал Абсолютно асинхронные сигналы приходят только из вне кристалла (через комбинаторику или без - безразницы). Всё остальное имеет чёткие задержки, если в цепи этого сигнала присутствует хотя бы один регистр. Так сигнал приходит снаружи или с регистра + комбинаторика/своё подставить. 4 hours ago, lkg47 said: clk_1 - выход ФАПЧ Частота какая? 4 hours ago, lkg47 said: буфер перед R3 ставить нельзя Кто сказал? Существуют специальные клоковые буферы, которые намного лучше будут распространять Вашу "частоту" по кристаллу с минимальными задержками. И да, если там частота под 100-300МГц, тогда придётся всё фризить руками во floorplan'е. Ну а если там до 50МГц, тогда Вы городите ерунду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Avex 1 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 13 hours ago, lkg47 said: как задать ограничение для Quartus такое, чтобы максимальная и минимальная разница в задержках между data --> R1|d и data --> R3|clk задавалась и фиттер мог под нее подстраивать пути? Почитайте про set_min_delay и set_max_delay, надеюсь они поддерживаются вашим тулом. Но, эта схема не имеет смысла. Представьте, что долгое время data=0, вдруг пришел фронт data=1 -> в R3 записался 0. Следующая запись будет по следующему фронту data=1, и снова запишется 0. Итого, 1 в R3 никогда не запишется, разве только если data --> R3|clk будет ну ооочень длинным путем, длиннее двух периодов clk. Но тогда в R3 всегда будет писаться 1 :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Приветствую! Работать в какой то мере будет - подозреваю что TC пытается придумать схему которая срабатывает если на входе есть определенная (с заданным соотношением времени) последовательность импульсов. Но надежность и целесообразность такого решения вызывает большие сомнения - тут TC виднее зачем ему такое. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lkg47 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба всем спасибо за комментарии, решил проблему с помощью set_net_delay, добавил CLKCTRL блок и прописал минимальные и максимальные задержки для 1. data --> R1|d 2.1 data --> CLKCTRL|o 2.2 CLKCTRL|o -->reg R3 проверка на исполнение через TQ report_net_delay и все-таки, существует ли вообще возможность задать разницу во времени между R1|d и R3|clk? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 1 hour ago, lkg47 said: проверка на исполнение через TQ report_net_delay вот именно что только проверка на исполнение, довольно широкого окна. FPGA софт в основном не использует данный констрейн для работы. 1 hour ago, lkg47 said: и все-таки, существует ли вообще возможность задать разницу во времени между R1|d и R3|clk? ИМХО только ручное прибите гвоздями на чипе, даст гарантию на относительное не изменение получившейся задержки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lkg47 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 (изменено) · Жалоба 23 hours ago, des00 said: вот именно что только проверка на исполнение, довольно широкого окна. FPGA софт в основном не использует данный констрейн для работы. не соглашусь с утверждением относительно quartus 15, проверил результаты компиляции для разных значений set_net_delay - видно , что подстраивается под заданные значения Изменено 24 сентября, 2020 пользователем lkg47 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 22 minutes ago, lkg47 said: не соглашусь с утверждением относительно quartus 15, проверил результаты компиляции для разных значений set_net_delay - видно , что подстраивается под заданные значения выложите проект посмотреть. Вот как сейчас помню слова квартуса в логах: обнаружен констрейн set_net_delay, он информационный и при работе использоваться не будет. Может конечно все изменилось с тех пор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Приветствую! On 9/23/2020 at 3:45 AM, lkg47 said: и все-таки, существует ли вообще возможность задать разницу во времени между R1|d и R3|clk? Для Qu смотрите команду set_max_skew ... - но насколько я помню она работает если для вашего FPGA поддерживается новый режим timequest2. On 9/23/2020 at 3:45 AM, lkg47 said: и прописал минимальные и максимальные задержки для 1. data --> R1|d 2.1 data --> CLKCTRL|o 2.2 CLKCTRL|o -->reg R3 Думаю set_net_delay что задержку data --> CLKCTRL|o и CLKCTRL|o -->reg R3 лучше описывает одной строкой используя set_net_delay -from ... -thru ... -to ... конструкцию. Так как при этом будет учитывался и задержка внутри CLKCTRL. 4 hours ago, des00 said: Вот как сейчас помню слова квартуса в логах: обнаружен констрейн set_net_delay, он информационный и при работе использоваться не будет. Да вроде работает set_net_delay, у меня даже ошибки по нему иногда дает +---------------+---------------+----------+---------------+-----------------------------------------------------------------+------------------------------------------------+------+ ; Name ; Slack ; Required ; Actual ; From ; To ; Type ; +---------------+---------------+----------+---------------+-----------------------------------------------------------------+------------------------------------------------+------+ ; set_net_delay ; -0.038 ; 2.792 ; 2.830 ; [get_fanins [get_pins {.../i_enable_cdc|dst_cdc[0]|asdata}]] ; [get_registers {...|i_enable_cdc|dst_cdc[0]}] ; max ; ; set_net_delay ; 0.046 ; 0.669 ; 0.623 ; [get_registers {*|i_tx_gbox|dou[*]}] ; ; max ; Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 45 minutes ago, RobFPGA said: Да вроде работает set_net_delay, у меня даже ошибки по нему иногда дает Тайминг анализатор всегда использует все обьявленные констрейны! Возможно имелось ввиду, будут ли учитываться эти констрейны при синтезе или нет. Когда-то у меня были похожие симптомы с какими-то констрейнами (не помню какие уже) но это было очень давно и неправда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться