Цитата(SM @ Jan 24 2010, 21:15)

Ну я разницы-то не заметил, в моем примере он четко берет фронт выходного клока out_clk с учетом всех его задержек и еще и offset-а. Эти задержки еще второй create_generated_clock рассчитал. Или может не туда смотрел?
Добавив в ваш код триггер, тактируемый мастер клоком, и несколько lcell, я получил следующее:
Код
`define SEVEN_LCELL
module count (
input master_clk,
output out_clk,
input ret_clk,
input d,
output reg o
);
logic d1;
logic t1, t2, t3, t4, t5 , t6, t7;
`ifdef SEVEN_LCELL
lcell lcell1 (master_clk, t1);
lcell lcell2 (t1, t2);
lcell lcell3 (t2, t3);
lcell lcell4 (t3, t4);
lcell lcell5 (t4, t5);
lcell lcell6 (t5, t6);
lcell lcell7 (t6, t7);
`else
lcell lcell1 (master_clk, t1);
lcell lcell2 (t1, t7);
`endif
assign out_clk = !t7;
always @(posedge ret_clk)
d1 <= d;
always @(posedge master_clk)
o <= d1;
endmodule
При этом .sdc файл остался неизменным:
Код
create_clock -name mclk -period "100 MHz" master_clk
create_generated_clock -name gclk -source master_clk -invert out_clk
create_generated_clock -name rclk -source out_clk -divide_by 2 -offset 1 ret_clk
set_clock_uncertainty -to [get_clocks rclk] 1
На команду:
Цитата
report_timing -from_clock { rclk } -to_clock { mclk } -setup -npaths 1 -detail path_only -panel_name {Report Timing}
мы получаем следующее результаты.
При 2-х lcell:
Цитата
Worst case slack is 2.802
При 7-ми lcell:
Цитата
Worst case slack is 2.802
Если же добавить в .sdc файл строку:
Цитата
set_clock_latency -source 0 [get_clocks {rclk}]
то результаты будут следующие:
При 2-х lcell:
Цитата
Worst case slack is -2.211
При 7-ми lcell:
Цитата
Worst case slack is -4.194
Вопрос:
почему при добавлении вышеуказанной строки появляется разница в задержке при разном количестве lcell, а при отсутствии этой строки количество lcell не задержку никак не влияет?