Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to constraint interface with create_generated_clock

Status
Not open for further replies.

taenet

Newbie level 2
Joined
Dec 26, 2012
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,303
I have a design as following,
and I want to use create_generated_clock to constraint the interface (din, dout) in design compiler

=====================================================
module (clki, rst, din, dout, clko);
input clki, rst, din;
output dout, clko;

....
always @(posedge clki or posedge rst)
begin
if (rst)
clko <=1'b0;
else
clko <= ~clko;
end
endmodule
=====================================================

din, dout are the interface related with clko.
I tried to declare clko as a generated clock to constraint din & dout

=====================================================
create_clock clki -period P
set_ideal_network clki
set_dont_touch_network clki
create_generated_clock clko -source clki -divide_by 2
set_input_delay X [get_ports din] -clock clko -add
set_output_delay Y [get_ports dout] -clock clko -add
=====================================================

After compile, I check the timing report.
But here is no clock latency between clki & clko (I expect here is at least CK->Q delay),
My questions are:
1. How to let design compiler optimize with the CK->Q latency?
2. If I set_propagate_clock [get_clocks clki], the timing report will show CK->Q latency, but here are many max_transition/max_fanout violations on other points
3. How could I constraint interface by create_generated clock with clock latency from source to generated clock?
 

To my understanding:
1): you need set "set_propagate_clock [get_clocks clki]"
2): you need specify clko as ideal network, as you are doing RTL synthesis, no clock tree now. Maybe something like: set_ideal_network [get_pins clko_reg/Q].
 
  • Like
Reactions: bardia

    bardia

    Points: 2
    Helpful Answer Positive Rating
Thanks for your reply.
But if I set_propagate_clock [get_clocks clki],
there are so many design rule violation at other internal FFs, such as max_transition, max_fanout, max_capcitance, which caused by clki is an ideal network.
How could I solve this?

To my understanding:
1): you need set "set_propagate_clock [get_clocks clki]"
2): you need specify clko as ideal network, as you are doing RTL synthesis, no clock tree now. Maybe something like: set_ideal_network [get_pins clko_reg/Q].
 

Thanks for your reply.
But if I set_propagate_clock [get_clocks clki],
there are so many design rule violation at other internal FFs, such as max_transition, max_fanout, max_capcitance, which caused by clki is an ideal network.
How could I solve this?

Hi, you need pay attention to point 2). set_ideal_network on the generated clock: clko.
 
  • Like
Reactions: bardia

    bardia

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top