summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTim Edwards <tim@opencircuitdesign.com>2016-02-16 20:20:07 -0500
committerTim Edwards <tim@opencircuitdesign.com>2016-02-16 20:20:07 -0500
commitb50ee5104092a510ff90f65de9d6ed3bf7b6334a (patch)
tree59b43d8089618b4d433b0363478d380c7fb9f565 /scripts
parente40fd3a03e9ea03246227afe9382923accefbba7 (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.in1
-rwxr-xr-xscripts/synthesize.sh84
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
#---------------------------------------------------------------------