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

Констрейны для двух похожих режимов.

Подскажите, какую величину -max и -min в констрейнах set_input_delay указать что бы обеспечить выполнение требований для обоих режимов SD карты?

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

A.thumb.jpg.8c457aeb4bbf7b30de80be6d650b0067.jpgB.thumb.jpg.77cdd2b356f7211c9ce6a54bd2585618.jpg

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


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

Неужели никто не знает?

Может я не правильно сформулировал вопрос.

Попробую спросить по другому.

Как правильно указать констрейны для входного интерфейса плис в режиме SDR при условии что частота может быть разной?

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


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

48 минут назад, zombi сказал:

Как правильно указать констрейны для входного интерфейса плис в режиме SDR при условии что частота может быть разной?

Указать максимальую частоту и параметры для неё. На остальных частотах будет работать автоматом.

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


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

Я вот тоже было так подумал, но хорошо что ув. aaarrr в теме "MiroSD UHS-I инициализация на 50 МГц" обратил моё внимание на то,

что на диаграммах указан интервал выставления данных (TODLY max) для режима default (первая картинка) относительно предыдущего отрицательного фронта клока,

а не относительно предыдущего нарастающего (как обычно и указывают для режимов SDR (кстати на второй картинке именно так)).

И вот теперь я в замешательстве...

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


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

11 minutes ago, zombi said:

И вот теперь я в замешательстве...

Посчитайте для Ваших реальных частот, которые будут в проекте, в каком случае будет наихудший тайминг - по тому и ориентируйтесь.

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


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

12 минут назад, zombi сказал:

И вот теперь я в замешательстве...

Картинки не похоже на тайминг DDR. Скорее SDR

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


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

1 minute ago, MegaVolt said:

Картинки не похоже на тайминг DDR. Скорее SDR

А почему они должны быть похожи на DDR? обе картинки для SDR!

6 minutes ago, Yuri124 said:

Посчитайте для Ваших реальных частот, которые будут в проекте, в каком случае будет наихудший тайминг - по тому и ориентируйтесь.

Считаю :

для частоты 25 МГц параметр -max констрейна set_input_delay должен быть равен половине периода + TODLYmax = 20 нс + 14 нс = 34 нс

для частоты 50 МГц судя по диаграмме TODLYmax = 14 нс

Так какую же величину max мне в констрейне указывать, 34 или 14 ???

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


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

10 minutes ago, zombi said:

Так какую же величину max мне в констрейне указывать, 34 или 14 ???

по расчету моему - без разницы. В обоих случаях до latch clock rising edge имеется 6 нс.

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

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


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

Мы делаем немного хотрее. Тул поддерживает несколько клоков в цепях по которым и делается анализ. Так в последнем проекте глобально по всему кристаллу проходило 5 клоковб 2 из которых были отличной частоты от основной. Для каждого клока делался констрейн и прописывался по всем нужным критическим точкам. Ну и понятное дело - не все эндпоинты получали одинаковый набор клоков. Отсюда можете попробовать задать несколько частот и констрейнов под них и сделать эксклюзивными (они ведь физически не могут быть в кристалле одновременно). Возможно у тулзы получится сделать нужные рассчёты и подтянуть нужную времянку.

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


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

Честно говоря вообще ничего не понял, наверно по неопытности.

Вы предлагаете создать две виртуальные частоты и для каждой частоты задать set_input_delay для одних и тех же портов?

А так можно? И у меня разные частоты формируется самой плис на конкретном пине.

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


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

16 hours ago, zombi said:

Вы предлагаете создать две виртуальные частоты и для каждой частоты задать set_input_delay для одних и тех же портов?

А так можно? И у меня разные частоты формируется самой плис на конкретном пине.

Я предлагаю создать 2,3-да_сколько_угодно частот на одном порте простым объявлением (или дженерейтед клок). Фактически они будудут -logically_exclusive или -physically_exclusive так как одновременно не могут присутствовать, но в завосомости от настроек, будут переключаться. И далее на эндпоинтах (критических точках) уже заниматься конфигурацией необходимых констрейнов для конкретной частоты. Если нигде нет -stop_propagation то по умолчанию все клоки распространяются по всему клоковому дереву, а уже сама IDE должна разруливать подстройку констрейнов под конкретную частоту.

Важный момент, если эти частоты генерируются в ПЛИС и выходят наружу, они должны быть обьявлены как частоты, а не как данные (для понимания тулами). Отсюда появится несколько частот по одним и тем же цепям. И да, с ниг придётся сделать ещё виртуальные, так как input/output delay создаётся только к виртуальным частотам.

По вопросу насколько это можно - нужно проверить в конкретном IDE. Каденс тулы работают с такими вещами запросто, остальное нужно пробовать. Заодно по результатам расскажете где поднялось, а где нет.

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


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

Возможно, можно создать несколько различных клоков на одном выводе ПЛИС (и каждому указать свои констрейны)  - по вот как для поступающего извне клока можно сделать:

Quote

# Assign two clocks to an input port that are switched externally
create_clock -period 10 -name clk100Mhz [get_ports clk]
create_clock -period 6.667 -name clk150Mhz -add [get_ports clk]

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_sdctmq.pdf

 

Quote

create_generated_clock [-add] [-divide_by ] [-duty_cycle ] [-edge_shift ] [-edges ] [-invert] [-master_clock ] [-multiply_by ] [-name ] [-offset ] [-phase ] -source

 

-add: Add clock to existing clock node

-divide_by : Division factor

-duty_cycle : Specifies the duty cycle as a percentage of the clock period--accepts floating point values

-edge_shift : List of edge shifts

-edges : List of edge values

-invert: Invert the clock waveform

-master_clock : Specifies clock of the source node

-multiply_by : Multiplication factor

-name : Name of generated clock

-offset : Specifies the offset as an absolute time shift

-phase : Specifies the phase shift in degrees

-source : Source node for the generated clock : List or collection of targets

 

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

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


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

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

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

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

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

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

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

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

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

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