blob: 45afc7437bec38f5db9edd73f5415a8e466dbb05 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
sh date
# set some per design variables FIXME - use these!
# set LOG_PATH "synth/dc_test_synth/log/"
# set GATE_PATH "synth/dc_test_synth/gate/"
# set RTL_PATH "synth/dc_test_synth/verilog/"
# Should be moved to a synthesis setup dot file?
set target_library {/sw/mentor/libraries/cmos065_522/CORE65LPLVT_5.1/libs/CORE65LPLVT_nom_1.20V_25C.db}
set link_library $target_library
proc dir_exists {name} {
if { [catch {set type [file type $name] } ] } {
return 0;
}
if { $type == "directory" } {
return 1;
}
return 0;
}
source designinfo.tcl
if {[dir_exists $TOPLEVEL.out]} {
sh rm -r ./$TOPLEVEL.out
}
sh mkdir ./$TOPLEVEL.out
set power_preserve_rtl_hier_names true
current_design $TOPLEVEL
elaborate $TOPLEVEL
# Set timing constaints, this says that a max of .5ns of delay from
# input to output is allowable
#set_max_delay .1 -from [all_inputs] -to [all_outputs]
# If this were a clocked piece of logic we could set a clock
# period to shoot for like this
set_clock_gating_style -max_fanout 16
# Some default settings, you probably need to change this for your
# particular project!
create_clock clk -period 2
set_input_delay -clock clk 0.1 [all_inputs]
set_output_delay -clock clk 0.1 [all_outputs]
# FIXME - check this!
#optimize_registers -sync_trans multiclass
# Check for warnings/errors
check_design
# ungroup everything
ungroup -flatten -all
# flatten it all, this forces all the hierarchy to be flattened out
set_flatten true -effort high
uniquify
# This forces the compiler to spend as much effort (and time)
# compiling this RTL to achieve timing possible.
#
# Clock gating is enabled by default to reduce power.
compile_ultra -gate_clock
# Now that the compile is complete report on the results
check_design > ./$TOPLEVEL.out/check_design.rpt
report_constraint -all_violators -verbose > constraint.rpt
report_wire_load > wire_load_model_used.rpt
report_area > area.rpt
report_qor > qor.rpt
report_timing -max_paths 1000 > timing.rpt
report_ultra_optimization > ultraopt.rpt
report_power -verbose > power_estimate.rpt
report_design > ./$TOPLEVEL.out/design_information.rpt
report_resources > ./$TOPLEVEL.out/resources.rpt
# Finally write the post synthesis netlist out to a verilog file
write -f verilog -output synthesized_netlist.v -hierarchy
quit
|