Genus Basic RAK PDF
Genus Basic RAK PDF
Overview
Genus is a Drop-In Compatible Synthesis Tool
RTL
Constraints
.lib, .lef .sdc
Netlist Test
Genus
Drop-In Compatibility
Genus Inputs
HDL: Verilog, VHDL, System Verilog
(w/directives & pragmas)
Constraints: .SDC Optimized Verification
Library: .LIB and .LEF .sd netlist
GTech & DW foundation equivalents c
Optional: .CPF .DEF .captable .SAIF .TCF .VCD
Genus Outputs
Optimized gate-level netlist: .v Physical Design Analysis
Constraints: .SDC
Optional: scandef, DEF, Dofiles, .CONF
Standards-based compatibility
2 Copyright © 2016 Cadence Design Systems, Inc. All Rights Reserved
Genus Synthesis – the Next Generation of RTL Synthesis
A massively parallel architecture improves turnaround time by up to 5X while
maintaining quality of results
– Offers timing-driven, multi-level design partitioning across multiple threads and
machines
– Leverages parallelism at three levels
The Genus solution provides tight correlation with the Innovus Implementation
System, using the same placement and routing algorithms
– Shares algorithms, engines, and a common user interface with Innovus
Globally focused PPA optimization saves up to 20% datapath area and power
– Globally focused early PPA optimization across the whole datapath
This will create a script files: run.tcl – we will use this to operate Genus
7 Copyright © 2016 Cadence Design Systems, Inc. All Rights Reserved
Open Your Genus Documents
Before you proceed to edit the run scripts…
– Know where Genus’s supporting documents are kept
– They will be useful to explain new & unfamiliar commands, objects, attributes,
and variables used in the template
You can find them under the directory where tool is installed on your
system
unix:> which genus
it shows “$path_to_tool_directory/tools.xxx/bin/genus ”
Genus is a true Tcl-based tool, its run scripts are all Tcl scripts
They utilize variables, lists, objects, attributes, directories and
commands
Look for the angle brackets <name> to find what you need to provide
Again, use the documentation if something is not clear
The point of this training is to show you what parts of the run scripts are
relevant to what your want to do with Genus , the use of new commands,
and what parts of the scripts you need to modify
The following ‘run.tcl’ script, which is modified based on the template,
follows such style:
New Genus Commands are shown in ‘Red color’
The user input parts are shown in ‘Blue color’
###############################################################
## Library setup
###############################################################
####################################################################
## Load Design
####################################################################
##source verilog_files.tcl
read_hdl " pllclk.v accum_stat.v alu_32.v arb.v data_bus_mach.v data_sample_mux.v decode_i.v decoder.v \
digit_reg.v conv_subreg.v dma.v dtmf_recvr_core.v execute_i.v m16x16.v mult_32_dp.v \
port_bus_mach.v prog_bus_mach.v ram_128x16_test.v ram_256x16_test.v results_conv.v spi.v \
tdsp_core_glue.v tdsp_core_mach.v tdsp_core.v tdsp_data_mux.v tdsp_ds_cs.v test_control.v \
ulaw_lin_conv.v power_manager.v "
elaborate $DESIGN
puts "Runtime & Memory after 'read_hdl'"
time_info Elaboration
check_design –unresolved
####################################################################
## Constraints Setup
####################################################################
read_sdc ../Constraints/dtmf_recvr_core_gate.sdc
####################################################################################
## Synthesizing to gates
####################################################################################
syn_map
puts "Runtime & Memory after ‘syn_map'"
time_info MAPPED
report datapath > $_REPORTS_PATH/${DESIGN}_datapath_map.rpt
foreach cg [find / -cost_group *] {
report timing -cost_group [list $cg] > $_REPORTS_PATH/${DESIGN}_[basename $cg]_post_map.rpt
}
## Uncomment to remove assigns & insert tiehilo cells during Incremental synthesis
##set_attribute remove_assigns true /
##set_remove_assign_options -buffer_or_inverter <libcell> -design <design|subdesign> /
##set_attribute use_tiehilo_for_const <none|duplicate|unique> /
syn_opt
puts "Runtime & Memory after syn_opt"
time_info INCREMENTAL
foreach cg [find / -cost_group *] {
report timing -cost_group [list $cg] > $_REPORTS_PATH/${DESIGN}_[basename $cg]_post_incr.rpt
}
#################################
### write_do_lec
#################################
write_do_lec -golden_design ${_OUTPUTS_PATH}/${DESIGN}_intermediate.v -revised_design
${_OUTPUTS_PATH}/${DESIGN}_m.v -logfile ${_LOG_PATH}/intermediate2final.lec.log >
${_OUTPUTS_PATH}/intermediate2final.lec.do
##Uncomment if the RTL is to be compared with the final netlist..
##write_do_lec -revised_design ${_OUTPUTS_PATH}/${DESIGN}_m.v -logfile ${_LOG_PATH}/rtl2final.lec.log >
${_OUTPUTS_PATH}/rtl2final.lec.do
##quit
You can use ‘-h’ option to get help for Genus commands, for example:
legacy_genus:> write_template –h
legacy_genus:> write_design -h
Successful?
– Completion of running this script will end with the message
============================
Synthesis Finished .........
============================
– And leave you with a Genus prompt : legacy_genus:>
– And finally, your REPORT & OUTPUT directories should be populated as well
– To quit the tool: legacy_genus:> quit OR legacy_genus:> exit
Problems? The next part will discuss debugging tricks utilizing the logfile
17 Copyright © 2015 Cadence Design Systems, Inc. All Rights Reserved
Debug Synthesis: with logfile & timing reports
Were you successful with your synthesis run?
Look at your logfile!
– A nonstop run through the entire synthesis script without any errors or
significant warnings:
Keywords: Error, avoid, combinational, Black-boxes,
unresolved, following, read_sdc
– You can run Genus interactively to debug problems with your script
– There is also important information about your design -- with regard to your
optimization goals -- that is only available in the logfile:
Keywords: Target, incremental, Timing slack
/designs/dtmf_recvr_core/instances_hier/SPI_INST/instances_seq/present_state_reg[0]/pins_in/d
/designs/dtmf_recvr_core/instances_hier/SPI_INST/instances_seq/present_state_reg[1]/pins_in/d
/designs/dtmf_recvr_core/instances_hier/SPI_INST/instances_seq/present_state_reg[2]/pins_in/d
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Sequential clock pins without clock waveform
The following sequential clock pins have no clock waveform driving them. No
timing constraints will be derived for paths leading to or from these pins.
/designs/dtmf_recvr_core/instances_hier/TDSP_DS_CS_INST/instances_seq/t_bit_7_reg/pins_in/clk
/designs/dtmf_recvr_core/instances_hier/TDSP_DS_CS_INST/instances_seq/t_sel_7_reg/pins_in/clk
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Inputs without clocked external delays
The following primary inputs have no clocked external delays. As a result the
timing paths leading from the ports have no timing constraints derived from
clock waveforms. The'external_delay' command is used to create new external
delays.
/designs/dtmf_recvr_core/ports_in/Avdd
/designs/dtmf_recvr_core/ports_in/Avss
/designs/dtmf_recvr_core/ports_in/VDD_AO
... 6 other warnings in this category.
Use the -verbose option for more details.
Lint summary
Unconnected/logic driven clocks 0
Sequential data pins driven by a clock signa 3
Sequential clock pins without clock waveform 2
Sequential clock pins with multiple clock waveforms 0
Generated clocks without clock waveform 0
Generated clocks with incompatible options 0
Generated clocks with multi-master clock 0
Paths constrained with different clocks 0
Loop-breaking cells for combinational feedback 0
Nets with multiple drivers 0
Timing exceptions with no effect 0
Suspicious multi_cycle exceptions 0
Pins/ports with conflicting case constants 0
Inputs without clocked external delays 9
Outputs without clocked external delays 9
Inputs without external driver/transition 34
Outputs without external load 36
Exceptions with invalid timing start-/endpoints 0
Total: 93
The most common problem with read_hdl or elaborate is that the specified file
list was incomplete, had a bad search_path, or had typos.
The most common problem with SDC constraints is that the object can not be
found in Genus – the logfile lists a detailed explanation of each error.
If target is too negative then either something is wrong in the constraints
or there is bug in the tool. Fix the constraint.
Path adjust your I/Os so they are not showing up in target; false paths &
multicycle paths shouldn't show up either. (We’ll discuss path_adjust
later)
(u) : Net has unmapped pin(s). (b) : Timing paths are broken.
instances_comb
/ “root” directory
instances_hier
instances_seq
designs
sdp_groups
Top_module
analysis_views
delay_corners
CW
hdl_libraries nets
DW01
ports_in
DW02
ports_out
libraries DW03
power
DWARE
constraint_modes
object_types CWTECH
dft
GTECH
nets
messages IEEE
physical
LPWARE
modules timing
Genus allows you to navigate through both real directories where you run the
design and virtual design hierarchy. To navigate in virtual DH, Genus provides
unix-like commands. There is always a letter “v” comes in front of the commands
we use to navigate real directories:
• vcd <dirname> : setting the current directory in DH
• vcd <cr> : cd by itself will return you to the root directory “/”
• vpwd : shows the current directory in the design hierarchy
• vls : lists the objects in the current directory
• vls -a : lists the short list of the object’s attributes
• vls –la : lists the full list of the object’s attributes
Most common use of navigating the DH is to verify objects exist for use
in Genus/SDC commands
Syntax
set_attribute <attribute name> <value> <object>
get_attribute <attribute name> <object>
set_attribute information_level 5 /
get_attribute information_level /
To get information on all the attributes containing the word “info”:
legacy_genus:> get_attribute *info* *
Default Genus creates “default” cost group where all the paths are put.
– This default group continues to exist where ungrouped paths are positioned.
– Multiple clocks in the same domain need multiple cost_groups for flop ==> flop paths.
– If clocks are defined by reading in SDC constraints file, the cost groups are
automatically created for each of these clocks and paths are grouped into these groups.
– Paths to and from RAM blocks can be put in separate cost_group.
[-to_generic]:
stops after RTL is optimized (default for a design that has not been RTL-optimized)
[-to_mapped]:
stops after technology mapping (default for generic and mapped designs)
[-to_clock_gated]:
stops after design is clock gated
[-to_placed]:
stops after the design is placed and optimized
[-effort <string>]:
effort during optimization (high, medium(default), low, or express)
[-incremental]:
incrementally optimizes mapped gates
[-no_incremental]:
does not incrementally optimize mapped gates
[-spatial]:
performs a quick placement to optimize the mapped gates
[<design>+]:
the name of the design(s)
If you would like to perform timing-driven rtl optimizations (sharing and
RC Genus
synthesize –to_generic syn_generic
synthesize –to_mapped –no_incr syn_map
synthesize –to_mapped –incr syn_opt
“real” timing
Online:
– https://support.cadence.com
Email:
– [email protected]
Additional Resources:
unix:> which genus
– It shows “$path_to_tool_directory/tools.xxx/bin/genus ”
The documents can be found at
– “$path_to_tool_directory/doc/
49 Copyright © 2015 Cadence Design Systems, Inc. All Rights Reserved