1 |
2 |
olivier.gi |
|
2 |
|
|
#=============================================================================#
|
3 |
|
|
# Read technology library #
|
4 |
|
|
#=============================================================================#
|
5 |
|
|
source -echo -verbose ./library.tcl
|
6 |
|
|
|
7 |
|
|
|
8 |
|
|
#=============================================================================#
|
9 |
|
|
# Read design RTL #
|
10 |
|
|
#=============================================================================#
|
11 |
|
|
source -echo -verbose ./read.tcl
|
12 |
|
|
|
13 |
|
|
|
14 |
|
|
#=============================================================================#
|
15 |
|
|
# Set design constraints #
|
16 |
|
|
#=============================================================================#
|
17 |
|
|
source -echo -verbose ./constraints.tcl
|
18 |
|
|
|
19 |
|
|
|
20 |
|
|
#=============================================================================#
|
21 |
|
|
# Set operating conditions & wire-load models #
|
22 |
|
|
#=============================================================================#
|
23 |
|
|
|
24 |
|
|
# Set operating conditions
|
25 |
|
|
set_operating_conditions -max $LIB_WC_OPCON -max_library $LIB_WC_NAME \
|
26 |
|
|
-min $LIB_WC_OPCON -min_library $LIB_BC_NAME
|
27 |
|
|
|
28 |
|
|
# Set wire-load models
|
29 |
|
|
set_wire_load_mode top
|
30 |
|
|
set_wire_load_model -name $LIB_WIRE_LOAD -max -library $LIB_WC_NAME
|
31 |
|
|
set_wire_load_model -name $LIB_WIRE_LOAD -min -library $LIB_BC_NAME
|
32 |
|
|
|
33 |
|
|
|
34 |
|
|
#=============================================================================#
|
35 |
|
|
# Synthesize #
|
36 |
|
|
#=============================================================================#
|
37 |
|
|
|
38 |
|
|
# Prevent assignment statements in the Verilog netlist.
|
39 |
|
|
set_fix_multiple_port_nets -all -buffer_constants
|
40 |
|
|
|
41 |
|
|
# Configure & Synthesize
|
42 |
|
|
current_design $DESIGN_NAME
|
43 |
|
|
set_max_area 0.0
|
44 |
|
|
set_flatten false
|
45 |
|
|
set_structure true -timing true -boolean false
|
46 |
|
|
|
47 |
|
|
compile -map_effort high -area_effort high
|
48 |
|
|
#compile_ultra -area_high_effort_script
|
49 |
|
|
#compile_ultra -area_high_effort_script -no_autoungroup -no_boundary_optimization
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
#=============================================================================#
|
53 |
|
|
# Reports generation #
|
54 |
|
|
#=============================================================================#
|
55 |
|
|
|
56 |
|
|
redirect ./results/report.timing {check_timing}
|
57 |
|
|
redirect ./results/report.constraints {report_constraints -all_violators -verbose}
|
58 |
|
|
redirect ./results/report.paths.max {report_timing -path end -delay max -max_paths 200 -nworst 2}
|
59 |
|
|
redirect ./results/report.full_paths.max {report_timing -path full -delay max -max_paths 5 -nworst 2}
|
60 |
|
|
redirect ./results/report.paths.min {report_timing -path end -delay min -max_paths 200 -nworst 2}
|
61 |
|
|
redirect ./results/report.full_paths.min {report_timing -path full -delay min -max_paths 5 -nworst 2}
|
62 |
56 |
olivier.gi |
redirect ./results/report.refs {report_reference}
|
63 |
2 |
olivier.gi |
redirect ./results/report.area {report_area}
|
64 |
|
|
|
65 |
56 |
olivier.gi |
# Add NAND2 size equivalent report to the area report file
|
66 |
|
|
if {[info exists NAND2_NAME]} {
|
67 |
|
|
set nand2_area [get_attribute [get_lib_cell $LIB_WC_NAME/$NAND2_NAME] area]
|
68 |
|
|
redirect -variable area {report_area}
|
69 |
|
|
regexp {Total cell area:\s+([^\n]+)\n} $area whole_match area
|
70 |
|
|
set nand2_eq [expr $area/$nand2_area]
|
71 |
|
|
set fp [open "./results/report.area" a]
|
72 |
|
|
puts $fp ""
|
73 |
|
|
puts $fp "NAND2 equivalent cell area: $nand2_eq"
|
74 |
|
|
close $fp
|
75 |
|
|
}
|
76 |
2 |
olivier.gi |
|
77 |
|
|
#=============================================================================#
|
78 |
|
|
# Dump gate level netlist & final DDC file #
|
79 |
|
|
#=============================================================================#
|
80 |
|
|
current_design $DESIGN_NAME
|
81 |
|
|
|
82 |
|
|
write -hierarchy -format verilog -output "./results/$DESIGN_NAME.gate.v"
|
83 |
|
|
write -hierarchy -format ddc -output "./results/$DESIGN_NAME.ddc"
|
84 |
|
|
|
85 |
|
|
|
86 |
|
|
quit
|