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