A property-driven tool for suggesting fence insertion using CBMC.
cbmc-repair.tgz
in a directory.src/config.inc
COMPILING
.cbmc --repair value [options] filename.c
--repair
is mandatory with valid values being tso:sc
or pso:sc
. Thus a command would look like cbmc --repair tso:sc filename.c
--no-early-termination
(ROBMC)--no-reorder-optimization
. (FI)--trace-enum
. (TE)--trace-enum
, --no-reorder-optimization
and --no-early-termination
should be used.--no-early-termination
one can use --minbound NUM
to specify the initial bound for ROBMC.for(i=0;i<10;i++)
CBMC automatically figures out the unrolling depth for the loops.--unwind NUM
unrolls all the loops to the depth given by NUM
.--no-unwinding-assertions
.--unwindset loop1:depth1,loop2:depth2
loop1, loop2
in --unwindset
run cbmc --show-loops filename.c
. The identifiers will be of the form c::methodname.0
EXEC
variable in the script to point to the cbmc
executable in src/cbmc
folder.bash benchmark-gen.sh NUM
to generate a C file of benchmark with parametric fragment added NUM
times.n
from 2 to 40 and parameter K1
from 2 to 40. Adjust these parameter bounds using variables paramsize
and k1size
variables. Depending upon the bounds given, running all the experiments may take several days.Saurabh Joshi and Daniel Kroening Email : firstname.lastname@cs.ox.ac.uk