hanchen
Newbie level 3
Tool: Design comipler 2008.09 sp1
when i try to compile a very simple code (below):
module test_generated_clock(gclk,grst,out1,out2);
input gclk;
input grst;
output [1:0] out1;
output [1:0] out2;
reg [1:0] out1;
reg [1:0] out2;
wire clk_gen;
always@(posedge gclk or negedge grst)
begin
if (!grst)
out1<=2'b00;
else
out1<=out1+1;
end
assign clk_gen=out1[1];
always@(posedge clk_gen or negedge grst)
begin
if (!grst)
out2<=2'b00;
else
out2<=out2+1;
end
endmodule
I use the below script to compile this code:
source ./synopsys_dc_SMIC18.setup
set DESIGN "test_generated_clock"
read_verilog ./test_generated_clock.v
link
create_clock -period 25 -waveform {0 12.5} [get_ports {gclk}]
set_clock_transition -rise 1 [get_clocks {gclk}]
set_clock_transition -fall 1 [get_clocks {gclk}]
set_clock_uncertainty 2 [get_clocks {gclk}]
set_clock_latency 1 -max [get_clocks {gclk}]
set_dont_touch_network [get_ports {gclk}]
set_dont_touch_network [get_ports {grst}]
set_operating_conditions "slow" -library slow
set_wire_load_model -name "smic18_wl30" -library slow
set_wire_load_mode "enclosed"
set_min_library slow.db -min_version fast.db
change_names -hierarchy -rules BORG
create_generated_clock -name clock_gen -source gclk -divide_by 4 [get_pins out1_reg_1_/Q]
set_dont_touch_network [get_clocks clock_gen]
set_propagated_clock [get_clocks clock_gen]
set_input_delay 10 -clock "gclk" [get_ports {grst}]
set_input_delay 10 -clock "clock_gen" [get_ports {grst}]
set_dont_touch_network gclk
set_output_delay 10 -clock "gclk" [get_ports {out1*}]
set_output_delay 10 -clock "clock_gen" [get_ports {out2*}]
set_load 1 [get_ports {out1*}]
set_load 1 [get_ports {out2*}]
set_fix_hold [get_clocks {gclk}]
set_fix_hold [get_clocks {clock_gen}]
#report_timing -from [get_ports gclk] -to [get_pins out1_reg_1_/Q] -path only
#change_names -hierarchy -rules BORG
#write -f verilog -hierarchy -o ./export/$DESIGN\_netlist.sv
##################
when i run the "check_timing" i run to this warning:
dc_shell> check_timing
Information: Checking generated_clocks...
Warning: The following generated clock has no path to its master clock. (TIM-204)
------------------------------
clock_gen
Information: Checking loops...
Information: Checking no_input_delay...
Information: Checking unconstrained_endpoints...
Information: Checking pulse_clock_cell_type...
1
i man the command "check_timing", but gets few messages.
i try some way to avoid this warning, but i failed.
could anyone tell me why this warning come out ?
and is there any way to avoid this problem?
Thanks!
when i try to compile a very simple code (below):
module test_generated_clock(gclk,grst,out1,out2);
input gclk;
input grst;
output [1:0] out1;
output [1:0] out2;
reg [1:0] out1;
reg [1:0] out2;
wire clk_gen;
always@(posedge gclk or negedge grst)
begin
if (!grst)
out1<=2'b00;
else
out1<=out1+1;
end
assign clk_gen=out1[1];
always@(posedge clk_gen or negedge grst)
begin
if (!grst)
out2<=2'b00;
else
out2<=out2+1;
end
endmodule
I use the below script to compile this code:
source ./synopsys_dc_SMIC18.setup
set DESIGN "test_generated_clock"
read_verilog ./test_generated_clock.v
link
create_clock -period 25 -waveform {0 12.5} [get_ports {gclk}]
set_clock_transition -rise 1 [get_clocks {gclk}]
set_clock_transition -fall 1 [get_clocks {gclk}]
set_clock_uncertainty 2 [get_clocks {gclk}]
set_clock_latency 1 -max [get_clocks {gclk}]
set_dont_touch_network [get_ports {gclk}]
set_dont_touch_network [get_ports {grst}]
set_operating_conditions "slow" -library slow
set_wire_load_model -name "smic18_wl30" -library slow
set_wire_load_mode "enclosed"
set_min_library slow.db -min_version fast.db
change_names -hierarchy -rules BORG
create_generated_clock -name clock_gen -source gclk -divide_by 4 [get_pins out1_reg_1_/Q]
set_dont_touch_network [get_clocks clock_gen]
set_propagated_clock [get_clocks clock_gen]
set_input_delay 10 -clock "gclk" [get_ports {grst}]
set_input_delay 10 -clock "clock_gen" [get_ports {grst}]
set_dont_touch_network gclk
set_output_delay 10 -clock "gclk" [get_ports {out1*}]
set_output_delay 10 -clock "clock_gen" [get_ports {out2*}]
set_load 1 [get_ports {out1*}]
set_load 1 [get_ports {out2*}]
set_fix_hold [get_clocks {gclk}]
set_fix_hold [get_clocks {clock_gen}]
#report_timing -from [get_ports gclk] -to [get_pins out1_reg_1_/Q] -path only
#change_names -hierarchy -rules BORG
#write -f verilog -hierarchy -o ./export/$DESIGN\_netlist.sv
##################
when i run the "check_timing" i run to this warning:
dc_shell> check_timing
Information: Checking generated_clocks...
Warning: The following generated clock has no path to its master clock. (TIM-204)
------------------------------
clock_gen
Information: Checking loops...
Information: Checking no_input_delay...
Information: Checking unconstrained_endpoints...
Information: Checking pulse_clock_cell_type...
1
i man the command "check_timing", but gets few messages.
i try some way to avoid this warning, but i failed.
could anyone tell me why this warning come out ?
and is there any way to avoid this problem?
Thanks!