Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
asic:timing:start [2023/11/25 11:51] – [Timing] rajit | asic:timing:start [2024/08/19 12:32] (current) – [Timing] rajit | ||
---|---|---|---|
Line 11: | Line 11: | ||
* [[asic: | * [[asic: | ||
- | Note that timing analysis requires that the design has been mapped to [[asic: | + | Note that timing analysis requires that the design has been mapped to [[asic: |
+ | cells have been [[asic: | ||
+ | |||
+ | ==== Loading the timer ==== | ||
+ | |||
+ | Make sure '' | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | |||
+ | ==== Reading in Liberty files ==== | ||
+ | |||
+ | The following two commands are used to read in the Liberty ('' | ||
^ Command ^ Meaning | ^ Command ^ Meaning | ||
Line 18: | Line 30: | ||
+ | ==== Creating the timing graph ==== | ||
+ | |||
+ | There are two ways to create a timing graph: | ||
+ | - When the design is fully specified in ACT and production rules are specified using cells that are auto-extracted by the ACT tools (e.g. using the '' | ||
+ | - When the design has user-specified cells/black box cells, then ACT assumes that timing arcs could potentially relate any input pin of the cell to any output pin, and the arcs are computed based on those specified in the '' | ||
+ | |||
+ | Delays and transition times are added to the timing graph using information in the '' | ||
+ | |||
+ | === TIming graph using ACT and Liberty files === | ||
+ | |||
+ | Most of the time, a timing graph can be created directly using a combination of the ACT files and the Liberty file that contains the cell library information. In what follows, we assume your design has been read in to '' | ||
+ | < | ||
+ | interact> | ||
+ | interact> | ||
+ | interact> | ||
+ | interact> | ||
+ | interact> | ||
+ | interact> | ||
+ | </ | ||
+ | (The timer requires the design to be mapped to a set of cells.) | ||
+ | |||
+ | Next, we must read in the Liberty file(s) we are using. | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | The library handle returned by the '' | ||
+ | |||
+ | To build the timing graph and initialize the timer, use: | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | Notice that we have passed in the handle corresponding to the Liberty file '' | ||
+ | |||
+ | === Scripting changes to the timing graph === | ||
+ | |||
+ | Sometimes it is useful to be able to edit the timing graph constructed by ACT. This can happen if, for example, the default timing graph generation algorithm doesn' | ||
+ | |||
+ | In the simple example earlier, '' | ||
+ | |||
+ | To build the timing graph, use: | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | |||
+ | Once the timing graph exists, we can introduce additional ticked edges as follows: | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | This looks for a timing arc/edge from '' | ||
+ | |||
+ | New timing constraints can also be introduced: | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | This command introduces a timing fork with '' | ||
+ | |||
+ | |||
+ | ^ Command ^ Meaning | ||
+ | | timer: | ||
+ | | timer:tick < | ||
+ | | timer: | ||
+ | | timer:init <lh1> <lh2> ... <lhN> | This initializes the timing engine (including creating the timing graph if necessary) using the Liberty file handles <lh1> through < | ||
+ | |||
+ | ==== Running the timer ==== | ||
+ | |||
+ | |||
+ | At this point the timer can be run using: | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | '' | ||
+ | * The cycle period '' | ||
+ | * The unfolding factor '' | ||
+ | (For details about what this means, please read the [[asic: | ||
+ | |||
+ | ^ Command ^ Meaning | ||
+ | | timer: | ||
+ | |||
+ | ==== Queries ==== | ||
+ | |||
+ | Once the run command is complete, a number of queries can be used to interrogate the computed timing. | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | |||
+ | Timing information for a net can be viewed using | ||
+ | < | ||
+ | interact> | ||
+ | </ | ||
+ | |||
+ | ==== Reading in parasitics ==== | ||
===== Power ===== | ===== Power ===== |