Contents
Preface
About This Manual
Additional References
Reporting Problems or Errors in Manuals
Customer Support
Cadence Online Support
Other Support Offerings
Supported User Interfaces
Messages
Man Pages
Command-Line Help
Getting the Syntax for a Command
Getting Attribute Help
Searching For Commands When You Are Unsure of the Name
Documentation Conventions
Text Command Syntax
Introduction
Overview
Installing the Genus Software
Licensing
Getting Started with Genus
The CDN_SYNTH_ROOT Variable
Using the Initialization File
Invoking Genus
Customizing the Log File and Command File Names
Setting Information Level and Messages
Working in the Genus Shell
Navigation
Objects and Attributes
Output Redirection
Scripting
Using SDC Commands
Getting Help
Getting Help on a Command or an Attribute
Getting Help on an Attribute
Genus Messages: Errors, Warnings, and Information
Tips and Shortcuts
Accessing UNIX Environment Variables from Genus
Working with Tcl in Genus
Using Command Abbreviations
Using Tab Completion
Using Wildcards
Using the Command Line Editor
Genus Design Information Hierarchy
Overview
Setting the Current Design
Specifying Hierarchy Names
Describing the Design Information Hierarchy
Working in the Top-Level (root) Directory
Working in the designs Directory
Working in the Library Directory
Working in the hdl_libraries Directory
Working in the obj_types Directory
Manipulating Objects in the Design Information Hierarchy
Ungrouping Modules During and After Elaboration
Finding Information in the Design Information Hierarchy
Using the vcd Command to Navigate the Design Information Hierarchy
Using the vls Command to List Directory Objects and Attributes
Using the get_db Command to Search for Information
Navigating a Sample Design
Saving the Design Information Hierarchy
Using the Libraries
Overview
Tasks
Specifying Explicit Search Paths
Specifying Implicit Search Paths
Specifying Settings that Influence Handling of Library Cells
Setting the Target Technology Library
Preventing the Use of Specific Library Cells
Forcing the Use of Specific Library Cells
Working with Liberty Format Technology Libraries
Using Voltage Scaling
Library Scaling in Multi-Mode Multi-Corner (MMMC) Flow
Troubleshooting
Cells Identified as Unusable
Cells Identified as Timing Models
Loading Files
Overview
Tasks
Updating Scripts through Patching
Running Scripts
Reading HDL Files
Loading HDL Files
Specifying the HDL Language Mode
Specifying HDL Search Paths
Reading Verilog Files
Defining Verilog Macros
Reading VHDL Files
Specifying the VHDL Environment
Verifying VHDL Code Compliance with the LRM
Specifying Illegal Characters in VHDL
Showing the VHDL Logical Libraries
Using Arithmetic Packages from Other Vendors
Modifying the Case of VHDL Names
Reading Designs with Mixed Verilog and VHDL Files
Reading in Verilog Modules and VHDL Entities with Same Names
Using Case Sensitivity in Verilog/VHDL Mixed-Language Designs
Reading and Elaborating a Structural Netlist Design
Reading a Partially Structural Design
Keeping Track of Loaded HDL Files
Importing the Floorplan
Elaborating the Design
Overview
Tasks
Performing Elaboration
Specifying Top-Level Parameters or Generic Values
Specifying HDL Library Search Paths
Elaborating a Specified Module or Entity
Naming Individual Bits of Array and Record Ports and Registers
Naming Individual Bits of Multi-Bit Wires
Naming Parameterized Modules
Keeping Track of the RTL Source Code
Grouping an Extra Level of Design Hierarchy
Applying Constraints
Overview
Tasks
Importing and Exporting SDC
Applying Timing Constraints
Importing Physical Information
Applying Design Rule Constraints
Creating Ideal Objects
Defining Optimization Settings
Overview
Preserving Instances and Modules
Grouping and Ungrouping Objects
Grouping
Ungrouping
Partitioning
Setting Boundary Optimization
Mapping to Complex Sequential Cells
Deleting Unused Sequential Instances
Controlling Merging of Combinational Hierarchical Instances
Optimizing Total Negative Slack
Making DRC the Highest Priority
Creating Hard Regions
Deleting Buffers and Inverters Driven by Hard Regions
Preventing Boundary Optimization through Hard Regions
Reducing Runtime Using Super-Threading
Overview
Licensing and CPU Usage
Using Super-Threading on Local Host
Using Super-Threading on Remote Shell
Using Super-Threading on Platform Load Sharing Facility (LSF)
Using Super-Threading on Sun Grid Engine (SGE)
Performing Synthesis
Overview
RTL Optimization
Global Focus Mapping
Global Incremental Optimization
Incremental Optimization (IOPT)
Tasks
Synthesizing your Design
Synthesizing Submodules
Synthesizing Unresolved References
Re-synthesizing with a New Library (Technology Translation)
Setting Effort Levels
Quality of Silicon Prediction
Generic Gates in a Generic Netlist
Generic Flop
Generic Latch
Generic Mux
Generic Dont-Care
Writing the Generic Netlist
Reading the Netlist
Analyzing the Log File
Retiming the Design
Overview
Retiming for Timing
Retiming for Area
Tasks
Retiming Using the Automatic Top-Down Retiming Flow
Manual Retiming (Block-Level Retiming)
Incorporating Design for Test (DFT) and Low Power Features
Localizing Retiming Optimizations to Particular modules
Controlling Retiming Optimization
Retiming Registers with Asynchronous Set and Reset Signals
Identifying Retimed Logic
Retiming Multiple Clock Designs
Performing Functional Verification
Overview
Tasks
Writing Out dofiles for Formal Verification
Generating Reports
Overview
Tasks
Generating Timing Reports
Generating Area Reports
Tracking and Saving QoR Metrics
Summarizing Messages
Redirecting Reports
Customizing the report_* Commands
Using the Genus Database
Overview
Tasks
Saving the Netlist and Setup
Restoring the Netlist and Setup
Splitting the Database
Interfacing to Place and Route
Overview
Preparing the Netlist for Place-and-Route or Third-Party Tools
Changing Names
Naming Flops
Removing Assign Statements
Inserting Tie Cells
Handling Bit Blasted Port Styles
Handling Bit-Blasted Constants
Generating Design and Session Information
Saving and Restoring a Session in Genus
Writing Out the Design Netlist
Writing SDC Constraints
Writing an SDF File
Modifying the Netlist
Overview
Connecting Pins, Ports, and hports
Disconnecting Pins, Ports, and hports
Creating New Instances
Overriding Preserved Modules
Creating Unique Parameter Names
Naming Generated Components
Changing the Instance Library Cell
IP Protection
Overview
Decryption and Encryption using xmprotect
Supported Encryption Flows
Variation due to encryption pragma
Variation due to type of encryption key
Levels of Protection
Round-trip Protection Flow
Details and Examples of Protection Features
Encrypting Designs within Genus
Encrypting Designs outside Genus
Loading Encrypted Designs
Writing Encrypted Designs
Attributes — "protected" and "encrypted"
Simple Synthesis Template
Index