ConstHw 0 23 июня, 2016 Опубликовано 23 июня, 2016 (изменено) · Жалоба Всем привет Среда Vivado 2016.1 Есть модуль, в который заходит 2 клока, регистр защелкнутый по первому клоку (cfg_clk) передается во второй регистр, который защелкивается по второму (clk) module foo ( input clk_cfg , input clk , input a , output b ) always @(posedge clk_cfg) begin reg_a <= a; end always @(posedge clk) begin reg_b <= reg_a; end Модуль предполагается использовать в режиме, когда оба эти клока будут одинаковые, т.е. браться физически из одного клока .cfg_clk (clk) .clk (clk) Сейчас синтезирую модуль отдельно и не могу понять,как правильно указать виваде что эти клоки суть один клок. Через визард создаю констрейн что порт clk главный и от него рожается клок cfg_clk create_clock -period 4.000 -name clk -waveform {4.000 2.000} -add [get_ports clk] create_generated_clock -name cfg_clk -source [get_ports clk] -multiply_by 1 -combinational -add -master_clock clk [get_ports {cfg_clk}] Однако после синтеза вижу inter clock paths violation, для цепи reg_b <= reg_a; поскольку требуемая задержка 0.000. Что я делаю не так? вариант set false path не предлагать. Изменено 23 июня, 2016 пользователем ConstHw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
druzhin 4 23 июня, 2016 Опубликовано 23 июня, 2016 · Жалоба Странно. В подобной ситуации synplify видит что это один клок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 26 июня, 2016 Опубликовано 26 июня, 2016 · Жалоба В данном случае достаточно описать оба клока почти одинаковыми командами create_clock, и не разводить клоки по разным группам(чтобы они считались синхронными). create_generated_clock вообще не для этого нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться