mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-01-10 15:23:37 +00:00
115 lines
3.6 KiB
Tcl
115 lines
3.6 KiB
Tcl
|
if {![info exist MODE ]} {set MODE QUARTUS}
|
||
|
if {![info exists QUARTUS_SDC]} {set QUARTUS_SDC true}
|
||
|
if {![info exists CORNER]} {set CORNER ""}
|
||
|
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"]
|
||
|
if { $CORNER != "" } {
|
||
|
alta::lconcat prog [list -X "set CORNER $CORNER"]
|
||
|
}
|
||
|
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"
|