- •Contents
- •Preface
- •About This Manual
- •Other Information Sources
- •Syntax Conventions
- •Text Command Syntax
- •About the Graphical User Interface
- •Using Menus
- •Using Forms
- •Introduction to Ambit BuildGates Synthesis
- •Separately Licensed Software Products
- •Low Power Synthesis
- •Physically Knowledgeable Synthesis
- •Datapath Synthesis
- •AC_Shell / DC_Shell Equivalencies
- •Getting Started
- •Invoking Ambit BuildGates Synthesis
- •Exiting Ambit BuildGates Synthesis
- •Files Used in Ambit BuildGates Synthesis Software
- •Key Bindings and Mouse Operations
- •Using the GUI
- •Main Menu Functions
- •File Menu Options
- •Edit Menu Options
- •View Menu Options
- •Commands Menu Options
- •Reports Menu Options
- •Window Menu Options
- •Help Menu Options
- •The Tool Bar
- •The Browsers
- •The Module Browser
- •The Variable Browser
- •Work Area Tools
- •HDL and Tcl Editors
- •Constraints Tool
- •The Schematic Viewer
- •Distributed Processing
- •Update Mode
- •The ac_shell Console
- •The Status Bar
- •Flow Procedures
- •Typical Synthesis Flow
- •Read the Libraries
- •Read the Design Data
- •Build Generic Netlist
- •Set Constraints
- •Optimize the Design
- •Generate Reports
- •Save Final Netlist
- •Viewing the Schematic Design
- •How to Use the Schematic Viewer
- •Keyboard Shortcuts
- •Mouse Operations
- •Objects in the Schematic Database
- •Accessing Context-Sensitive Pop-Up Menus
- •Highlighting Path Between Pins
- •Viewing Bus Properties
- •The Schematic Tool Bar
- •The Module Title Bar
- •Searching for an Object
- •Grouping Instances
- •Dissolving Instances
- •Creating a Unique Module
- •Displaying Logic Cones
- •Extracting Logic Cones
- •Displaying Port Constraints
- •Printing a Schematic
- •Setting Constraints
- •Setting a Hierarchical Context
- •Units in Constraints
- •Timing Constraints
- •Timing Analysis
- •Setting up Timing Context
- •Clock Insertion Delay Time
- •Data Arrival Time
- •External Delay
- •Multicycle Paths
- •Setting Drive Cell for Input Ports
- •Setting Drive Resistance
- •Slew Related Commands
- •Technology and Design Rule Constraints
- •Operating Conditions
- •Estimating Capacitance and Resistance
- •Port Capacitance
- •Capacitance Limit
- •Fanout
- •Fanout Limit
- •External Sources and Sinks
- •Wire Capacitance
- •Wire Resistance
- •Wire Load Model Selection
- •Optimizing Before Place and Route
- •Running do_optimize Command
- •Top-Down Optimization
- •Bottom-Up Optimization
- •Deriving Constraints from Context
- •Time Budgeting
- •Preserving Module Contents
- •Uniquifying Instances
- •Collapsing Hierarchy
- •Incremental Optimization
- •Applying Timing Corrections
- •Optimizing with Logic Transforms
- •Introduction to Transforms
- •Logic Optimization Steps
- •Optimizing Generic Logic
- •Mapping and Unmapping of Generic Logic
- •Constraint-Driven Optimizing
- •Summary Listing of Transform Commands
- •Optimizing After Place and Route
- •Timing Analysis
- •Backannotating
- •A Script Showing the Backannotation of a Design
- •Reading SDF Data
- •Optimizing to Correct Late and Early Slack
- •Report Generation
- •Report Header
- •Timing Reports
- •Area Reports
- •Sample Area Report
- •Library Reports
- •Hierarchy Reports
- •Sample Hierarchy Report
- •Design Rule Violations Reports
- •Sample Design Rule Violations Report
- •VHDL Library Reports
- •Sample VHDL Library Report
- •End Point Slack and Path Histogram Reports
- •Fanin and Fanout Reports
- •Sample Fanin Report
- •Finite State Machine Reports
- •Sample FSM Report
- •Customizing Report Column Width
- •Using Tcl within ac_shell and pks_shell
- •The Tcl Language
- •Procedures
- •Tcl Variables and Control Structures
- •Variables
- •Syntax
- •Tcl Commands
- •get_names Command
- •Abbreviating Commands
- •Searching for Commands
- •Accessing Environment Variables
- •Returning Unix Command Values
- •Error Handling
- •Quick Reference
Ambit BuildGates Synthesis User Guide
Setting Constraints
Technology and Design Rule Constraints
A technology library contains both functional and timing information. The functional information is represented using operators and equations. The timing information includes specification of propagation delays within each cell and wire delays. During the cell selection process in logic synthesis, these delays are used to ensure that all the timing requirements
(constraints) are met. However, for accurate timing analysis, other aspects must be accounted for their impact on delay calculations considered, e.g. variation in operating condition, wire loads, fanout, etc.
Operating Conditions
The technology library contains timing data about all the cells at nominal voltage, temperature and process. You must consider how the variations in these conditions affect factors such as resistance, capacitance, propagation delay, etc. In turn, these factors affect the cell selection during the synthesis process. Hence, it is important that the operating condition be specified for a particular synthesis run to approximate the real circumstances under which the design will be used.
Each technology library contains one or more operating conditions. The set_operating_conditions command is used for setting the operating conditions. Each operating condition is identified by name, specifying process, voltage, and temperature. This information is used in calculating accurate cell delays from the nominal cell delays and the k- factors (also called derating factors) using either a linear model or non-linear model.
The syntax for the command is as follows:
set_operating_conditions [-library library_name] operating_conditions_name [-pvt min | typ | max]
where:
■library_name is the name of the technology library
■operating_conditions_name is the name of the operating condition in the library.
If only one technology library is used, the library option is not required.
Estimating Capacitance and Resistance
The delay information in the technology library applies to the timing arcs from input ports to output ports of each cell and the wire delays. The cell delays and the wire delays are expressed as a function of the physical characteristics of the nets in the design such as wire
September 2000 |
157 |
Product Version 4.0 |
Ambit BuildGates Synthesis User Guide
Setting Constraints
capacitance and wire resistance. In order to perform meaningful analysis before physical design, these parameters must be estimated. These estimates are derived from the models called wire load models.
Two commands effect wire load model determination: set_wire_load and set_wire_load_mode.
The technology library contains information about different wire load models. A wire load model is a function that uses the fanout count of a net and estimates its capacitance and resistance. A technology library contains different wire load models that are pre-computed based on the analysis of several designs differing in area. Typically, the technology libraries have an area lookup table that gives the wire load model for a given cell area of a design. Additionally, the floor planning tools may determine a specific wire load model for a design based on an initial physical design. These wire load models can be read in using read_library_update command; refer to the Envisia and Ambit Synthesis Command Reference for details.
The wire load can be set on the current module using the set_wire_load command;. the syntax is as follows:
set_wire_load [-library library_name] [-pvt min | typ | max ] [-hier]
wireload_model list_of_instances
where:
■library_name is name of the technology library to search.
■wireload_model is the name of the wire load model in the library.
■list_of_instances are the instances associated with the model.
The set_wire_load command applies to the module that is set as the current module using set_current_module command, and the wire load estimation is applied to all nets in the current module using the lookup table. If wire load model is not specified (i.e. no lookup table), then the delays are estimated based on the a wire load model determined from the area of the current module. See Wire Load Model Selection on page 163 for the wire load model selection algorithm.
In the absence of a user-specified wire load model, the set_wire_load_mode command controls the determination of the wire model; the syntax is as follows:
set_wire_load_mode [top | enclosed]
If enclosed mode is specified, the wire load model is selected using an area lookup table for the module at the lowest level in design hierarchy that contains the entire wire (net). If top mode is specified, the wire load model is selected using the area lookup table of the top level
September 2000 |
158 |
Product Version 4.0 |
Ambit BuildGates Synthesis User Guide
Setting Constraints
module (as set by set_top_timing_module command). The default wire load selection mode is top.
Port Capacitance
The port capacitance refers to the capacitance external to the design as seen by the input or output port of the design. The capacitance at any port is defined as the sum of external port capacitances to which the the port is connected (see Figure 6-17). For example, for input port
(A), the port capacitance refers to the capacitance of all the ports of the drivers on the net that connect to the input ports (C1, C2) and the capacitance of other loads on the net (C3). For an output port (Q), the port capacitance refers to the capacitance of the all the input ports of the cells that the output port is driving (C5, C6) and the capacitance of the input port of any other external drivers on this net (C4).
Figure 6-17 Distributed Capacitance at Input and Output Ports
C3 |
C4 |
|
A |
Q |
|
C1 |
|
C5 |
Current Module |
|
|
C2 |
|
C6 |
Port_cap(A) = C1 + C2 + C3 |
||
Port_cap(Q) = C4 + C5 |
+ C6 |
The set_port_capacitance command sets the capacitance on an input port or an output port; the syntax is as follows:
set_port_capacitance float port_list [-pvt min | typ | max]
where:
■float is the capacitance value
■port_list is the list of ports with this capacitance
September 2000 |
159 |
Product Version 4.0 |
Ambit BuildGates Synthesis User Guide
Setting Constraints
Capacitance Limit
The capacitance limit constraint is specified on top level input and output ports. The limit is the maximum value for the total capacitances (wire capacitance and pin capacitance) of nets attached to the ports in the port list. The set_port_capacitance_limit command overrides the default limit set by the set_global capacitance_limit command.
The syntax is as follows:
set_port_capacitance_limit float port_list
where:
■float is the capacitance limit.
■port_list is the list of ports with this capacitance limit.
Fanout
The input ports of each cell have fanout loads that are related to the number of transistors connected to the port in the cell. Similar to setting port capacitance, setting the fanout load of a port is done with the set_fanout_load command.
The syntax is as follows:
set_fanout_load load port_list
where:
■load is the total fanout load external to the design.
■port_list is the list of ports with this load.
While the port capacitance affects timing analysis, fanout loads are used to enforce the design rule checks.
Fanout Limit
The fanout limit specifies the fanout load limit (maximum value) on the ports of a cell and are used to enforce the design rule checks. The design rule requirement of a maximum fanout load value is set using the set_global attribute fanout_load_limit. For the specified ports, the set_fanout_load_limit command overrides the default fanout load limit defined by set_global fanout_load_limit.
The set_fanout_load_limit command syntax is as follows:
September 2000 |
160 |
Product Version 4.0 |