A Julia wrapper around, and a few tests for, the Berkeley ABC logic synthesis and verification program.
The ABC package exports only four functions start_abc, end_abc, restart_abc, and parse_timing. Both start_abc and restart_abc return a function which takes a string version of a command to the ABC shell. The command returns a tuple of the status and the string that would have been printed to the console. For example
using BerkeleyABC abc_cmd = start_abc() res = abc_cmd("read_blif cla_32.blif")
which results in
(0, ["Hierarchy reader flattened 32 instances of logic boxes and left 0 black boxes."])
we can then do
# read in a standard cell library res = abc_cmd("read_lib Nangate45_typ.lib") # run a simple area based script res = abc_cmd("&get; &st; &dch; &nf; &put; ps; stime -p")
Notice that the last command above was
stime which runs ABCs delay tracer on the design.
We can then run
parse_timing on the result to find out
which gives a named tuple
(gates = 157, area = 191.79, delay = 1181.52)
Just the usual
] add ABC using the package manager.
For further information on the ABC logic synthesis system, please see https://github.com/berkeley-abc/abc