zombi 0 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба Есть внешняя мс подключенная к плис. Эта мс формирует и данные и клок, режим DDR. Клок поступает на dedicated clk pin плис, данные на обычные IO. В даташите на мс оговорено что данные появляются на его выходе минимум за 5 нс до любого фронта клока и минимум 5 нс удерживаются после него. Длина всех проводников одинаковая. В SDC описал только максимально возможную частоту формируемую мс, и больше никаких констрейнов для данных. Проект работает, но чувство того что чего-то не хватает меня не покидает. Надо ли какие-то set_input_delay добавить к SDC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба Почитайте статьи Дениса Шехалева по sdc - он с примерами доступно объясняет. Во например - https://kit-e.ru/fpga/synopsys-design-constraint-yazyk-zadaniya-vremennyh-ogranichenij-na-primere-altera-timequest-chast-3/ Ну и он может и сам объявится и подскажет что непонятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба Да, забыл написать - плис работает на частоте 150 МГц, а с внешней мс может поступать максимум 12 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба Насколько помню - в ПЛИС обычные входы могут иметь значительные задержки (емнип около 6 нс), поэтому даже при таком соотношении частот, вероятно, лучше всё же указать в sdc соотношение клока и даных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба Подскажите, на этой картинке все верно нарисовано и записано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба 2 hours ago, zombi said: Подскажите, на этой картинке все верно нарисовано и записано? где такую красивую картинку взяли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 13 апреля, 2021 Опубликовано 13 апреля, 2021 · Жалоба На просторах: Static Timing Analysis in a nutshell Так на ней всё в порядке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 5 hours ago, zombi said: Так на ней всё в порядке? по холду верно, а по сетапу ИМХО не тот фронт они выбрали. Хуже они не сделали, но физический смысл изменили) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 3 hours ago, des00 said: по сетапу ИМХО не тот фронт они выбрали А в констрейне 4 -max правильно записали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 2 minutes ago, zombi said: А в констрейне 4 -max правильно записали? Насколько понял - эта картинка нарисована исходя из того, что на входе ПЛИС данные сменяются одновременно с фронтом (внешнего) клока (на входе ПЛИС). У Вас же исходно - клок в середине данных. Т.е. Вам нужно ИМХО прописать задержки по нулям. Ну или в тех пределах, которые соответствуют таймингам конкретной ПЛИС. Т.е. если 16 hours ago, zombi said: данные появляются на его выходе минимум за 5 нс до любого фронта клока и минимум 5 нс удерживаются после него то можно в некотором окне разрешить Квартусу смещать данные относительно клока. Скажем, если задержать данные максимум на 3 нс, то будете иметь минимум 2 нс на сетап и минимум 5 нс на холд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 6 minutes ago, zombi said: А в констрейне 4 -max правильно записали? записано верно 3 hours ago, des00 said: по холду верно, а по сетапу ИМХО не тот фронт они выбрали. Хуже они не сделали, но физический смысл изменили) поправка, эта фраза относится к tsu/th входного регистра приемника. Если рассматривать выходной регистр передачтика (который и описывается командами set_input_delay), то картинка верная, как и запись. Максимальная задержка влияет на окно по tsu (сколько данные будут стоять до следующего фронта), минимальная на окно по th (сколько данные будут удерживаться после фронта). Логику и математику не обманешь 16 hours ago, zombi said: Да, забыл написать - плис работает на частоте 150 МГц, а с внешней мс может поступать максимум 12 МГц. функциональную схему стыка бы нарисовали, где указали путь обработки данных с микросхемы. все было бы намного проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 8 minutes ago, des00 said: Если рассматривать выходной регистр передачтика (который и описывается командами set_input_delay), то картинка верная, как и запись Спасибо! Не знаю - можно ли задавать отрицательные задержки на входе? Если да - то можно разрешить двигать данные в широких пределах, скажем +- 3 нс а то и больше (в зависимости от временнЫх параметров ПЛИС). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 1 minute ago, Yuri124 said: Не знаю - можно ли задавать отрицательные задержки на входе? задавать можно любые, вы же описываете временные параметры источника сигнала, а там могут быть отрицательные задержки, относительно общего источника тактовой частоты для микросхемы источника и для ПЛИС. Если в документации стоит отрицательное число, то его и нужно задавать (встречается например на ЦАПах когда внутри есть PLL/DLL) 1 minute ago, Yuri124 said: Если да - то можно разрешить двигать данные в широких пределах, скажем +- 3 нс а то и больше (в зависимости от временнЫх параметров ПЛИС). у xilinx там максимум полпериода опорной частоты 200/300/400МГц, у альтеры где то также. Поэтому в таких широких пределах врядли. По идее софт сам должен двигать эти задержки, но иногда ему нужна помошь, в виде "молотка и гвоздей", а иногда и "микроскопа", чтобы сделать динамически настраиваемую задержку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 20 minutes ago, des00 said: функциональную схему стыка бы нарисовали, где указали путь обработки данных с микросхемы. все было бы намного проще. Не совсем понял о какой функциональной схеме Вы спрашиваете. Реализовал так: по обоим фронтам входного клока 12 МГц защелкиваю данные в регистрах (вот для них и пытаюсь констрейны записать) стандартным образом частотой 150 МГц выделяю фронт частоты 12 МГц и использую этот сигнал как событие для дальнейших действий на частоте 150 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 12 minutes ago, des00 said: Поэтому в таких широких пределах врядли Спасибо. Я про величины задержек - чисто формально указать Квартусу, что может с вх. данными делать в этих широких пределах. Если физически это у него не получается - так пусть около нуля и сам оставит. Просто мысль возникла - что, например, задержка во вх. IO буфере будет, скажем, 5 нс, а на CLK вх. буфере - меньше, например, 3 нс. Вот уже имеем сдвиг данных 2 нс. Т.е. сказать Квартусу - что это не страшно, чтобы он не наворачивал обратно эти 2 нс задержки на клок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться