Jump to content

    
zombi

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
48 минут назад, zombi сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
11 minutes ago, zombi said:

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

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

Share this post


Link to post
Share on other sites
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 ???

Share this post


Link to post
Share on other sites
10 minutes ago, zombi said:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
16 hours ago, zombi said:

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

Edited by Yuri124

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.