Are you doing CDC using an STA tool? If so then doing set_clock_group would give the tool info about the asynchronous domains and it'll treat all the clock crossings as false path, which is in contrast to your intent.
Usually if its a CDC specific tool, they'll have their own guidelines to write the CDC, so you'll have to refer to their documentation to come up with an SDC.
I am doing CDC on FPGA. Even for ASIC, if we are doing CDC using STA tool, how do we do it? We should be indicating the crossing path as false path through clock grouping asynchronous option isnt it? or do we give some other constraints to indicate CDC in ASIC?
I am doing CDC on FPGA. Even for ASIC, if we are doing CDC using STA tool, how do we do it? We should be indicating the crossing path as false path through clock grouping asynchronous option isnt it? or do we give some other constraints to indicate CDC in ASIC?
Timing is always done for signals belonging to synchronous domains, so CDC has to be done separately with a different set of constraints.
From an STA point of view you need to tell the tool which all clocks are asynchronous so that the tool treats asynchronous clock crossing paths as false paths. Hence we usually define clock groups and set each group as asynchronous to one another.
If you are using the same STA tool for CDC, then the tool must not be made aware of the fact about which all clocks are asynchronous. So essentially we are fooling the tool into believing that all the clocks are synchronous and needs to be timed. The tool then reports paths having violations across these crossings.
Once you have the violations you'll have to manually go through the reported paths and fix them by setting false paths.
This is tedious work and needs to be reviewed thoroughly so that you don't miss out on any unmanaged crossings.