OLD_SHURiK 0 17 апреля, 2020 Опубликовано 17 апреля, 2020 · Жалоба Всем привет и доброго здравия. Подскажите как обканстрейнить такую схему (attach), чтобы учитывались в MAXII Заранее всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 17 апреля, 2020 Опубликовано 17 апреля, 2020 · Жалоба Предлагаю взять за основу документ https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_timequest_cookbook.pdf Глава IO Constraints Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 18 апреля, 2020 Опубликовано 18 апреля, 2020 · Жалоба 21 hours ago, pavlovconst said: Предлагаю взять за основу документ https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_timequest_cookbook.pdf Глава IO Constraints т.е. получается надо описать как бы "наоборт" - для CP input это MO, а output MI. Соответственно для memory input это PI, а output PO. Так получается ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 18 апреля, 2020 Опубликовано 18 апреля, 2020 (изменено) · Жалоба @OLD_SHURiK Не понятно... Пожалуйста, пишите подробнее, тогда будет о чем говорить. Исходя из схемы я ДОГАДЫВАЮСЬ, что вы хотите пробросить сигналы через MAX, не защелкивая их в ПЛИС. Если да, то зачем вам констрейны? Задержки распространения от этого не уменьшатся, не увеличатся. Если, конечно, МАХ не забит под завязку другой логикой, не показанной на схеме. Будьте готовы снижать частоту SPI, чтобы учесть задержки распространения сигналов. Изменено 18 апреля, 2020 пользователем pavlovconst Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 18 апреля, 2020 Опубликовано 18 апреля, 2020 · Жалоба 10 минут назад, pavlovconst сказал: Исходя из схемы я ДОГАДЫВАЮСЬ, что вы хотите пробросить сигналы через MAX, не защелкивая их в ПЛИС. Если да, то зачем вам констрейны? Задержки распространения от этого не уменьшатся, не увеличатся. Будьте готовы снижать частоту SPI, чтобы учесть задержки распространения сигналов. Так для начала надо написать, что за CPU. Но и так понятно, что вряд ли SPI и Память будет работать на частоте выше единиц - десятков Мгц. И не более. И это не частоты для ПЛИС, а скажем так "медленно изменяющиеся сигналы", поскольку внутри ПЛИС частоты могут быть в сотни Мгц. И тем более, что и данные и клоки идут через ПЛИС. Так что если их ПЛИС и задержит, то не настолько, чтобы "Память" это заметила. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 18 апреля, 2020 Опубликовано 18 апреля, 2020 · Жалоба 44 minutes ago, iosifk said: Так для начала надо написать, что за CPU. Но и так понятно, что вряд ли SPI и Память будет работать на частоте выше единиц - десятков Мгц. И не более. И это не частоты для ПЛИС, а скажем так "медленно изменяющиеся сигналы", поскольку внутри ПЛИС частоты могут быть в сотни Мгц. И тем более, что и данные и клоки идут через ПЛИС. Так что если их ПЛИС и задержит, то не настолько, чтобы "Память" это заметила. да это spi шина. я хочу посчитать весь путь туда и обратно с учётом задержек распространения сигналов в MAX. На эту память будут работать два процессора. Так сказать некий мост. Да можно взять и посчитать ручками. Но зачем тогда TimeQuest? Или он не умеет такое считать ? Или это должен будет считать трассировщик ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба On 4/18/2020 at 10:42 PM, OLD_SHURiK said: да это spi шина. я хочу посчитать весь путь туда и обратно с учётом задержек распространения сигналов в MAX. Вам это зачем? если вам нужна цифра то по нетлисту запускаете команду детализации пути, если вам нужна задержка пути не больше максимальной, то задаете ее. Какую роль TQ и Quartus вы видите в вашей задаче? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба 1 hour ago, des00 said: Вам это зачем? если вам нужна цифра то по нетлисту запускаете команду детализации пути, если вам нужна задержка пути не больше максимальной, то задаете ее. Какую роль TQ и Quartus вы видите в вашей задаче? раньше всё по нетлисту и делали. Но зачем то появился TimeQuest. И задание задержек это тот же TimeQuest. По тому, что это его назначение считать все задержки распространения сигнала, не только клоки. И как говорится - если TimeQuest не выдаёт ошибок, то значит Вы не всё описали. Он же основан на базе Synopsys Design Constraints (SDC) который позволяет считать констрайны не только для случаев когда clock в FPGA - это частный случай. Поэтому и задан вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба 23 minutes ago, OLD_SHURiK said: раньше всё по нетлисту и делали. Но зачем то появился TimeQuest Это произошло совсем недавно, в 7-ой версии квартуса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 7 hours ago, OLD_SHURiK said: раньше всё по нетлисту и делали. Но зачем то появился TimeQuest. И задание задержек это тот же TimeQuest. По тому, что это его назначение считать все задержки распространения сигнала, не только клоки. И как говорится - если TimeQuest не выдаёт ошибок, то значит Вы не всё описали. Он же основан на базе Synopsys Design Constraints (SDC) который позволяет считать констрайны не только для случаев когда clock в FPGA - это частный случай. Поэтому и задан вопрос. эммм, TQ появился как ответ на все возрастающую сложность, появление многочастотных и высокочастотных проектов. Когда классический анализ не тянул. Что классический анализатор, что TQ, все работают по нетлисту. просто логи у них выдаются по разному. Если я вас правильно понял, вы хотите что бы после сборки, TQ вам написал: задержка по этому пути, в случае Worst Case будет х.х нс? что бы сделать это, надо запустить скриптом или в TQ приложении команду анализа конкретного пути. Также как и натыкать кнопки в классическом анализаторе. Или вы хотите так: собрать проект, что бы "задержка здесь была не более х.х нс", а TQ после сборки сказал вам "Все хорошо, я уложился, задержка НЕ БОЛЕЕ х.х нс". Т.е. она может быть любой в диапазоне 0...х.х нс, но не больше. Или вам нужно просто посчитать бюджет задержки для выбора частоты SPI? Ну так один раз посчитали, взяли запасы по 1-2нс и этого достаточно. Какой конкретно вариант вас интересует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 3 hours ago, des00 said: Или вам нужно просто посчитать бюджет задержки для выбора частоты SPI? Ну так один раз посчитали, взяли запасы по 1-2нс и этого достаточно. Какой конкретно вариант вас интересует? вот этот. Я понимаю что можно всё сделать ручками. Да , понимаю что проект не сложный. И используя Set_Maximum_Delay добился некоторых удовлетворяющих меня цифр. Но это должен считать и TimeQuest, это его работа. Задача описать ему клоки и задержки. Я описывал приём как rising , передачу как falling , но он упорно считает весь такт , а не половину relationship = period а не period/2. И хотелось бы заставить его это делать. На эту память могут работать несколько процессоров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 40 minutes ago, OLD_SHURiK said: Я понимаю что можно всё сделать ручками. Да , понимаю что проект не сложный. И используя Set_Maximum_Delay добился некоторых удовлетворяющих меня цифр. Но это должен считать и TimeQuest, это его работа. Задача описать ему клоки и задержки. дык именно TQ это и считает и используя Timing Driven Synthesis применяет. Логи посмотрите, временной анализ вызывается 2-3 раза за время сборки. Вы задали ограничения, их применили. Как получилось так получилось. Или вы как то по другому себе представляли эту серебряную пулю? Про другое, проект выложите, можно часть, тогда можно будет что-то сказать определенное) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 20 апреля, 2020 Опубликовано 20 апреля, 2020 (изменено) · Жалоба Ещё раз всем привет и доброго здравия . Главное здесь было задать как формируются клоки. Схема немного изменена (сигналы как в проекте) Параметры заданы для частоты 20MHz. это кусочек *.SDC Spoiler #************************************************************** # Time Information #************************************************************** set_time_format -unit ns -decimal_places 3 #************************************************************** # Create Clock #************************************************************** create_clock -name {clock} -period 40.000 -waveform { 0.000 20.000 } [get_ports {clock}] create_clock -name {cp1_sck} -period 50.000 -waveform { 0.000 25.000 } [get_ports {cp1_sck}] #************************************************************** # Create Generated Clock #************************************************************** create_generated_clock -name {m_sck_out} -source [get_ports {cp1_sck}] -master_clock {cp1_sck} -invert [get_ports {m_sck}] -add create_generated_clock -name {m_sck_in} -source [get_ports {cp1_sck}] -master_clock {cp1_sck} [get_ports {m_sck}] -add create_generated_clock -name {cp1_sck_in} -source [get_ports {cp1_sck}] -master_clock {cp1_sck} create_generated_clock -name {cp1_sck_out} -source [get_ports {cp1_sck}] -master_clock {cp1_sck} -invert #************************************************************** # Set Clock Latency #************************************************************** #************************************************************** # Set Clock Uncertainty #************************************************************** #************************************************************** # Set Input Delay #************************************************************** set_input_delay -add_delay -max -clock [get_clocks {m_sck_out}] 25.000 [get_ports {cp1_mosi}] set_input_delay -add_delay -min -clock [get_clocks {m_sck_out}] 0.000 [get_ports {cp1_mosi}] set_input_delay -add_delay -max -clock [get_clocks {cp1_sck_out}] 2.500 [get_ports {m_miso}] set_input_delay -add_delay -min -clock [get_clocks {cp1_sck_out}] 0.000 [get_ports {m_miso}] #************************************************************** # Set Output Delay #************************************************************** set_output_delay -add_delay -clock [get_clocks {m_sck_in}] 10.000 [get_ports {cp1_miso}] set_output_delay -add_delay -max -clock [get_clocks {cp1_sck_in}] 16.100 [get_ports {m_mosi}] set_output_delay -add_delay -min -clock [get_clocks {cp1_sck_in}] 0.000 [get_ports {m_mosi}] #************************************************************** # Set Clock Groups #************************************************************** set_clock_groups -exclusive -group [get_clocks {clock}] -group [get_clocks {cp1_sck cp1_sck_in cp1_sck_out m_sck_in m_sck_out}] это две таблички из TimeQuesta и как бы всё ПОЛУЧИЛОСЬ! Всем спасибо за советы !! Изменено 20 апреля, 2020 пользователем OLD_SHURiK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться