Commit 3380ebc2 authored by Jens Korinth's avatar Jens Korinth
Browse files

Extend optimization 42 target period span

* extended range from 0.5 to 10ns (2GHz - 100MHz)
* increased step size to 0.25ns => 38 measurements
* fixed bug in optimization level 1/2 settings
* improved O3 level to even more aggressive settings
* added sweep, remapping and constant propagation to initial netlist
  optimization
parent 44e5ca91
Pipeline #303 passed with stage
in 3 minutes and 7 seconds
......@@ -59,7 +59,7 @@ if {@@OPTIMIZATION@@ == 42} {
set opt 3
set target_opt 0
set period 0.5
set target_period 5.0
set target_period 10.0
}
set results_file [open [file join [file dirname "@@REPORT_TIMING@@"] "synthesis_results.tsv"] "w+"]
......@@ -68,7 +68,7 @@ set runtimes_file [open [file join [file dirname "@@REPORT_TIMING@@"] "synthesis
puts $runtimes_file "TT\tTF\tO\tP\tS\t\E\tD"
#for {set period 0.5} {$period <= 5.0} {set period [expr $period + 0.125]} {
for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
for {} {$period <= $target_period} {set period [expr $period + 0.25]} {
for {} {$opt >= $target_opt} {incr opt -1} {
set synth_start [clock seconds]
set synth_options [list @@SYNTH_OPTIONS@@]
......@@ -86,7 +86,7 @@ for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
}
synth_design {*}$synth_options
set opt_start [clock seconds]
opt_design
opt_design -propconst -sweep -remap
set synth_finish [clock seconds]
set ur [file join [file dirname "@@REPORT_UTILIZATION@@"] "synth_utilization_period${period}_opt${opt}.rpt"]
......@@ -107,7 +107,7 @@ for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
}
# write design checkpoint
write_checkpoint -force "@@SYNTH_CHECKPOINT@@.O${opt}_P${period}.dcp"
#write_checkpoint -force "@@SYNTH_CHECKPOINT@@.O${opt}_P${period}.dcp"
# set clock
set clock_ports [get_ports -filter {DIRECTION == IN && (NAME =~ *clk* || NAME =~ *CLK* || NAME =~ clock)}]
......@@ -119,21 +119,22 @@ for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
set opt_directive "RuntimeOptimized"
if {$opt >= 1} { set opt_directive "Default" }
if {$opt >= 2} { set opt_directive "Explore" }
if {$opt >= 3} { set opt_directive "ExtraTimingOpt" }
puts "running opt_design -directive $opt_directive ..."
opt_design -directive $opt_directive
set opt_design_finish [clock seconds]
set place_directive "RuntimeOptimized"
if {$opt >= 1} { set place_directive "Default" }
if {$opt >= 1} { set place_directive "Explore" }
if {$opt >= 2} { set place_directive "Explore" }
puts "running place_design -directive $place_directive ..."
place_design -directive $place_directive
set place_design_finish [clock seconds]
set physopt1_directive "RuntimeOptimized"
if {$opt >= 1} { set physopt1_directive "Default" }
if {$opt >= 2} { set physopt1_directive "Explore" }
if {$opt >= 3} { set physopt1_directive "AggressiveExplore" }
if {$opt >= 1} { set physopt1_directive "Explore" }
if {$opt >= 2} { set physopt1_directive "AggressiveExplore" }
if {$opt >= 3} { set physopt1_directive "AlternateFlowWithRetiming" }
puts "running phys_opt_design -directive $physopt1_directive ..."
phys_opt_design -directive $physopt1_directive
set physopt1_finish [clock seconds]
......@@ -141,12 +142,14 @@ for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
set route_directive "RuntimeOptimized"
if {$opt >= 1} { set route_directive "Default" }
if {$opt >= 2} { set route_directive "Explore" }
if {$opt >= 3} { set route_directive "MoreGlobalIterations" }
puts "running route_design -directive $route_directive ..."
route_design -directive $route_directive
set route_design_finish [clock seconds]
set physopt2_directive "Explore"
if {$opt > 2} { set physopt2_directive "AggressiveExplore" }
if {$opt >= 2} { set physopt2_directive "AggressiveExplore" }
if {$opt >= 3} { set physopt1_directive "AlternateFlowWithRetiming" }
if {$opt >= 2} {
puts "phys_opt_design -directive $physopt2_directive ..."
phys_opt_design -directive $physopt2_directive
......@@ -163,7 +166,7 @@ for {} {$period <= $target_period} {set period [expr $period + 0.125]} {
set clk [expr "$period - $wns"]
# write design checkpoint
write_checkpoint -force "@@IMPL_CHECKPOINT@@.O${opt}_P${period}.dcp"
#write_checkpoint -force "@@IMPL_CHECKPOINT@@.O${opt}_P${period}.dcp"
puts "O$opt RESULT: WNS = $wns PERIOD = $clk F = [expr 1000.0 / $clk]"
puts $results_file "$period\t[expr 1000.0/$period]\t$opt\t$wns\t$clk\t[expr 1000.0/$clk]"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment