af_quartus.tcl 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. set AGM_SUPRA true
  2. set RETRY 0
  3. set DESIGN "test_uart"
  4. if { [is_project_open] } {
  5. export_assignments
  6. }
  7. set is_compatible false
  8. if { $is_compatible } {
  9. cd
  10. qexec "[file join $::quartus(binpath) quartus_eda] $DESIGN --simulation --tool=modelsim --format=verilog"
  11. } else {
  12. set FITTER_EFFORTS {"STANDARD FIT" "STANDARD FIT" "FAST FIT" "FAST FIT" "FAST FIT"}
  13. set SEEDS [list [expr int(rand()*100)] \
  14. [expr int(rand()*100)] \
  15. [expr int(rand()*100)] \
  16. [expr int(rand()*100)] \
  17. [expr int(rand()*100)]]
  18. set PLACEMENT_EFFORTS [list [expr rand()*5+0.1] \
  19. [expr rand()*5+0.1] \
  20. [expr rand()*5+0.1] \
  21. [expr rand()*5+0.1] \
  22. [expr rand()*5+0.1]]
  23. set ROUTER_EFFORTS [list [expr rand()*5+0.25] \
  24. [expr rand()*5+0.25] \
  25. [expr rand()*5+0.25] \
  26. [expr rand()*5+0.25] \
  27. [expr rand()*5+0.25]]
  28. qexec "[file join $::quartus(binpath) quartus_sh] -t af_ip.tcl"
  29. load_package flow
  30. project_open $DESIGN
  31. set RETRY [expr $RETRY<[llength $FITTER_EFFORTS]?$RETRY:[llength $FITTER_EFFORTS]]
  32. for {set nn -1} {$nn < $RETRY} {incr nn} {
  33. if {$nn >= 0} {
  34. set_global_assignment -name FITTER_EFFORT \"[lindex $FITTER_EFFORTS $nn]\"
  35. set_global_assignment -name SEED [lindex $SEEDS $nn]
  36. set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER [lindex $PLACEMENT_EFFORTS $nn]
  37. set_global_assignment -name ROUTER_EFFORT_MULTIPLIER [lindex $ROUTER_EFFORTS $nn]
  38. }
  39. set code [catch {execute_flow -compile} msg]
  40. if { $code == 0 } { break }
  41. }
  42. }