====== Static Timing and Power Analysis ====== ACT includes a static timing and power analysis engine called Cyclone. Cyclone takes an ACT design along with a Liberty file as well as (optional) parasitics to estimate the performance of the circuit, as well as to check any timing constraints required for correct operation. ===== Timing ===== Asynchronous circuits contain cycles of gates. How do we time them? The following provides more detail on how static timing analysis for asynchronous circuits works. Please read this before proceeding, as it will explain the terminology used as well as what the ''interact'' commands below are for. * [[asic:timing:graph|Timing model and graph]] * [[asic:timing:cells|Cell library and characterization]] * [[asic:timing:constraints|Timing constraints]] Note that timing analysis requires that the design has been mapped to [[asic:cells:start|cells]]. ==== Reading in Liberty files ==== The following two commands are used to read in the Liberty (''.lib'') files for the cells in the design. The timer uses a Liberty //file handle// to refer to one complete set of characterized cells (at one corner). If your Liberty files are split into say one file per cell, then they can be merged into a single file handle using the commands below. ^ Command ^ Meaning ^ | timer:lib-read | This reads in the specified file name as a ''.lib'' Liberty file, which contains delay and power information for the cells used in the design. This returns a handle to the Liberty file, used in other timing commands to refer to the ''.lib''. | | timer:lib-merge | If your ''.lib'' file is split into multiple files (e.g. for different groups of cells), then this command can be used to combine them into one handle. '''' is a valid Liberty file handle, and '''' is the new Liberty file to be merged into the file handle. | ==== 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 ''ckt:cell-map'' command), the timing arcs from each cell are computed from the production rules directly. These arcs are checked against the ''.lib'' file, and an error is reported if the timing arc is missing from the ''.lib''. - 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 ''.lib'' file. Delays and transition times are added to the timing graph using information in the ''.lib'' file. Commands to read in ''.lib'' files are: ^ Command ^ Meaning ^ | timer:lib-read | This command reads in a timing ''.lib'' file, and returns a handle. This handle is used to refer to the information from the ''lib'' file that was read by the timing engine. | | timer:lib-merge | This command takes an existing lib handle , and adds the contents of the ''.lib'' file to the handle | ==== Reading in parasitics ==== ===== Power =====