dimka76 42 12 декабря, 2020 Опубликовано 12 декабря, 2020 · Жалоба Здравствуйте. Никак не получается написать констрейн. Модуль на Verilog module top_level( clock_50, ....); input clock_50; .... wire clk_150; ... main_pll I1(.PACKAGEPIN(clock_50), .PLLOUTGLOBAL(clk_150), .RESET(1'b1)); .... endmodule // top_level Пытаюсь задать констрейны для клока create_clock -period 40.000 -name {clock_50} [get_ports {clock_50}] create_generated_clock -name {clk_150} -source [get_ports {clock_50}] -multiply_ by 5 [get_ports {I1.main_pll_inst/PLLOUTGLOBAL}] set_clock_groups -exclusive -group {clock_50 clk_150} В итоге в логе компиляции появляется следующее сообщение Quote Cannot forward annotate set_clock_groups command because clock clk_150 cannot be found Что я делаю не так ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 13 декабря, 2020 Опубликовано 13 декабря, 2020 · Жалоба Если clk_150 не сгенерировался, тогда нужно посмотреть ворнинг по нему. Иначе придётся топтаться на месте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 13 декабря, 2020 Опубликовано 13 декабря, 2020 · Жалоба 42 minutes ago, Nick_K said: Если clk_150 не сгенерировался, тогда нужно посмотреть ворнинг по нему. Иначе придётся топтаться на месте. Есть такой автоматически сгенерированный файл Quote # Synopsys Constraint Checker(syntax only), version maplat, Build 1612R, built Dec 5 2016 В нем есть следующая строка Constraints with issues *********************** create_generated_clock -name { clk_150 } -source { } -multiply_by { by } { 5 } { } @E:"d:/dima/project/lattice/terst_1/test_1.sdc":2:0:2:0|Param "-multiply_by" has non integer parameter value which will be converted into integer. @N:"d:/dima/project/lattice/terst_1/test_1.sdc":2:0:2:0|Constraint will be disabled. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 13 декабря, 2020 Опубликовано 13 декабря, 2020 · Жалоба Все оказалось проще. В iceCUBE2 есть инструмент для Timing Constrain Editor. Создал с помощью него констрэйн. И вот такой синтаксис получился create_generated_clock [get_nets {clk_150}] -source [get_ports {clock_50}] -multiply_by 5 -name {clk_150} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 14 декабря, 2020 Опубликовано 14 декабря, 2020 · Жалоба 11 часов назад, dimka76 сказал: Все оказалось проще. В iceCUBE2 есть инструмент для Timing Constrain Editor. Создал с помощью него констрэйн. И вот такой синтаксис получился create_generated_clock [get_nets {clk_150}] -source [get_ports {clock_50}] -multiply_by 5 -name {clk_150} У вас в исходной строчке пробел перед by -multiply_ by Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 14 декабря, 2020 Опубликовано 14 декабря, 2020 · Жалоба 2 hours ago, _sda said: У вас в исходной строчке пробел перед by -multiply_ by Да, спасибо, я это тоже заметил. Но исправление не помогло, а помог только инструмент для Timing Constrain Editor. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 14 декабря, 2020 Опубликовано 14 декабря, 2020 · Жалоба 23 minutes ago, dimka76 said: Да, спасибо, я это тоже заметил. Но исправление не помогло, а помог только инструмент для Timing Constrain Editor. Всё верно, потому что вид net'а с которого нужно генерировать клок лоджен иметь вид "net:clk_150", кторый является выхлопом функции [get_nets {clk_150}], а запись вида -name { clk_150 } не является таковой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 14 декабря, 2020 Опубликовано 14 декабря, 2020 · Жалоба 38 minutes ago, Nick_K said: Всё верно, потому что вид net'а с которого нужно генерировать клок лоджен иметь вид "net:clk_150", кторый является выхлопом функции [get_nets {clk_150}], а запись вида -name { clk_150 } не является таковой. Понятно, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться