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

TimeQuest, кто ж тебя выдумал?

Виртуальный клок нужен чтобы достроить граф STA на интерфейсах: по входу он создает входную арку, а по выходу - выходную. При этом можно варьировать тип арки, к примеру - выбирать фронт (rise или fall), выбирать тип проверки для этой арки (setup или hold). Но поскольку арка должна иметь два конца (иначе путь будет unconstrained), то виртуальный клок должен быть синхронен принимающему клоку (по входу) и/или запускающему (по выходу). Виртуальных клоков можно создавать сколько угодно. Но и в схеме может быть много асинхронных клоков, и тогда надо следить - какой виртуальный клок синхронен какому внутреннему клоку. Соответственно, при создании виртуальных клоков потребуется задавать дополнительные фалзпасы.

 

Требование алтеры констрейнить интерфейсы виртуальным клоком выглядит странно. Если констрейнить синхронный вход не относительно собственного клока, а относительно виртуального, то действительно - тайминг будет отличаться на величину uncertainty и drive adjustment клокового пина (поскольку к виртуальному клоку эти твики не применяются). Но эту разницу в тайминге куда проще упрятать в величину задержки констрейнта, чем плодить виртуальные клоки. Обычно виртуальный клок используется, чтобы констрейнить асинхронные входы, чтобы они хоть как то контролировались тулом. Либо для каких то тонких моментов вроде DDR, где констрейнить интерфейс надо по обоим фронтам клока, и может оказаться проще задать два виртуальных клока со сдвигом фазы 50%, и написать констрейнт относительно переднего фронта каждого из них. Т.е. виртуальный клок - вещь специфическая, почти как кунгфу (применяется при необходимости). Но, альтере виднее, конечно. Возможно, у них тул так специфически работает, что необходимо заводить виртуальную копию каждому интерфейсному клоку.

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


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

Вот, картинкой подкреплю. Соответствует рисункам 13 и 12 из Cookbook. Слева - для выхода, справа - для входа.

Здесь похожая арифметика. Смотрели?

Timing_Constraints

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


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

Здесь похожая арифметика. Смотрели?

Timing_Constraints

Да, смотрел, спасибо. Хороший документ.

И этот тоже покажем для коллекции.

http://www.alterawiki.com/wiki/TimeQuest_User_Guide

Жаль, на дописал его Райан Сковиль.

 

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

Это несложно. :rolleyes: Все задержки снаружи ПЛИС описывать виртуальными тактами.

Я описываю задержки в АЦП и в дорожках на плате, подключенных к ПЛИС. И т.п. Все, как в учебниках.

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


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

и в дорожках на плате, подключенных к ПЛИС

Не поделитесь методикой?

 

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


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

Не поделитесь методикой?

Все согласно сказанному выше. Проверил только что. Вот фрагменты из sdc файла.

Там некоторые данные и такты инверсные используются. Так LVDS развелись.

И еще длина дорожек (задержка) разные в разных цепях шины. Это уже разводчики постарались. Убил бы сейчас.

# Задержка распространения рассчитана на калькуляторе Saturn PCB
# Microstrip, W = 0.250 mm, H = 0.345 mm, FR-4 STD, 0.18 + 0.18 µm (Zo = 77 Ohm)
# было Tpd = 0.00563
# Saturn PCB V6.88, Conductor Impedance, Tpd (ns/mm)
# Microstrip, W = 0,25 mm, H = 0,34 mm, FR-4 STD, 0,18 um + 0,35 um (Zo = 75.5 Ohms)
set Tpd 0.00584

set ADC1clk_min [expr 53.453 * $Tpd]
set ADC1clk_max [expr 55.604 * $Tpd]
set ADC2clk_min [expr 50.640 * $Tpd]
set ADC2clk_max [expr 54.596 * $Tpd]

# Задержки преобразования в АЦП (1.9 valid,min | 2.8 pd,typ | 3.8 pd,max)
# Окно верных данных с АЦП
set ADCtco_min 3.8
set ADCtco_max [expr 1.9 + 4.0]

# Задержки данных из АЦП по плате
set ADC1dat_min [expr 15.893 * $Tpd]
set ADC1dat_max [expr 42.767 * $Tpd]
set ADC2dat_min [expr 15.325 * $Tpd]
set ADC2dat_max [expr 34.516 * $Tpd]

# Задержки тактов для ПЛИС
set PLDclk_min [expr 14.693 * $Tpd]
set PLDclk_max [expr 15.099 * $Tpd]

# Входные такты (сдвинуты на полпериода, потому что инверсные) 
create_clock -name plc -period "250 MHz" -waveform {2.0 4.0} [get_ports {PLC_N}]

# Внешние виртуальные такты для тактирования сигналов с АЦП
create_clock -name clka -period "250 MHz"

# Канал 1
set_input_delay \
-clock clka -min \
[expr $ADC1clk_min + $ADCtco_min + $ADC1dat_min - $PLDclk_max] \
{S1D_N[*] S1D_P}
set_input_delay \
-clock clka -max \
[expr $ADC1clk_max + $ADCtco_max + $ADC1dat_max - $PLDclk_min] \
{S1D_N[*] S1D_P}

# Канал 2
set_input_delay \
-clock clka -min \
[expr $ADC2clk_min + $ADCtco_min + $ADC2dat_min - $PLDclk_max] \
{S2D_P[*] S2D_N[*]}
set_input_delay \
-clock clka -max \
[expr $ADC2clk_max + $ADCtco_max + $ADC2dat_max - $PLDclk_min] \
{S2D_P[*] S2D_N[*]}

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


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

# Задержки данных из АЦП по плате

set ADC1dat_min [expr 15.893 * $Tpd]

set ADC1dat_max [expr 42.767 * $Tpd]

Простите за любопытство, а что есть эти магические цифры: 15.893, 42.767

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


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

Простите за любопытство, а что есть эти магические цифры: 15.893, 42.767

Длина дорожки умноженная на удельную задержку Tpd (ns/mm)

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


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

Длина дорожки умноженная на удельную задержку Tpd (ns/mm)

Да. Так развели плату. Погонную задержку в Saturn PCB прикинул.

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


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

Длина дорожки умноженная на удельную задержку Tpd (ns/mm)

ADC1dat_min и ADC1dat_max - так это разные дорожки? Мне показалось, что одна и та же, просто рассчитывается мин. и макс. задержка. Если первая цифра - это длина, а Tpd - погонная задержка, тогда не понятно было, как длина одной и той же дорожки может быть разной... Названия сбили с толку.

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


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

ADC1dat_min и ADC1dat_max - так это разные дорожки? Мне показалось, что одна и та же, просто рассчитывается мин. и макс. задержка. Если первая цифра - это длина, а Tpd - погонная задержка, тогда не понятно было, как длина одной и той же дорожки может быть разной... Названия сбили с толку.

Во-первых, это дифференциальные сигналы, длина дорожек + и - могут отличаться.

Во-вторых, с АЦП идет шина данных.

В данном случае описана самая короткая и самая длинная дорожки в шине.

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


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

Во-первых, это дифференциальные сигналы, длина дорожек + и - могут отличаться.

Во-вторых, с АЦП идет шина данных.

В данном случае описана самая короткая и самая длинная дорожки в шине.

Да, теперь понятно, спасибо

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


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

Вот наткнулся на интересную штуку по констрейнам: http://www.in2p3.fr/actions/formation/Nume...A_TimeQuest.pdf

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


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

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

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

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

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

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

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

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

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

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