Грендайзер 0 24 октября, 2016 Опубликовано 24 октября, 2016 · Жалоба Здравствуйте. В который раз приступаю к работе с временными ограничениями и в который раз не могу понять ряд вещей. Прочитал статью 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. Но как эти команды задают эти параметры и зачем их вообще задавать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба Ну по поводу input/output_delay понять не трудно. К примеру, к ПЛИС подключена внешняя SDRAM память, сигналы для которой должны иметь жёсткие тайминги относительно друг друга и клока. Вот тут и приходят на помощь эти констрейны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kapsik 0 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба Вот тут можно посмотреть, глава "Асинхронные интерфейсы" в ней "Истинно асинхронные интерфейсы". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба К примеру, к ПЛИС подключена внешняя SDRAM память, сигналы для которой должны иметь жёсткие тайминги... Так зачем тогда set_max_delay и set_min_delay если есть set_input_delay и set_output_delay? Вот тут можно посмотреть, глава "Асинхронные интерфейсы" в ней "Истинно асинхронные интерфейсы". Спасибо, почитаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 25 октября, 2016 Опубликовано 25 октября, 2016 (изменено) · Жалоба Как я понял, данные команды нужны для того, что бы задавать задержки сигнала в комбинационной логике... Но в статье TimeQuest для чайников нет ничего про соотношения setup и hold для тактовых сигналов и для портов плис... Изменено 25 октября, 2016 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба Как я понял, данные команды нужны для того, что бы задавать задержки сигнала в комбинационной логике... Но в статье TimeQuest для чайников нет ничего про соотношения setup и hold для тактовых сигналов и для портов плис... Смотрите System/Source-Synchronus input/output - там все разжеванно хорошо с ограничеями по типу set_input_delay/set_output_delay (min/max). Единственно? не рассмотрен вопрос в режиме работы DDR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 25 октября, 2016 Опубликовано 25 октября, 2016 (изменено) · Жалоба Смотрите 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 (и зачем они нужны вообще). Изменено 25 октября, 2016 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба С командами типа set_input_delay/set_output_delay мне всё ясно. Я не понимаю зачем они дублируются командами set_max_delay и set_min_delay (и зачем они нужны вообще). Они задают абсолютную минимальную/максимальную задержку и используются в асинхронных режимах (грубо говоря, хочу через плисину пропустить сигнал от пина до пина с задержкой в заданном диапазоне). Ну а input/output задаются относительно тактовой частоты (фронт/срез) и фактически определяются нестабильностью данных и различными перекосами из-за разброса задержки по плате, т.е. в синхронном режиме и задача там не задать конкретную задержку от пина до регистра, а задать ограничения, чтобы требования по сетапам/холдам выполнились. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 25 октября, 2016 Опубликовано 25 октября, 2016 (изменено) · Жалоба Я так и думал. Спасибо :) Впрочем это мне и так было ясно. Непонятно зачем зачем задавать такие констрейны 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 который задан как тактовый сигнал... В данном случае ведь нет никакой "асинхронщины".... Изменено 25 октября, 2016 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Я, к сожалению, не смог найти где прописаны подобные ограничения - киньте ссылку. Это написано в статье товарища 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" Там в статье и говорится о том, что первый пример... Денис Шехалев в своей статье пишет, что "Если все так плохо, то как же тогда поступить в случае необходимости реализации в ПЛИС асинхронной защелки? Рассмотримэтот пример...". Т.е. как я понял он всё же пытается реализовать "асинхронную защёлку", но при этом - она синхронная... Впрочем спасибо за наводку, докапаюсь до аффтара Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба :bb-offtopic: Вообще самый подробный документ, в котором я видел описание анализа слаков по холдам и сетапам - документ в первой строчке поиском https://www.google.ru/webhp?sourceid=chrome...lysis+Explained Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 26 октября, 2016 Опубликовано 26 октября, 2016 (изменено) · Жалоба Да, я видел этот документ, где то даже валяется на диске... Но мне то интересно назначение команд, а не слаки... или я что то упустил? Изменено 26 октября, 2016 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Да, я видел этот документ, где то даже валяется на диске... Но мне то интересно назначение команд, а не слаки... или я что то упустил? Нет, ничего не упустили, просто используя команды Вы будете вместе с 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/ Я прикрепил, потому что подумал, что может кому-то будет интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Наверняка будет, и мне в том числе. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться