-
Notifications
You must be signed in to change notification settings - Fork 13
/
af_batch.tcl
110 lines (94 loc) · 3.52 KB
/
af_batch.tcl
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
if {![info exist MODE ]} {set MODE QUARTUS}
if {![info exists QUARTUS_SDC]} {set QUARTUS_SDC true}
if {![info exist COUNT]} {set COUNT 6}
if {![info exist JOBS ]} {set JOBS 1}
if {![info exist SEEDS ]} {set SEEDS {0 0 0 0 666 888 }}
if {![info exist EFFORTS ]} {set EFFORTS {highest highest highest highest high high }}
if {![info exist FITTERS ]} {set FITTERS {hybrid hybrid hybrid hybrid hybrid hybrid }}
if {![info exist FITTINGS]} {set FITTINGS {timing_more timing_more timing_more timing timing basic }}
if {![info exist SKEWS ]} {set SKEWS {advanced advanced advanced advanced aggressive basic }}
if {![info exist HOLDXS ]} {set HOLDXS {default default default default default default}}
set bc_config "./bc_config.txt"
if { [file exists $bc_config] } {
alta::tcl_highlight "Using MC config $bc_config.\n"
source "$bc_config"
}
#######################################################################
proc get_rand_value { values } {
if {[llength $values] == 0} { return {} }
return [lindex $values [expr {int(rand()*10000)%[llength $values]}]]
}
set results "bc_results"
set summary "bc_summary.txt"
file delete -force $results; file mkdir $results
file delete $summary; print -nonewline "" >! $summary
set is_parallel [expr $JOBS > 1]
set is_color ""; set is_gui ""; set is_quiet ""
if { $is_parallel } {
set is_gui "--quiet"
} else {
if { [alta::tcl_is_color] } { set is_color "--color" }
if { [alta::tcl_is_gui ] } { set is_gui "--gui" }
}
#######################################################################
set progs {}
set titles {}
for {set id 1} {$id <= $COUNT} {incr id} {
set result_dir "$results/$id"
file mkdir $result_dir
set seed [get_rand_value $SEEDS ]
set effort [get_rand_value $EFFORTS ]
set skew [get_rand_value $SKEWS ]
set fitter [get_rand_value $FITTERS ]
set fitting [get_rand_value $FITTINGS]
set holdx [get_rand_value $HOLDXS ]
set prog [list [info nameofexec] $is_quiet $is_color $is_gui -B --batch --mode $MODE]
alta::lconcat prog [list -X "set QUARTUS_SDC $QUARTUS_SDC"]
alta::lconcat prog [list -X "set RESULT_DIR $result_dir"]
if { $seed != "" } {
alta::lconcat prog [list -X "set SEED $seed"]
}
if { $effort != "" } {
alta::lconcat prog [list -X "set EFFORT $effort"]
}
if { $fitter != "" } {
alta::lconcat prog [list -X "set FITTER $fitter"]
}
if { $fitting != "" } {
alta::lconcat prog [list -X "set FITTING $fitting"]
}
if { $skew != "" } {
alta::lconcat prog [list -X "set SKEW $skew"]
}
if { $holdx != "" } {
alta::lconcat prog [list -X "set HOLDX $holdx"]
}
#alta::lconcat prog [list -F af_run.tcl]
lappend progs $prog
lappend titles "#$id $result_dir"
}
#######################################################################
if { $is_parallel } {
set bg_progs {}
foreach bg_prog $progs {
lappend bg_progs [lappend bg_prog $is_quiet]
}
bg_exec_queue $titles $bg_progs $JOBS
}
#######################################################################
for {set id 1} {$id <= $COUNT} {incr id} {
set result_dir "$results/$id"
set prog [lindex $progs [expr $id-1]]
set title [lindex $titles [expr $id-1]]
if { ! $is_parallel } {
puts $title
puts $prog
eval exec -ignorestderr $prog >&@ stdout
}
print "***************************************************************************\n" >> $summary
print "$title\n" >> $summary
cat "$result_dir/alta_db/fmax.rpt" >> $summary
cat "$result_dir/alta_db/xfer.rpt" >> $summary
print "" >> $summary
}
alta::tcl_highlight "Check $summary for result.\n"