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

Непонимаю set_max_delay и set_min_delay

Здравствуйте. В который раз приступаю к работе с временными ограничениями и в который раз не могу понять ряд вещей. Прочитал статью http://www.eet.bme.hu/~nagyg/mikroelektron..._User_Guide.pdf и вроде всё понятно... но... Никак не возьму в толк - на кой нужны команды set_max_delay и set_min_delay. В статье написано, что это "низкоуровневые команды" которые дают возможность вручную задать соотношения между launch и latch фронтами тактовых частот. Но зачем? Если я описал тактовые сигналы, зачем мне ещё как то там доопределять эти временные соотношения. А что касается применения этих команд к портам ПЛИС - так вообще ахтунг! Есть 2 команды set_input_delay и set_output_delay. Накой там set_max_delay и set_min_delay? В статье написано, что это нужно для задания опять таки "низкоуровневых" параметров таких как Tsu, Th, Tco и какого то Tpd. Но как эти команды задают эти параметры и зачем их вообще задавать?

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


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

Ну по поводу input/output_delay понять не трудно.

К примеру, к ПЛИС подключена внешняя SDRAM память, сигналы для которой должны иметь жёсткие тайминги относительно друг друга и клока.

Вот тут и приходят на помощь эти констрейны.

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


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

Вот тут можно посмотреть, глава "Асинхронные интерфейсы" в ней "Истинно асинхронные интерфейсы".

 

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


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

К примеру, к ПЛИС подключена внешняя SDRAM память, сигналы для которой должны иметь жёсткие тайминги...

Так зачем тогда set_max_delay и set_min_delay если есть set_input_delay и set_output_delay?

Вот тут можно посмотреть, глава "Асинхронные интерфейсы" в ней "Истинно асинхронные интерфейсы".

Спасибо, почитаю.

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


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

Как я понял, данные команды нужны для того, что бы задавать задержки сигнала в комбинационной логике... Но в статье TimeQuest для чайников нет ничего про соотношения setup и hold для тактовых сигналов и для портов плис...

Изменено пользователем Грендайзер

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


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

Как я понял, данные команды нужны для того, что бы задавать задержки сигнала в комбинационной логике... Но в статье TimeQuest для чайников нет ничего про соотношения setup и hold для тактовых сигналов и для портов плис...

Смотрите System/Source-Synchronus input/output - там все разжеванно хорошо с ограничеями по типу set_input_delay/set_output_delay (min/max). Единственно? не рассмотрен вопрос в режиме работы DDR.

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


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

Смотрите System/Source-Synchronus input/output - там все разжеванно хорошо с ограничеями по типу set_input_delay/set_output_delay (min/max)...

С командами типа set_input_delay/set_output_delay мне всё ясно. Я не понимаю зачем они дублируются командами set_max_delay и set_min_delay (и зачем они нужны вообще).

Изменено пользователем Грендайзер

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


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

С командами типа set_input_delay/set_output_delay мне всё ясно. Я не понимаю зачем они дублируются командами set_max_delay и set_min_delay (и зачем они нужны вообще).

Они задают абсолютную минимальную/максимальную задержку и используются в асинхронных режимах (грубо говоря, хочу через плисину пропустить сигнал от пина до пина с задержкой в заданном диапазоне). Ну а input/output задаются относительно тактовой частоты (фронт/срез) и фактически определяются нестабильностью данных и различными перекосами из-за разброса задержки по плате, т.е. в синхронном режиме и задача там не задать конкретную задержку от пина до регистра, а задать ограничения, чтобы требования по сетапам/холдам выполнились.

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


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

Я так и думал. Спасибо :) Впрочем это мне и так было ясно. Непонятно зачем зачем задавать такие констрейны

set_max_delay -from [get_clocks sys_clk] -to [get_clocks sys_clk] 8.0

set_min_delay -from [get_clocks sys_clk] -to [get_clocks sys_clk] 1.0

Т.е. для заданных тактовых сигналов. Setup и hold для них всёравно заданы (ведь заданы сами сигналы).

