- •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
Optimizing After Place and Route
Both worst case and best case SDF timing are stored in the above example, although only a worst case timing library is loaded.
Reading SDF Data
The delay data extracted from a physical tool such as a floorplanner or a router can be imported using the Standard Delay Format (SDF) file. The syntax of the command is as follows:
read_sdf filename
where:
■filename is the name of the SDF file.
The design name in the SDF file must match the name of the current module. The timing data from SDF file is applied to the current module and its hierarchy. Both the cell delay data and the interconnect delay data are backannotated in the netlist. The minimum, typical and maximum delays are used from the SDF file. The backannotated delays overwrite the delays in the netlist database.
The name matching (of ports, nets, cells, and instances) between the SDF file and the netlist database is case sensitive.
Optimizing to Correct Late and Early Slack
Before optimization begins, each modules in the design should have only a single instance referring to it. If a module is instantiated more than once, modification will not be made to the module.
To automatically create copies of modules used more than once in the design and to bind instances to unique modules, use the following command:
do_uniquely_instantiate -hierarchical
September 2000 |
188 |
Product Version 4.0 |
Ambit BuildGates Synthesis User Guide
Optimizing After Place and Route
As shown in Figure 9-1, chip hierarchy is often organized with various JTAG modules, I/O cells, and a synthesizable core at the highest level.
Figure 9-1 Common Chip Hierarchy
Chip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Core |
|
Tap |
|
Boundary |
|
I/O |
|
RAM/ |
|||||
|
|
Scan Mod |
|
Buffer |
|
ROM |
|||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The synthesizable core contains the majority of the chip logic. The other peripheral modules and cells at the top level are often manually instantiated. With this hierarchy structure, the preferred optimization strategy is to use the worst case timing from the constraints applied at the chip level, but perform all optimization work within the synthesizable core. This is accomplished by setting the top timing module at the chip level and setting the current module to core before invoking the optimization transform.
set_current_module core
set_top_timing_module chip
To optimize the timing of the design by using cell resizing and buffer insertion, use the following transform command:
do_xform_timing_correction -dont_reclaim_area -resize -buffer
Note: For all transforms except do_xform_optimize_slack, only the - dont_reclaim_area option disables all reclaim area. For do_xform_optimize_slack, the reclaim area in the final timing correction phase is disabled.
Area reclamation is disabled to prevent removing buffers and their corresponding annotated nets.
If timing violations are still present after optimization, it is helpful to categorize the types of timing failures. To report up to 1000 failing timing paths in a design, use the following command:
report_timing -net -max_points 1000 -max_slack 0
September 2000 |
189 |
Product Version 4.0 |
Ambit BuildGates Synthesis User Guide
Optimizing After Place and Route
After determining the root cause for the failures, it may be necessary to change the physical placement of the components to reduce critical path capacitance. More aggressive synthesis transforms, such as do_xform_optimize_slack, can also be used to restructure failing paths, although annotated timing and parasitic information will be discarded for restructured components.
To restructure failing paths (and discard annotated timing and parasitic information for restructured components), use the following command:
do_xform_optimize_slack
Area reclamation with parasitic backannotation is recommended only through resize operations and can be performed with the following command before or after fixing late slack:
do_xform_reclaim_area -resize
Early or hold time violators are corrected next. For a full explanation of this process refer to the Envisia Timing Analysis User Guide, Finding and Fixing Violations chapter.
September 2000 |
190 |
Product Version 4.0 |