Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
asic:timing:start [2024/08/16 17:58] – [Creating the timing graph] 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 ==== | ==== Reading in Liberty files ==== | ||
Line 30: | Line 38: | ||
Delays and transition times are added to the timing graph using information 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 ==== | ==== Reading in parasitics ==== |