-
compile.h
- External header file
-
compileInt.h
- Internal header file
-
compileAffinity.c
- Affinity clustering optimized.
-
compileBEval.c
-
-
compileCheck.c
- Performs semantic checks on the model.
-
compileCheckWff.c
- Checks for potential formula errors.
-
compileCmd.c
- Shell interface for the compile package.
-
compileCone.c
- Computes the cone of influence of the model variables.
-
compileEncode.c
- Routines that performs the encoding of the symbolic variables
into BDD.
-
compileEval.c
- Performs compilation of expression into ADD.
-
compileFlatten.c
- Flattening of the model.
-
compileFsm.c
- FSM data structures and manipulation routines in
different formats.
-
compileFsmUtil.c
- general functions for all conjunctive partitioning methods
-
compileIwls95.c
- Build a conjunctively decomposed transition relation
using the clustering heuristic by Ranjan et al, Iwls95.
-
compileMono.c
- Routines to performs the computation of the monolithic
transition relation.
-
compileOrd.c
- Routines for reading and writing variable orders.
-
compileStruct.c
- Structure used to store compilation results.
-
compileThreshold.c
- Routines to performs the computation of the
conjunctively decomposed transition relation.
-
compileUtil.c
- Routines for model computation.
-
compileWriteBool.c
- Creation of an SMV file containing the flattened
booleanized model.
-
compileWriteFlat.c
- Creation of an SMV file containing the flattened model.
compile.h
External header file
By: Marco Roveri
-
()
- The symbolic name of the input process selector variable.
compileInt.h
Internal header file
By: Marco Roveri
compileAffinity.c
Affinity clustering optimized.
By: Emanuele Olivetti
Affinity clustering optimized.
-
list_entryAlloc()
- Allocs a list_entry
-
pairAlloc()
- Allocates a pair
-
bdd_compute_affinity()
- Compute the Affinity of two BDD clusters.
-
list_heap_add()
- Add a new entry in support list and new pairs in heap.
-
list_del()
- Delete a cluster in support list.
-
affinity_move_clusters()
- Copy over threshold clusters in result list or in support
list & heap.
-
compileCPMakeAffinityClusters()
- OPTIMIZED affinity clustering
compileBEval.c
By: Alessandro Cimatti and Marco Roveri
Conversion from scalar expressions to boolean expressions.
See Alsooptional
-
expr2bexpr()
- Converts a scalar expression into a boolean expression.
-
detexpr2bexpr()
- Converts a scalar expression into a boolean expression.
-
mk_true()
- Support functions for expressions abstract syntax.
-
expr2bexpr_recur()
- Converts a generic expression into a boolean expression.
-
scalar_atom2bexpr()
- Converts an atomic expression into the corresponding (boolean)
expression.
-
add2bexpr()
- Converts a ADD into the corresponding (boolean)
expression.
-
add2bexpr_recur()
- Converts a ADD into the corresponding (boolean)
expression.
-
mk_new_var()
- Create a new (boolean) variable.
-
range_check()
- Checks if the first argument is contained in the second.
compileCheck.c
Performs semantic checks on the model.
By: Marco Roveri
The routines to perform some the semantic checks.
The performed checks are:
- undefined symbols
- multiple definition of symbols
- circular definition of symbols
-
Compile_CheckProgram()
- Semantic checks on the model.
-
init_check_program()
- Initializes the data structure to perform semantic checks.
-
init_check_program_recur()
- Recursive step of init_check_program
-
check_circ()
- Checks for circular definitions.
-
check_circular_assign()
- Performs circular assignment checking
-
check_assign()
- Checks for multiple or circular assignments.
-
check_assign_both()
- Given a variable, it checks if there are
multiple assignments to it.
compileCheckWff.c
Checks for potential formula errors.
By: Andrea Morichetti and Marco Roveri
Routines to check for potential formula errors. A potential
error may arise when arguments do not match the formula operator domain,
e.g. a AND b, where a or b are not booleans.
-
Compile_CheckWff()
- Checking formula potential errors and results.
-
check_wff()
- Checking formula potential errors and results. It is a
front end of Compile_CheckWff
-
parsecheckwffcmd()
- Parses string looking for a simple/ctl/ltl/compute expression.
-
wff_is_boolean()
- Checks if an atom is boolean or symbolic.
-
wff_is_numeric()
- Checks if an atom is numeric or symbolic.
-
check_wff_recur()
- Performs the recursive step of the
Compile_CheckWff
function.
-
check_definition()
- Returns the definition of a symbol.
compileCmd.c
Shell interface for the compile package.
By: Marco Roveri
This file contains the interface of the compile package
with the interactive shell.
See AlsocmdCmd.c
-
Compile_Init()
- Initializes the compile package.
-
Compile_End()
- Shut down the compile package
-
CommandProcessModel()
- Performs the batch steps and then returns
control to the interactive shell.
-
CommandFlattenHierarchy()
- Flattens the hierarchy of modules
-
CommandShowVars()
- Shows model's symbolic variables and their values
-
CommandEncodeVariables()
- Builds the BDD variables necessary to compile the
model into BDD.
-
CommandBuildModel()
- Compiles the flattened hierarchy into BDD
-
CommandBuildFlatModel()
- Compiles the flattened hierarchy into SEXP
-
CommandBuildBooleanModel()
- Compiles the flattened hierarchy into boolean SEXP
-
CommandWriteOrder()
- Writes variable order to file.
-
CommandCPPrintClusterInfo()
- Prints out the information of the clustering.
-
CommandIwls95PrintOption()
- Prints the Iwls95 Options.
-
CommandGo()
- Implements the go command
-
CommandGoBmc()
- Implements the go_bmc command
-
CommandGetInternalStatus()
- Implements the get_internal_status command
-
CommandCheckWff()
- Checks formulas potential errors.
-
CommandWriteModelFlat()
- Writes the currently loaded SMV model in the
specified file, after having flattened it
-
CommandWriteModelFlatBool()
- Writes a flat and boolean model of a given SMV file
compileCone.c
Computes the cone of influence of the model variables.
By: Marco Roveri and Marco Pistore
This file contains the functions needed for computing
the cone of influence (COI) of a given formula. The COI of all the
variables in the model is pre-computed ancd cached the first time
a cone of influence is required (function initCoi
.
Functions are also provided that compute the dependency variables
for a formula, namely those variables that appear in the formula
or in one of the definitions the formula depends on.
-
()
- Indicates that the dependency computation is ongoing.
-
()
- Indicates that the COI computation should be verbose.
-
Formula_GetDependencies()
- Computes dependencies of a given SMV expression
-
Formulae_GetDependencies()
- Compute the dependencies of two set of formulae
-
ComputeCOI()
- Compute the COI of a given set of variables
-
formulaGetDefinitionDependencies()
- Compute the dependencies of an atom
-
formulaGetDependenciesRecur()
- Recursive call to Formula_GetDependencies.
-
coiInit()
- Pre-compute the COI of the variables
compileEncode.c
Routines that performs the encoding of the symbolic variables
into BDD.
By: Marco Roveri
Routines that performs the encoding of the symbolic variables
into BDD. At now the only available encoding is the binary one.
See AlsocompileEval.c,
compileOrd.c
-
Compile_EncodeVarsInit()
- Initializes the data structure relative to BDD variables.
-
Compile_EncodeVar()
- Encode a variable into BDD.
-
CompileEncodeVarRecur()
- Encodes a scalar variables into boolean variables.
-
Compile_GetOrdering()
- Return the list of variables corresponding
to the current order of variables in the system.
-
print_state()
- Prints out the state represented by the given minterm.
-
print_state_vars()
- Prints out the symbolic names of boolean
variables stored in a cube.
-
bdd_count_states()
- Return the number of states of a given BDD.
-
add_count_states()
- Return the number of states of a given ADD.
-
add_shift_forward()
- Shift the given set from current variables to next ones.
-
add_shift_backward()
- Shift the given set from next variables to current ones.
-
bdd_shift_forward()
- Shift the given set from current variables to next ones.
-
bdd_shift_backward()
- Shift the given set from next variables to current ones.
-
bdd_pick_one_state()
- Extracts a minterm from a given BDD.
-
bdd_pick_one_state_rand()
- Extracts a random minterm from a given BDD.
-
make_minterm_vars()
- Creates the array necessary to extract minterms
from a BDD.
-
add_var_to_minterm_vars()
- Adds a variable to the sarray necessary to extract minterms
from a BDD.
-
free_minterm_vars()
- Free the array necessary to extract minterms.
-
reset_encode()
- Reset the counters necessary to the encoder.
-
get_bool_variable_name()
- required
-
get_bdd_state_var()
- required
-
get_bdd_input_var()
- Adds a new boolean variable to the DD package.
-
create_boolean_state_var()
- required
-
create_boolean_input_var()
- required
compileEval.c
Performs compilation of expression into ADD.
By: Marco Roveri
This function contains the code to compile an
expression into ADD. This is done by a traversal of the expression.
See AlsocompileUtil.c
-
()
- Return value in case an error occurs.
-
()
- Return value used to indicate that the evaluation of
an atom is not yet terminated.
-
eval()
- Given an expression the corresponding ADD is
returned back.
-
eval_tree()
- Given a list of expressions, this returns the list
of the corresponding ADD.
-
eval_simplify()
- Evaluates the expression given as input in the
corresponding context and then simplifies the result using assumption.
-
eval_struct()
- Takes an expression representing an identifier
and recursively evaluates it.
-
eval_num()
- Evaluates a number in a context.
-
enforce_definition()
- Returns the definition of a symbol, if defined
else report an error.
-
plus_op()
- Adds two integers.
-
minus_op()
- Subtracts two integers
-
times_op()
- Multiplies two integers
-
divide_op()
- Divide two integers
-
mod_op()
- Computes the modulo of the division of two integers
-
lt_op()
- Checks if an integer is less then the other.
-
gt_op()
- Checks if an integer is greater then the other.
-
numeric_op()
- Applies generic function to two operands.
-
node_plus()
- Adds two integer nodes.
-
node_plus1()
- Adds 1 to an integer node.
-
node_minus()
- Subtracts two integer nodes.
-
node_times()
- Multiplies two integer nodes.
-
node_divide()
- Divides two integer nodes.
-
node_mod()
- Computes the modulo of the division between two
integer nodes.
-
node_lt()
- Checks if an integer node is less then the other.
-
node_gt()
- Checks if an integer node is greater then the other.
-
node_union()
- Computes the set union of two s_expr.
-
node_setin()
- Set inclusion
-
node_equal()
- Checks for node equality.
-
add_plus()
- Adds two integer ADDs
-
add_minus()
- Subtracts two integer ADDs
-
add_times()
- Multiplies two integer ADDs
-
add_divide()
- Divides two integer ADDs
-
add_mod()
- Computes the modulo of the integer division of
two integer ADDs.
-
add_lt()
- Checks if two integer ADDs are in the less then relation.
-
add_gt()
- Checks if two integer ADDs are in the less then relation.
-
add_union()
- Computes the set union of two set ADDs.
-
eval_sign()
- Complements an ADD according to a flag.
-
unary_op()
- Applies unary operation.
-
binary_op()
- Applies binary operation.
-
ternary_op()
- Applies ternary operation.
-
quaternary_op()
- Applies quaternary operation.
-
if_then_else_op()
- Evaluates if_then_else expressions returning
the ADD representing IF ifarg THEN thenarg ELSE elsarg.
-
eval_struct_recur()
- Performs the recursive step of
eval_struct
.
-
range_check()
- Checks if the values of
n
is in the
range allowed for the variable.
-
get_definition()
- Given a symbol, the corresponding ADD is returned.
-
eval_recur()
- Performs the recursive step of the
eval
function.
compileFlatten.c
Flattening of the model.
By: Marco Roveri
Performs the flattening of the model. We start from the
module main
and we recursively instantiate all the modules
or processes declared in it.
Consider the following example:
MODULE main
...
VAR
a : boolean;
b : foo;
...
MODULE foo
VAR
z : boolean;
ASSIGN
z := 1;
The flattening instantiate the module foo in the main
module. You can refer to the variables "z
" declared in the
module foo
after the flattening by using the dot notation
b.z
.
-
()
- Body of define in evaluation
-
Compile_FlattenHierarchy()
- Traverse the module hierarchy, extracts the informations and flatten the hierarchy.
-
Compile_FlattenTableau()
- Traverse the module tableau, extracts the informations and flatten the tableau.
-
compileFlattenProcess()
- Flatten a hierarchy of SMV processes.
-
Compile_FlattenSexp()
- Builds the flattened version of an expression.
-
Compile_FlattenSexpExpandDefine()
- Flattens an expression and expands defined symbols.
-
compileFlattenSexpModel()
- required
-
put_in_context()
- Put a variable in the current "context"
-
instantiate_var()
- Instantiates the given variable.
-
instantiate_vars()
- Recursively applies instantiate_var.
-
make_params()
- Builds the parameters of a module from the list of formal parameters of the module itself.
-
instantiate()
- Instantiates all in the body of a module.
-
instantiate_by_name()
- Starts the flattening from a given point in the
module hierarchy.
-
compileFlattenHierarchy()
- Traverses the module hierarchy and extracts the
information needed to compile the automaton.
-
Flatten_GetDefinition()
- Gets the flattened version of an atom.
-
Flatten_FlattenSexpRecur()
- Recursive function for flattenig a sexp.
-
compileFlattenProcessRecur()
- Recursive definition of Compute_FlattenProcess
-
make_atom_set()
- Builds the atom set of the given range
-
compileFlattenSexpModelRecur()
- required
-
create_process_symbolic_variables()
- Creates the internal process selector variable.
-
mk_and()
- required
-
mk_true()
- required
compileFsm.c
FSM data structures and manipulation routines in
different formats.
By: Marco Roveri and Emanuele Olivetti
This file provides FSM data structure in different
formats, i.e. scalar in sexp, boolean in sexp, boolean in RBC and
boolean in BDD. In each format a FSM is composed of the initial
states, the invariant conditions, the transition relation and a set
of fairness conditions. For each data structure the corresponding
constructors/destructors are provided.
compileFsmUtil.c
general functions for all conjunctive partitioning methods
By: Emanuele Olivetti
general functions for all conjunctive partitioning methods
-
CPClusterInfoAlloc()
- Allocates and initializes memory for CPCluster_Info struct.
-
CPClusterInfoFree()
- Frees the memory allocated for CPCluster_Info struct.
-
CPFreeClustersList()
- Frees a list of CPCluster_Info struct.
-
CPDupClustersList()
- Duplicates a list of cluster allocating necessary memory.
-
compileBuildElementaryBDDList()
- Builds BDD list from given variables list.
-
CPCheckMonolithic()
- Checks that the And_i Ti == Mon_T
-
compileCPCheckPartitionedTransition()
- Perform some test on transition relation
-
CPCheckQuantificationSchedule()
- Given a list of clusters representing the relations this
function checks if the schedule is correct.
-
AddOneCluster()
- Returns a list with one new cluster and computes its quantifiers.
-
Compile_CPAddClusterAndFillSchedule()
- Add the LTL tableau as a new BDD cluster in the transition relation.
-
compileBuildBasicCPRecur()
- Recursively build the portioned transition relation.
-
compileCPMakeClusters()
- Forms the clusters of relations based on BDD
size heuristic.
-
CPCLuster_equal()
- Checks if two clusters are equal.
-
CPDeleteCluster()
- Deletes a given cluster from a list of clusters.
-
compileBuildSchedule()
- Computes the schedule for the given list of clusters
-
compileCPBuildSchedule()
- Computes the schedule for the given list of clusters
-
CPPrintClustersInfo()
- Prints out the info for each cluster.
-
print_generic_part_info()
- required
-
print_generic_part_bdd_info()
- required
-
print_generic_detailed_info()
-
compileIwls95.c
Build a conjunctively decomposed transition relation
using the clustering heuristic by Ranjan et al, Iwls95.
By: Marco Roveri and Emanuele Olivetti
Conjuncitively partitioned models are very sensitive to
the way clusters are built and ordered. The algorithm implemented
here takes into account the number of next state variables
introduced, when choosing the next cluster in the order. The
ordering of the clusters takes into account the "index" of the
variables, because it was found that quantifying out a variable from
a function becomes computationally less expensive as the depth (the
index) of the variable in the BDD ordering increases.
- R. K. Ranjan and A. Aziz and B. Plessier and C. Pixley and
R. K. Brayton, "Efficient BDD Algorithms for FSM Synthesis and
Verification", IEEE/ACM Proceedings International Workshop on Logic
Synthesis, Lake Tahoe (NV), May 1995.
See AlsocompileMono.c,
compileThreshold.c
-
Compile_BuildModelIwls95CP()
- The implicitly conjoined transition relation is
computed accordingly to the heuristic described in IWLS95.
-
Iwls95GetOptions()
- Gets the necessary options for computing the image and returns
in the option structure.
-
Iwls95MakePartition()
- Given a list of cluster, this function
initializes the data structures to perform image computation.
-
Iwls95OrderClusters()
- This function orders the clusters given as input
accordingly with the order heuristic described in IWLS95.
-
Iwls95ComputeClusterInfo()
- Computes the parameters necessary to use iwls95
-
Iwls95Compute_Supp_Q_Ci()
- Computes the set Supp_Q_Ci.
-
Iwls95ComputeClusterInfoAux()
- Computes some global parameters necessary in the
ordering of clusters.
-
Iwls95ComputeCLustersCube()
- Computes the cube of the set of support of all
the clusters.
-
Iwls95CubeAnd()
- Return the intersection of two cubes.
-
Iwls95ClusterInfoAlloc()
- Allocates and initializes memory for Iwls95Cluster_Info struct.
-
Iwls95ClusterInfoFree()
- Frees the memory allocated for Iwls95Cluster_Info struct.
-
Iwls95FreeClustersList()
- Frees a list of Iwls95Cluster_Info struct.
-
Iwls95ComputeBenefit()
- Computes the benefit of the given cluster.
-
MixedCLuster_equal()
- Checks if two clusters (from different structures) are
equal.
-
Iwls95DeleteCluster()
- Deletes a given cluster from a list of clusters.
-
Iwls95PrintOption()
- Prints the option values used in IWLS95 technique for
image computation.
compileMono.c
Routines to performs the computation of the monolithic
transition relation.
By: Marco Roveri and Emanuele Olivetti
Routines to performs the computation of the monolithic
transition relation.
See AlsocompileIwls95.c,
compileThreshold.c
-
Compile_BuildModelMonolithic()
- Builds the monolithic transition relation into CP
structure.
-
Compile_BuildModelMonolithicBdd()
- Builds the monolithic transition relation BDD.
compileOrd.c
Routines for reading and writing variable orders.
By: Marco Roveri
Routines for reading and writing variable orders.
-
Compile_ReadOrder()
- reads from a file the variable order.
-
Compile_WriteOrder()
- Writes on a file the variable order.
compileStruct.c
Structure used to store compilation results.
By: Marco Roveri
Structure used to store compilation results.
compileThreshold.c
Routines to performs the computation of the
conjunctively decomposed transition relation.
By: Marco Roveri and Emanuele Olivetti
Routines to performs the computation of the
conjunctively decomposed transition relation.
See AlsocompileMono.c,
compileIwls95.c
-
Compile_BuildModelThreshold()
- Builds an implicitly conjoined transition relation.
compileUtil.c
Routines for model computation.
By: Marco Roveri
This file contains the code for the compilation of the
flattened hierarchy into BDD:
- Creation of the boolean variables.
- Creation of the BDD representing the inertia of the system when
there are processes. In fact when a process is running the
other processes are stopped, and their state variables don't
change.
- Creation of the BDD representing what does not change in the
system, i.e. the set of invariance. These are introduced in the
model by the keyword "INVAR" or by the normal
assignments (i.e. "ASSIGN x : = y & z;"). These
states are not stored in the transition relation, they are
stored in an a doc variable.
- Creation of the BDD representing the set of initial states.
- Creation of the BDD representing the transition relation.
Various ways of representing the transition relation are offered
the users.
- Monolithic: the monolithic transition relation is
computed.
- Conjunctive Partioned (Threshold): the transition
relation is stored as an implicitly conjoined list of
transition relation. This kind of partitioning can be
used only if the model considered is a synchronous one.
- Conjunctive Partioned IWLS95: as the above, but the
heuristic proposed in [1] is used to order partition clusters.
- Computes the fairness constraints. I.e. each fairness constraint
(which can be a CTL formula) is evaluated and the resulting BDD
is stored in the list fairness_constraints_bdd to be
then used in the model checking phase.
[1] R. K. Ranjan and A. Aziz and B. Plessier and C. Pixley and R. K. Brayton,
"Efficient BDD Algorithms for FSM Synthesis and Verification,
IEEE/ACM Proceedings International Workshop on Logic Synthesis,
Lake Tahoe (NV), May 1995.
-
sym_intern()
- Builds an internal representation for a given string.
-
Compile_BuildVarsBdd()
- The ADD variables are built.
-
build_real_state_variables()
- Computes the real_state_variables, a
list of ADDs, one for each symbolic scalar variable.
-
Compile_BuildInitBdd()
- Computes the BDD representing set of initial states.
-
Compile_BuildInvarBdd()
- Computes the BDD representing model invariants.
-
print_model_statistic()
- Prints out model statistics.
-
Compile_InitializeSexpBuildModel()
- required
compileWriteBool.c
Creation of an SMV file containing the flattened
booleanized model.
By: Marco Roveri
Creation of an SMV file containing the booleanized and
flattened model, processes will be removed by explicitly introducing
a process variable and modifying assignments to take care of
inertia.
-
Compile_WriteFlattenBool()
- Prints the flatten version of an SMV model.
-
write_flatten_vars()
- Writes VAR declarations in SMV format on a file.
-
write_flatten_expr()
- Writes flattened expression in SMV format on a file.
-
write_flatten_bfexpr()
- Writes flattened expression in SMV format on a file.
compileWriteFlat.c
Creation of an SMV file containing the flattened model.
By: Marco Roveri
Creation of an SMV file containing the flattened model,
processes will be removed by explicitly introducing a process
variable and modifying assignments to take care of inertia.
-
Compile_WriteFlatten()
- Prints the flatten version of an SMV model.
-
write_flatten_vars()
- Writes VAR declarations in SMV format on a file.
-
write_process_selector_define()
- Writes DEFINE declarations in SMV format on a
file.
-
write_flatten_define()
- Writes DEFINE declarations in SMV format on a
file.
-
write_flatten_expr()
- Writes flattened expression in SMV format on a file.
-
write_flatten_assign()
- Writes flattened ASSIGN declarations in SMV format on a
file.
-
print_assign()
- Prints an assignement statement
Last updated on 1011105 17h14