И ещё по поводу TimeQuest для чайников. Автор пишет, что для задания временных ограничений асинхронной логики необходимо ввести тактовый сигнал и относительно него задавать ограничения. Но простите, если в схеме присутствует тактовый сигнал - то какая она асинхронная. Вот 2 примера из статьи Дениса Шехалева в КИТ:

 

module async_decoder (input [1 : 0] idat, output logic odat);
assign odat = &idat;
endmodule

 

И второй

 

module async_decoder (input ce, input [1 : 0] idat, output logic odat);
always_ff @(posedge ce) odat = &idat;
endmodule

 

Я к сожалению не знаю Verilog и может что то не понял, но во втором случае у нас ведь описан классически триггер и присвоение odat = &idat идёт именно по положительному фронту ce который задан как тактовый сигнал... В данном случае ведь нет никакой "асинхронщины"....

Изменено пользователем Грендайзер

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


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

set_max_delay -from [get_clocks sys_clk] -to [get_clocks sys_clk] 8.0

set_min_delay -from [get_clocks sys_clk] -to [get_clocks sys_clk] 1.0

Я, к сожалению, не смог найти где прописаны подобные ограничения - киньте ссылку.

Вот 2 примера

Там в статье и говорится о том, что первый пример - асинхронщина, второй - синхронная логика. И по секрету - многие знают, что есть различные временные углы для анализа времянок, зависящих от напряжения и температуры, но так же сильное влияние оказывает технологический разброс в пределах одного угла - при оценке сетапа рассчитывается максимальное время распространения по данным и минимальное по частоте, а по холду наоборот. Так что нафиг эту асинхронщину, лучше не задавать max/min, а привязываться к частоте и задавать перекос и анализировать setup/hold.

Вообще вопросы по статье лучше задать самому автору в личке - des00.

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


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

Я, к сожалению, не смог найти где прописаны подобные ограничения - киньте ссылку.

Это написано в статье товарища Ryan Scoville в статье "TimeQuest User Guide" Wiki Release 1.1 December 9th 2010. Её можно скачать здесь https://www.google.ru/#newwindow=1&q=ti...uest+user+guide. Эти констрейны описаны на стр. 59 в параграфе "Max and Min Delays"

Там в статье и говорится о том, что первый пример...

Денис Шехалев в своей статье пишет, что "Если все так плохо, то как же тогда поступить в случае необходимости реализации в ПЛИС асинхронной защелки? Рассмотримэтот пример...". Т.е. как я понял он всё же пытается реализовать "асинхронную защёлку", но при этом - она синхронная... Впрочем спасибо за наводку, докапаюсь до аффтара :biggrin:

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


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

:bb-offtopic:

Вообще самый подробный документ, в котором я видел описание анализа слаков по холдам и сетапам - документ в первой строчке поиском https://www.google.ru/webhp?sourceid=chrome...lysis+Explained

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


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

Да, я видел этот документ, где то даже валяется на диске... Но мне то интересно назначение команд, а не слаки... или я что то упустил?

Изменено пользователем Грендайзер

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


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

Да, я видел этот документ, где то даже валяется на диске... Но мне то интересно назначение команд, а не слаки... или я что то упустил?

Нет, ничего не упустили, просто используя команды Вы будете вместе с timequest, к примеру, анализировать слаки на предельно возможных частотах, если что-то пойдет не так, а именно здесь и в этом документе я увидел тонкости

Data Arrival Time = Launch Edge + Longest tCLK + µtCO + Longest tD
Clock Arrival Time = Latch Edge + Shortest tCLK ‘

а это с официального документа

Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + μtCO+ Register to Register Delay
Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register

Это по сетапу, по холду Longest превратися в Shortest и наоборот. В официальных документах я не видел фразы, что время распространения, скажем, данных от пина до регистра для анализа холдов/сетапов будет разным, а если опять же в timequest посмотреть путь распространения этого же сигнала от пина до регистра, то это время будет между временем анализа по сетапу и холду. И это в пределах одной временной модели.

 

PS/ Я прикрепил, потому что подумал, что может кому-то будет интересно.

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


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

Наверняка будет, и мне в том числе. Спасибо.

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


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

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

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

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

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

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

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

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

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

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