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.

[Synthesis] Virtual Clocks usage -> simple example

Status
Not open for further replies.

ivlsi

Advanced Member level 3
Advanced Member level 3
Joined
Feb 17, 2012
Messages
883
Helped
17
Reputation
32
Reaction score
16
Trophy points
1,298
Activity points
6,868
Hi All,

Can anyone provide a simple example how to use Virtual Clocks for Synthesis / STA?

When do we MUST use Virtual Clocks?

Thank you!
 

One scenario is when you have to specify input and output delays for ports which are not driven from a clock.
 

So, why not to use MIN/MAX delays instead of Virtual Clock?

When usage of Virtual Clock is MUST?
 

First of all I don't think it's an absolute must to use virtual clocks. It'll depend on the kind of methodology followed by the organization.

One example I can think of is, imagine you have signals belonging to multiple clock domains going to the pads; or maybe its the same signal which is driven by clock from the output of a clock mux. So virtual clock gives you the flexibility in this case to constrain the input and output delays based on individual clock frequencies.

Say sigA is driven by clock output from a clock mux who has ClkA and ClkB as input clocks. So you define two virtual clocks each synchronous to ClkA and ClkB respectively and write the input/output delay constraint which respect to each clock.

So this is cleaner than specifying a min/max delay constraint since this I believe will be less pessimistic. I hope it makes some sense.
 
  • Like
Reactions: ivlsi

    ivlsi

    Points: 2
    Helpful Answer Positive Rating
define two virtual clocks each synchronous to ClkA and ClkB respectively
As far as I know, a Virtual Clock cannot be attached to any port/net (otherwise it will become functional, not virtual). So, how can I define it to be synchronous to ClkA/ClkB?
 

using set_clock_groups and grouping the virtual_ClkA and ClkA in the same group.

set_clock_groups -group {ClkA virtual_ClkA}

So this will help the tool to time the path from sigA ( working on ClkA and going out ) to the ports w.r.t a virtual_ClkA, which is considered external to your chip but synchronous to ClkA.
 
  • Like
Reactions: ivlsi

    ivlsi

    Points: 2
    Helpful Answer Positive Rating
Re: [Synthesis] Virtual Clocks usage -> simple example

As for divided clocks, should they be considered as synchronous and be defined in the same clocks group (using set_clock_groups command)?

- - - Updated - - -

define two virtual clocks each synchronous to ClkA and ClkB respectively and write the input/output delay constraint which respect to each clock
So, nevertheless why virtual clocks should be created? Why the constraints cannot be applied with relation to the ClkA and ClkB themselves?
 

Re: [Synthesis] Virtual Clocks usage -> simple example

As for divided clocks, should they be considered as synchronous and be defined in the same clocks group (using set_clock_groups command)?

Yes, divided clocks should also be part of the same clock group.


So, nevertheless why virtual clocks should be created? Why the constraints cannot be applied with relation to the ClkA and ClkB themselves?

If ClkA and ClkB are going out of the chip then you may use them for constraining the input and output delay. But you need virtual clocks when this is not the case.

Here's a link that explains the concept of virtual clocks and I guess it best answers your query -->
Cadence forum
 

divided clocks should also be part of the same clock group
Why? They have different frequencies and probably different skews... What's about a clock divider by 4/5?
Should the source and divided clock be considered as parts of the same clock domain (where a maximum skew of clock edges is guarantied)?
 

[Moved]Clock Domains -> how defined?

Hi All,

How clock domains are defined? Let's say, should the source and divided by 2 clocks be defined as the same clock domain? What's about a clock divider by 3/5?

Thank you!
 
Last edited by a moderator:

define two virtual clocks each synchronous to ClkA and ClkB respectively and write the input/output delay constraint which respect to each clock
So, nevertheless why virtual clocks should be created? Why the constraints cannot be applied with relation to the ClkA and ClkB themselves?
 

Why? They have different frequencies and probably different skews... What's about a clock divider by 4/5?
Should the source and divided clock be considered as parts of the same clock domain (where a maximum skew of clock edges is guarantied)?

Yes you are right, there can't be a generalization. Its up to the designer whether you want to put the divided clocks in the same group or not.

If you want to balance the divided and the source clocks then define them in the same group, otherwise don't.

Say, for example if the divided clock signals are not interacting with the source clock signals you may want to put them in different groups so that the tool doesn't spend time trying to balance them.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top