OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [synthesis/] [synopsys/] [synthesis.tcl] - Diff between revs 2 and 56

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 56
 
 
 
 
#=============================================================================#
#=============================================================================#
#                           Read technology library                           #
#                           Read technology library                           #
#=============================================================================#
#=============================================================================#
source -echo -verbose ./library.tcl
source -echo -verbose ./library.tcl
 
 
 
 
#=============================================================================#
#=============================================================================#
#                               Read design RTL                               #
#                               Read design RTL                               #
#=============================================================================#
#=============================================================================#
source -echo -verbose ./read.tcl
source -echo -verbose ./read.tcl
 
 
 
 
#=============================================================================#
#=============================================================================#
#                           Set design constraints                            #
#                           Set design constraints                            #
#=============================================================================#
#=============================================================================#
source -echo -verbose ./constraints.tcl
source -echo -verbose ./constraints.tcl
 
 
 
 
#=============================================================================#
#=============================================================================#
#              Set operating conditions & wire-load models                    #
#              Set operating conditions & wire-load models                    #
#=============================================================================#
#=============================================================================#
 
 
# Set operating conditions
# Set operating conditions
set_operating_conditions -max $LIB_WC_OPCON -max_library $LIB_WC_NAME \
set_operating_conditions -max $LIB_WC_OPCON -max_library $LIB_WC_NAME \
                         -min $LIB_WC_OPCON -min_library $LIB_BC_NAME
                         -min $LIB_WC_OPCON -min_library $LIB_BC_NAME
 
 
# Set wire-load models
# Set wire-load models
set_wire_load_mode top
set_wire_load_mode top
set_wire_load_model -name $LIB_WIRE_LOAD -max -library $LIB_WC_NAME
set_wire_load_model -name $LIB_WIRE_LOAD -max -library $LIB_WC_NAME
set_wire_load_model -name $LIB_WIRE_LOAD -min -library $LIB_BC_NAME
set_wire_load_model -name $LIB_WIRE_LOAD -min -library $LIB_BC_NAME
 
 
 
 
#=============================================================================#
#=============================================================================#
#                                Synthesize                                   #
#                                Synthesize                                   #
#=============================================================================#
#=============================================================================#
 
 
# Prevent assignment statements in the Verilog netlist.
# Prevent assignment statements in the Verilog netlist.
set_fix_multiple_port_nets -all -buffer_constants
set_fix_multiple_port_nets -all -buffer_constants
 
 
# Configure & Synthesize
# Configure & Synthesize
current_design $DESIGN_NAME
current_design $DESIGN_NAME
set_max_area  0.0
set_max_area  0.0
set_flatten false
set_flatten false
set_structure true -timing true -boolean false
set_structure true -timing true -boolean false
 
 
compile -map_effort high -area_effort high
compile -map_effort high -area_effort high
#compile_ultra -area_high_effort_script
#compile_ultra -area_high_effort_script
#compile_ultra -area_high_effort_script -no_autoungroup -no_boundary_optimization
#compile_ultra -area_high_effort_script -no_autoungroup -no_boundary_optimization
 
 
 
 
#=============================================================================#
#=============================================================================#
#                            Reports generation                               #
#                            Reports generation                               #
#=============================================================================#
#=============================================================================#
 
 
redirect ./results/report.timing         {check_timing}
redirect ./results/report.timing         {check_timing}
redirect ./results/report.constraints    {report_constraints -all_violators -verbose}
redirect ./results/report.constraints    {report_constraints -all_violators -verbose}
redirect ./results/report.paths.max      {report_timing -path end  -delay max -max_paths 200 -nworst 2}
redirect ./results/report.paths.max      {report_timing -path end  -delay max -max_paths 200 -nworst 2}
redirect ./results/report.full_paths.max {report_timing -path full -delay max -max_paths 5   -nworst 2}
redirect ./results/report.full_paths.max {report_timing -path full -delay max -max_paths 5   -nworst 2}
redirect ./results/report.paths.min      {report_timing -path end  -delay min -max_paths 200 -nworst 2}
redirect ./results/report.paths.min      {report_timing -path end  -delay min -max_paths 200 -nworst 2}
redirect ./results/report.full_paths.min {report_timing -path full -delay min -max_paths 5   -nworst 2}
redirect ./results/report.full_paths.min {report_timing -path full -delay min -max_paths 5   -nworst 2}
redirect ./results/report.area           {report_area}
 
redirect ./results/report.refs           {report_reference}
redirect ./results/report.refs           {report_reference}
 
redirect ./results/report.area           {report_area}
 
 
 
# Add NAND2 size equivalent report to the area report file
 
if {[info exists NAND2_NAME]} {
 
    set nand2_area [get_attribute [get_lib_cell $LIB_WC_NAME/$NAND2_NAME] area]
 
    redirect -variable area {report_area}
 
    regexp {Total cell area:\s+([^\n]+)\n} $area whole_match area
 
    set nand2_eq [expr $area/$nand2_area]
 
    set fp [open "./results/report.area" a]
 
    puts $fp ""
 
    puts $fp "NAND2 equivalent cell area: $nand2_eq"
 
    close $fp
 
}
 
 
#=============================================================================#
#=============================================================================#
#                    Dump gate level netlist & final DDC file                 #
#                    Dump gate level netlist & final DDC file                 #
#=============================================================================#
#=============================================================================#
current_design $DESIGN_NAME
current_design $DESIGN_NAME
 
 
write -hierarchy -format verilog -output "./results/$DESIGN_NAME.gate.v"
write -hierarchy -format verilog -output "./results/$DESIGN_NAME.gate.v"
write -hierarchy -format ddc     -output "./results/$DESIGN_NAME.ddc"
write -hierarchy -format ddc     -output "./results/$DESIGN_NAME.ddc"
 
 
 
 
quit
quit
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.