af_batch.tcl 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. if {![info exist MODE ]} {set MODE QUARTUS}
  2. if {![info exists QUARTUS_SDC]} {set QUARTUS_SDC true}
  3. if {![info exists CORNER]} {set CORNER ""}
  4. if {![info exist COUNT]} {set COUNT 6}
  5. if {![info exist JOBS ]} {set JOBS 1}
  6. if {![info exist SEEDS ]} {set SEEDS {0 0 0 0 666 888 }}
  7. if {![info exist EFFORTS ]} {set EFFORTS {highest highest highest highest high high }}
  8. if {![info exist FITTERS ]} {set FITTERS {hybrid hybrid hybrid hybrid hybrid hybrid }}
  9. if {![info exist FITTINGS]} {set FITTINGS {timing_more timing_more timing_more timing timing basic }}
  10. if {![info exist SKEWS ]} {set SKEWS {advanced advanced advanced advanced aggressive basic }}
  11. if {![info exist HOLDXS ]} {set HOLDXS {default default default default default default}}
  12. set bc_config [file join . bc_config.txt]
  13. if { [file exists $bc_config] } {
  14. alta::tcl_highlight "Using MC config $bc_config.\n"
  15. source "$bc_config"
  16. }
  17. #######################################################################
  18. proc get_rand_value { values } {
  19. if {[llength $values] == 0} { return {} }
  20. return [lindex $values [expr {int(rand()*10000)%[llength $values]}]]
  21. }
  22. set results "bc_results"
  23. set summary "bc_summary.txt"
  24. file delete -force $results; file mkdir $results
  25. file delete $summary; print -nonewline "" >! $summary
  26. set is_parallel [expr $JOBS > 1]
  27. set is_color ""; set is_gui ""; set is_quiet ""
  28. if { $is_parallel } {
  29. set is_gui "--quiet"
  30. } else {
  31. if { [alta::tcl_is_color] } { set is_color "--color" }
  32. if { [alta::tcl_is_gui ] } { set is_gui "--gui" }
  33. }
  34. #######################################################################
  35. set progs {}
  36. set titles {}
  37. for {set id 1} {$id <= $COUNT} {incr id} {
  38. set result_dir [file join $results $id]
  39. file mkdir $result_dir
  40. set seed [get_rand_value $SEEDS ]
  41. set effort [get_rand_value $EFFORTS ]
  42. set skew [get_rand_value $SKEWS ]
  43. set fitter [get_rand_value $FITTERS ]
  44. set fitting [get_rand_value $FITTINGS]
  45. set holdx [get_rand_value $HOLDXS ]
  46. set prog [list [info nameofexec] $is_quiet $is_color $is_gui -B --batch --mode $MODE]
  47. alta::lconcat prog [list -X "set QUARTUS_SDC $QUARTUS_SDC"]
  48. if { $CORNER != "" } {
  49. alta::lconcat prog [list -X "set CORNER $CORNER"]
  50. }
  51. alta::lconcat prog [list -X "set RESULT_DIR $result_dir"]
  52. if { $seed != "" } {
  53. alta::lconcat prog [list -X "set SEED $seed"]
  54. }
  55. if { $effort != "" } {
  56. alta::lconcat prog [list -X "set EFFORT $effort"]
  57. }
  58. if { $fitter != "" } {
  59. alta::lconcat prog [list -X "set FITTER $fitter"]
  60. }
  61. if { $fitting != "" } {
  62. alta::lconcat prog [list -X "set FITTING $fitting"]
  63. }
  64. if { $skew != "" } {
  65. alta::lconcat prog [list -X "set SKEW $skew"]
  66. }
  67. if { $holdx != "" } {
  68. alta::lconcat prog [list -X "set HOLDX $holdx"]
  69. }
  70. #alta::lconcat prog [list -F af_run.tcl]
  71. lappend progs $prog
  72. lappend titles "#$id $result_dir"
  73. }
  74. #######################################################################
  75. if { $is_parallel } {
  76. set bg_progs {}
  77. foreach bg_prog $progs {
  78. lappend bg_progs [lappend bg_prog $is_quiet]
  79. }
  80. bg_exec_queue $titles $bg_progs $JOBS
  81. }
  82. #######################################################################
  83. for {set id 1} {$id <= $COUNT} {incr id} {
  84. set result_dir [file join $results $id]
  85. set prog [lindex $progs [expr $id-1]]
  86. set title [lindex $titles [expr $id-1]]
  87. if { ! $is_parallel } {
  88. puts $title
  89. puts $prog
  90. eval "exec -ignorestderr {$prog} >&@ stdout"
  91. }
  92. print "***************************************************************************\n" >> $summary
  93. print "$title\n" >> $summary
  94. cat [file join $result_dir alta_db fmax.rpt] >> $summary
  95. cat [file join $result_dir alta_db xfer.rpt] >> $summary
  96. print "" >> $summary
  97. }
  98. alta::tcl_highlight "Check $summary for result.\n"