bds — BDD Based Logic Synthesis System
BDS transfers a circuit (currently only combinational ckts) in BLIF format into a Boolean network. The Boolean network is then partitioned using SIS-eliminate-like procedure. The eliminate process is controlled by an eliminate gain threshold (EGT). Then sharing between different nodes are extracted. BDDs on each Boolean node are submitted to the decomposition engine to decompose. Phase assignment, homegeneous node collapse and final sharing extraction are done in the ftree processing phase. Finally the synthesis results are presented in equation, dot and BLIF format.
BDS also provides a capability to verify the synthesized results by comparing the BDDs built on factoring trees with the original BDDs in the circuit.
BDS generates a run directory with circuit name, date, time,
machine name. All synthesis results and statistical information
are stored in this directory. The synthesized results are in files
,
cktname
.final.eqn
and
cktname
.final.dot
.
All statistical information is in file cktname
.final.blifBDS.run
.
If
verbosity level 4 or greater is set, nine more files will also be generated. They
are
,
cktname
.bds.*
and
cktname
.sharing.*
, they
are mainly used for development purpose.cktname
.collapse.*
input-file
input circuit in BLIF format. See FILES.
-v
Print BDS version and exit.
-order
initial_order
The initial variable order of the BDD. The variable order in BLIF file is
the default in BDS. You may need to use dfs
to avoid huge initial
BDD for some circuits, especially arithmetic circuits.
-rodelim
Number of BDD nodes are calculated after variable reordering. This option should be used with caution. It may take long time on large test cases. Default is TRUE.
-limitSize
n
The largest BDD size on which exact variable reordering can apply. This number is defined as # of variables times # of nodes on a BDD. Default is set to 200 which is a fairly small BDD.
-miniMethod
method
Select the BDD minimization method. Currently restrict
and
licompaction
are supported. Default is set to restrict
.
-autodyn
(TBD) Default is FALSE.
-cache
n
Initial cache size for CUDD. Default is 10K.
-maxmem
n
Memory size limit for CUDD in megabytes. Default is 10.
-slots
n
(TBD) Default is CUDD_UNIQUE_SLOTS
.
-reordering
method
Select the BDD variable reordering method in CUDD. Currently are
supported the following method
s:
none
,
random
,
bernard
,
pivot
,
sifting
,
converge
,
symm
,
tree
,
cotree
,
group
,
cogroup
,
win2
,
win3
,
win4
,
win2conv
,
win3conv
,
win4conv
,
annealing
,
genetic
,
linear
,
liconv
, and
exact
.
Default is set to none
.
-growth
n
(TBD) Default is 20.
-verb
n
verbosity level. There are three verbosity levels, 0
,
1
and 4
.
At verbosity level 0, no additional trace information is output.
Verbosity level 1 switches on summary statistics and dominator information.
Verbosity level 4 brings detailed trace of attempted decomposition. Also, files with intermediate results are generated. See FILES.
-time
seconds
The timeout for preprocessing and decomposition phase, in seconds. After timeout, the program terminates with return code 1. Introduced in 1.2.16.
-ethred
n
Specify the eliminate gain threshold. Eliminate gain is calculated as number of BDD nodes on the merged node MINUS number of BDD nodes before the merge. Default is set to 0.
-delta
n
Specify the disqualification threshold for X Hardcore.
If one of the decomposed BDDs has the same support as the original
one, and if the total number of nodes in the decomposed BDDs is
greater at least by n
, the decomposition
is disqualified.
The smaller n
, the tighter is the requirement.
Specifying n
1 diminishes the tendency
of the X Hardcore algorithm from cycling, while the value of 0
ensures decomposition monotonic in size, usually at a small cost
of decomposition efficiency. See also
KNOWN BUGS.
Default is set to
INT_MAX
, which disables this feature.
Introduced in 1.2.02.
-useloc
By specifying this option, BDS will be forced to use local BDDs to do logic synthesis. Default is FALSE.
-sid
Do not perform Simple Dominator (algebraic) decomposition. Used for research purposes. As other algorithms require this decomposition already done, we do not recommend using this option. Default is to enable Simple Dominator decomposition. Introduced in 1.2.04.
-ged
Do not perform Generalized Dominators decomposition. Used for research purposes. Default is to enable this decomposition. Introduced in 1.2.04.
-bhc
Do not perform Branch Hardcore decomposition. Used for research purposes. Default is to enable this decomposition. Introduced in 1.2.04.
-xhc
Do not perform X Hardcore (XOR) decomposition. Used for research purposes.
This option is equivalent to -xhardcore
in
bds-pga. Using this option is the crudest way
to prevent BDS from endless XOR decomposition. There are circuits for which
this decomposition method is crucial. On a small number of other circuits,
disabling XOR decomposition slightly improves results.
Default is to enable this decomposition. Introduced in 1.2.04.
-cft
Do not perform Cofactor on Top decomposition. Used for research purposes. Default is to enable this decomposition. Introduced in 1.2.04.
-useglb
By specifying this option, BDS will be forced to use global BDDs to do logic
synthesis. Default is FALSE. If none of -useloc
or -useglb
is specified,
BDS will pick a type of BDDs which is appropriate for better results.
-globalLimit
n
Set the total number of BDD nodes. Since global BDD may offer a global minimization of the Boolean functions, BDS tries to build global BDD first. However, the tottal number of BDD nodes must be limited to prevent memory blow-up. Default is set to 20,000.
-glbEliminate
Compared with traditional logic synthesis counterpart, SIS, BDS offers a unique way of eliminating nodes. By turnning this option on, all functional equivalent nodes are eliminated. However, global BDDs must be built first, which is impractical for most large circuits. Default is set to FALSE.
-effort
n
how much effort BDS can afford. There are four level of effort, 1
,
2
, 3
and 4
.
Currently, level 1
to 3
makes no difference.
When effort is set to 4
, BDDs are reordered using exact whenever they are
smaller than size limitSize
.
Setting effort level to 4
does not
mean the CPU time is much longer than other levels. Sometime the CPU time
is even less than other lower levels. A good decomposition
generates quasi-disjunctive BDDs(few variable overlap), therefore the number of follow-on
decompositions is decreased. Default is set to 1. We recommend not to use this option.
-verify
Perfrom verification. Network partition and final synthesis results are verified. Default is FALSE.
-dir
dir-name
Force BDS to use dir-name
as the output
directory. dir-name
must not already exist.
This is useful when running BDS from a script, as the default directory
name (see FILES)
is hard to predict. Introduced in 1.2.03.
-dumpnet
The Boolean network after eliminate is dumped into a file netdebug.dot
.
The file is in the current dir. Default is set to FALSE.
-dumpbdd
This option has no function. Default is set to FALSE.
-dumpftree
Write the factoring tree in text (EQN format). Total number of literals is counted in this file. Default is set to TRUE.
-dumpblif
Write the factoring tree in BLIF format. Default is TRUE.
-dumpfdot
Write the factoring tree in dot format. Default is set to FALSE.
-cutptl
Cut XORs, XNORs and MUX out from synthesized netlist. This preserves those
cells which can be implemented as PTL manually. A file
will be generated. It just has AND/OR part of the final synthesis result.cktname
.cutptl.blif
Input file must be in Berkeley BLIF format. Both UNIX line ends (LF)
and DOS line ends (CRLF) are tolerated (introduced in 1.2.07).
Lines must not exceed MAXLENGTH-1
characters, and individual names must
not exceed 1023 characters.The only directives recognized are:
.model
,
.inputs
,
.outputs
,
.latch
,
.names
,
.exdc
,
.wire_load_slope
,
.end
.
No latches may pe present (combinational circuits only).
Constant propagation should be performed on the circuit, e.g. by SIS sweep. As of 1.2.12, BDS does a rudimentary constant propagation itself and therefore the correctness of the result does not depend on the absence of internal constant generators.
BDS creates a directory for all output files resulting from a run. The directory
must not exist before executing BDS. Unless set by the -dir
option,
the directory name is
cktname
_MMM
_dd
_yyyy
_hh
_mm
_ss
_SSSS
.
where
cktname
is the circuit name taken over from the name of input file,
MMM
is month,
dd
is day in the month,
yyyy
is year,
hh
is hour,
mm
is minute,
ss
is second, and
SSSS
is host name.
On systems where time
does not work, MMM_dd_yyyy_hh_mm_ss
is replaced by BDS's process number. On systems where uname
does not work,
_SSSS
is absent.
All output files are created in the output directory. The final decomposed circuit is presented in files
,
cktname
.final.eqn
and
cktname
.final.dot
.
in equation, dot and BLIF formats respectively. The cktname
.final.blif-dumpftree
, -dumpfdot
and
-dumpfblif
options were intended for selection of these files.
All statistical information and run traces is in file BDS.run
. If
verbosity level 4 or greater is set, up to nine more files will also be generated. They are
,
cktname
.bds.*
and
cktname
.sharing.*
, where
cktname
.collapse.**
stands for eqn
, dot
,
and blif
. The selection of formats (equation, dot and BLIF) of those files
also was intended to be controllable by the -dumpftree
, -dumpfdot
and
-dumpfblif
options.
These file are mainly used for development purposes.
Try the following commands, and compare with results of SIS(script.rugged), what do you think?
bds -dumpfdot t481.blif
bds -dumpfdot parity.blif
C. Yang, M. Ciesielski, V. Singhal: BDS: A BDD-Based Logic Optimization System. In: Proceedings of the 37th Design Automation Conference (DAC'00), pp. 92-97.
C. Yang, V. Singhal, M. Ciesielski: BDD decomposition for efficient logic synthesis. In: Proceedings of International Conference on Computer Design, 1999 (ICCD '99), pp. 626-631
C. Yang, M. Ciesielski: BDS: A BDD-Based Logic Optimization System. In: IEEE Trans. on CAD,vol. 21, no. 7 (July 2002), pp. 866-876.
P. Fiser, J. Schmidt: The Case for a Balanced Decomposition Process. In: Proc. of 12th EUROMICRO Conference on Digital System Design., pp. 601-604. http://ddd.fit.cvut.cz/publ/2009/Fiser_Schmidt_DSD.pdf
The decomposition may be trapped in a dead loop on some arithmetic circuit. A different initial variable order may walk around this bug. The bug is currently (1999) under investigation.
As of 2011, this bug is still under investigation. For possible workarounds, refer to
-xhc
and -delta
options.
Binary options with default set to TRUE (-dumpftree
, -dumpfblif
)
cannot be set to FALSE.
The option format is neither POSIX nor GNU.
Sweeping of constant nodes does not work. In sweep.c
,
bdsSweepConstant
is empty and therefore BDS_SweepConstant
must be disabled.
The outputs in DOT and equation format have not been checked after extensive changes in BLIF export. They must be seen as unreliable until verified.