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 ==== | ||