diff options
author | Tim Edwards <tim@opencircuitdesign.com> | 2016-02-16 20:20:07 -0500 |
---|---|---|
committer | Tim Edwards <tim@opencircuitdesign.com> | 2016-02-16 20:20:07 -0500 |
commit | b50ee5104092a510ff90f65de9d6ed3bf7b6334a (patch) | |
tree | 59b43d8089618b4d433b0363478d380c7fb9f565 /scripts | |
parent | e40fd3a03e9ea03246227afe9382923accefbba7 (diff) |
Corrected an error in vesta that would segfault on attempting to
deal with a latch that it thought was a flop. Also, modified
blifFanout to give more relevant diagnostic information, such as
units used for loads and latencies, and showing how "strength"
relates to the specified maximum latency. Defaults for blifFanout
made more realistic, especially for the default 0.35um technology,
so that it doesn't constantly report that gates are too weak and
try to change all gates to the maximum size. Option "-f" changed
to "-I" ("I" for "Ignore") so that "-f" means do fanout buffering
only, and "-L" means do load balancing only.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qflow.sh.in | 1 | ||||
-rwxr-xr-x | scripts/synthesize.sh | 84 |
2 files changed, 48 insertions, 37 deletions
diff --git a/scripts/qflow.sh.in b/scripts/qflow.sh.in index f14e008..a20abcb 100644 --- a/scripts/qflow.sh.in +++ b/scripts/qflow.sh.in @@ -284,6 +284,7 @@ if ( ! -f ${userfile} ) then echo "# set yosys_debug = " >> ${userfile} echo "# set abc_script = " >> ${userfile} echo "# set nobuffers = " >> ${userfile} + echo "# set nofanout = " >> ${userfile} echo "# set fanout_options = " >> ${userfile} echo "" >> ${userfile} echo "# Placement command options:" >> ${userfile} diff --git a/scripts/synthesize.sh b/scripts/synthesize.sh index ba52079..6823f17 100755 --- a/scripts/synthesize.sh +++ b/scripts/synthesize.sh @@ -434,59 +434,69 @@ cat ${final_blif} | sed \ cd ${synthdir} #--------------------------------------------------------------------- +# If "nofanout" is set, then don't run blifFanout. +#--------------------------------------------------------------------- + +if ($?nofanout) then + set nchanged=0 +else + +#--------------------------------------------------------------------- # Make a copy of the original blif file, as this will be overwritten # by the fanout handling process #--------------------------------------------------------------------- -cp ${rootname}.blif ${rootname}_bak.blif + cp ${rootname}.blif ${rootname}_bak.blif #--------------------------------------------------------------------- # Check all gates for fanout load, and adjust gate strengths as # necessary. Iterate this step until all gates satisfy drive # requirements. # -# Use option "-o value" to force a value for the (maximum expected) -# output load, in fF. Currently, there is no way to do this from the -# command line (default is 18fF). . . +# Use option "-c value" in fanout_options to force a value for the +# (maximum expected) output load, in fF (default is 30fF) +# Use option "-l value" in fanout_options to force a value for the +# maximum latency, in ps (default is 1000ps) #--------------------------------------------------------------------- -rm -f ${rootname}_nofanout -touch ${rootname}_nofanout -if ($?gndnet) then - echo $gndnet >> ${rootname}_nofanout -endif -if ($?vddnet) then - echo $vddnet >> ${rootname}_nofanout -endif + rm -f ${rootname}_nofanout + touch ${rootname}_nofanout + if ($?gndnet) then + echo $gndnet >> ${rootname}_nofanout + endif + if ($?vddnet) then + echo $vddnet >> ${rootname}_nofanout + endif -if (! $?fanout_options) then - set fanout_options="-l 75 -c 25" -endif + if (! $?fanout_options) then + set fanout_options="" + endif -echo "Running blifFanout (iterative)" |& tee -a ${synthlog} -echo "" >> ${synthlog} -if (-f ${libertypath} && -f ${bindir}/blifFanout ) then - set nchanged=1000 - while ($nchanged > 0) - mv ${rootname}.blif tmp.blif - if ("x${separator}" == "x") then - set sepoption="" - else - set sepoption="-s ${separator}" - endif - if ("x${bufcell}" == "x") then - set bufoption="" - else - set bufoption="-b ${bufcell} -i ${bufpin_in} -o ${bufpin_out}" - endif - ${bindir}/blifFanout ${fanout_options} -f ${rootname}_nofanout \ + echo "Running blifFanout (iterative)" |& tee -a ${synthlog} + echo "" >> ${synthlog} + if (-f ${libertypath} && -f ${bindir}/blifFanout ) then + set nchanged=1000 + while ($nchanged > 0) + mv ${rootname}.blif tmp.blif + if ("x${separator}" == "x") then + set sepoption="" + else + set sepoption="-s ${separator}" + endif + if ("x${bufcell}" == "x") then + set bufoption="" + else + set bufoption="-b ${bufcell} -i ${bufpin_in} -o ${bufpin_out}" + endif + ${bindir}/blifFanout ${fanout_options} -I ${rootname}_nofanout \ -p ${libertypath} ${sepoption} ${bufoption} \ tmp.blif ${rootname}.blif >>& ${synthlog} - set nchanged=$status - echo "gates resized: $nchanged" |& tee -a ${synthlog} - end -else - set nchanged=0 + set nchanged=$status + echo "gates resized: $nchanged" |& tee -a ${synthlog} + end + else + set nchanged=0 + endif endif #--------------------------------------------------------------------- |