11-06-2018 07:59 AM
How can I report the clock domains for the ports?
Let's assume that a Block A has an input ports IN1 and IN2 and also output ports OUT1 and OUT2 and also has the clock inputs CLK1 and CLK2.
Let's assume that the ports IN1 and OUT1 are internally clocked by the clock CLK1 and the IN2 and OUT2 ports are internally clocked by CLK2.
So, for each port, how can I report the related clock? E.g. how can I report by which clock the port IN1 is clocked?
How can I report that ports IN1 and OUT1 are clocked by the CLK1 and IN2 and OUT2 are clocked by the CLK2?
I'd like to generate such report for each port.
11-06-2018 06:13 PM
Open your synthesized design, go to the tcl console, and start playing around with commands (you can also use the GUI to help you get some syntax,
look at get_clocks get_cells, and get_pins with -of_objects and/or -hierarchical as necessary.
11-06-2018 08:57 PM - edited 11-06-2018 08:59 PM
You can certainly do it with the report_timing or get_timing_paths commands.
First, I need to know what this "block" is; is it a design on its own, or is it a block that is instantiated in the middle of another design (it will matter as to how to access the ports/pins of the block).
Let's say it is a block that has been synthesized on its own (either normally or out of context) - so when you open the design, it is the top design.
If IN1 is only captured by CLK1 then there will be timing paths between IN1 and CLK1, but not between IN1 and CLK2. So you can ask the timing tool "how many paths are there". This would be done with something like
llength [get_timing_paths -from [get_ports IN1] -to [get_clocks CLK1]]
This should return a value that is non-zero (if IN1 is captured by CLK1). In fact, since the get_timing_paths (with no options) only returns the worst path, this should return 1 if there are any paths.
llength [get_timing_paths -from [get_ports IN1] -to [get_clocks CLK2]]
should return 0 (since there are no paths)
Same for the outputs
llength [get_timing_paths -from [get_clocks CLK1] -to [get_ports OUT1]]
I'm sure there are other ways, but this should work...
11-07-2018 06:18 AM
What about the usage of the report_datasheet? It seems this command creates some summary of the ports vs clock.