Перейти к содержанию
    

констрейн на относительные задержки

Здравствуйте, подскажите пожалуйста,

проблема: 

есть асинхронный вход - data, тактовая - clk_1

как задать ограничение для Quartus такое, чтобы максимальная и минимальная разница в задержках между data --> R1|d и data --> R3|clk задавалась и фиттер мог под нее подстраивать пути?

image.thumb.png.4c99c7742d6839fc4ae5ff53fe3dd554.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это делается с помощью констрейна set_input_delay. Но раз Вы спрашиваете такие вещи, то не уверен, что у Вас получится сделать правильно данную схему. Здесь ну очень много нужно понимать и дописывать.

Например из первых мыслей:

1. Создать внешний виртуальный клок.

2. Поставить буффер перед клоком и задать там дженерейтед клок.

3. Задать инпут дилеи.

4. Если нет возможности сформировать дженерейтед клок с виртуального, тогда удалить виртуальный клок.

Но самый главный вопрос: зачем? Зачем городить эту схему? Если данные на data приходят с частотой менее 50 МГц, тогда это вообще безсмысленная схема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. вы предлагаете сделать на подобие этого: ?

image.png.79a2a0187db052baaee0a4418e65ce7a.png

вот только внешний регистр этого примера у меня внутри ПЛИС, а set_input_delay назначается только на порты, как быть?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так нужно предоставить схему полностью, у меня закончился волшебный эликсир угадывания и я предположил, что data и clk_1 приходят через внешние пины. нарисуйте полную схему и чем тактируется регистр, выход которого и является data тогда скорее всего достаточно генерируемого клока. Но буффер перед clk R3 всё равно придётся прикрутить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоеденяюсь к вопросу. Какая стоит задача? Что требуется видеть на выходе? Какая частота клока clk_1? Какова частота изменения data?   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, lkg47 said:

data - асинхронный сигнал

Абсолютно асинхронные сигналы приходят только из вне кристалла (через комбинаторику или без - безразницы). Всё остальное имеет чёткие задержки, если в цепи этого сигнала присутствует хотя бы один регистр. Так сигнал приходит снаружи или с регистра + комбинаторика/своё подставить.

4 hours ago, lkg47 said:

clk_1  - выход ФАПЧ

Частота какая?

4 hours ago, lkg47 said:

буфер перед R3 ставить нельзя

Кто сказал? Существуют специальные клоковые буферы, которые намного лучше будут распространять Вашу "частоту" по кристаллу с минимальными задержками.

И да, если там частота под 100-300МГц, тогда придётся всё фризить руками во floorplan'е. Ну а если там до 50МГц, тогда Вы городите ерунду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

Работать  в какой то мере будет - подозреваю что TC пытается придумать схему которая срабатывает если на входе  есть определенная (с заданным соотношением времени) последовательность импульсов. 
Но надежность и  целесообразность такого решения  вызывает большие сомнения - тут TC виднее зачем ему такое.   

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всем спасибо за комментарии,

решил проблему с помощью set_net_delay, добавил CLKCTRL блок

и прописал минимальные и максимальные задержки для 

1. data --> R1|d

2.1 data --> CLKCTRL|o

2.2 CLKCTRL|o -->reg R3

проверка на исполнение через TQ report_net_delay

image.thumb.png.995b2fe0c405ead340d833d2974c6bc2.png

и все-таки, существует ли вообще возможность задать разницу во времени между R1|d и R3|clk?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, lkg47 said:

проверка на исполнение через TQ report_net_delay

вот именно что только проверка на исполнение, довольно широкого окна. FPGA софт в основном не использует данный констрейн для работы.

1 hour ago, lkg47 said:

и все-таки, существует ли вообще возможность задать разницу во времени между R1|d и R3|clk?

ИМХО только ручное прибите гвоздями на чипе, даст гарантию на относительное не изменение получившейся задержки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, des00 said:

вот именно что только проверка на исполнение, довольно широкого окна. FPGA софт в основном не использует данный констрейн для работы.

не соглашусь с утверждением относительно quartus 15, проверил результаты компиляции для разных значений set_net_delay - видно , что подстраивается под заданные значения

Изменено пользователем lkg47

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, lkg47 said:

не соглашусь с утверждением относительно quartus 15, проверил результаты компиляции для разных значений set_net_delay - видно , что подстраивается под заданные значения

выложите проект посмотреть. Вот как сейчас помню слова квартуса в логах: обнаружен констрейн set_net_delay, он информационный и при работе использоваться не будет. Может конечно все изменилось с тех пор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

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,   у меня  даже   ошибки по нему иногда дает :sad:

+---------------+---------------+----------+---------------+-----------------------------------------------------------------+------------------------------------------------+------+
; 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 minutes ago, RobFPGA said:

Да вроде работает  set_net_delay,   у меня  даже   ошибки по нему иногда дает :sad:

Тайминг анализатор всегда использует все обьявленные констрейны! Возможно имелось ввиду, будут ли учитываться эти констрейны при синтезе или нет. Когда-то у меня были похожие симптомы с какими-то констрейнами (не помню какие уже) но это было очень давно и неправда:smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...