| 1 | |
|---|
| 2 | model_check - perform fair CTL model checking on a flattened network |
|---|
| 3 | _________________________________________________________________ |
|---|
| 4 | |
|---|
| 5 | model_check [-b] [-c] [-d <dbg_level>] [-f <dbg_file>] [-g |
|---|
| 6 | <hints_file>] [-h] [-i] [-m] [-r] [-t <time_out_period>][-v |
|---|
| 7 | <verbosity_level>] [-D <dc_level>] [-F] [-S <schedule>] [-V] [-B] [-I] |
|---|
| 8 | [-C] <ctl_file> |
|---|
| 9 | |
|---|
| 10 | Performs fair CTL model checking on a flattened network. Before |
|---|
| 11 | calling this command, the user should have initialized the design by |
|---|
| 12 | calling the command [1]init_verify. Regardless of the options, no |
|---|
| 13 | 'false positives' or 'false negatives' will occur: the result is |
|---|
| 14 | correct for the given circuit. |
|---|
| 15 | |
|---|
| 16 | Properties to be verified should be provided as CTL formulas in the |
|---|
| 17 | file ctl_file. Note that the support of any wire referred to in a |
|---|
| 18 | formula should consist only of latches. For the precise syntax of CTL |
|---|
| 19 | formulas, see the [2]VIS CTL and LTL syntax manual. |
|---|
| 20 | |
|---|
| 21 | Properties of the form AG f, where f is a formula not involving path |
|---|
| 22 | quantifiers are referred to as invariants; for such properties it may |
|---|
| 23 | be substantially faster to use the [3]check_invariant command. |
|---|
| 24 | |
|---|
| 25 | A fairness constraint can be specified by invoking the |
|---|
| 26 | [4]read_fairness command; if none is specified, all paths are taken to |
|---|
| 27 | be fair. If some initial states do not lie on a fair path, the model |
|---|
| 28 | checker prints a message to this effect. |
|---|
| 29 | |
|---|
| 30 | A formula passes iff it is true for all initial states of the system. |
|---|
| 31 | Therefore, in the presence of multiple initial states, if a formula |
|---|
| 32 | fails, the negation of the formula may also fail. |
|---|
| 33 | |
|---|
| 34 | If a formula does not pass, a (potentially partial) proof of failure |
|---|
| 35 | (referred to as a debug trace) is demonstrated. Fair paths are |
|---|
| 36 | represented by a finite sequence of states (the stem) leading to a |
|---|
| 37 | fair cycle, i.e. a cycle on which there is a state from each fairness |
|---|
| 38 | condition. The level of detail of the proof can be specified (see |
|---|
| 39 | option -d). |
|---|
| 40 | |
|---|
| 41 | Both backward (future tense CTL formulas) and forward (past tense CTL |
|---|
| 42 | formulas) model checking can be performed. Forward model checking is |
|---|
| 43 | based on Iwashita's ICCAD96 paper. Future tense CTL formulas are |
|---|
| 44 | automatically converted to past tense ones as much as possible in |
|---|
| 45 | forward model checking. |
|---|
| 46 | |
|---|
| 47 | Command options: |
|---|
| 48 | |
|---|
| 49 | -b |
|---|
| 50 | Use backward analysis when performing debugging; the default is |
|---|
| 51 | to use forward analysis. This should be tried when the debugger |
|---|
| 52 | spends a large amount of time when creating a path to a fair |
|---|
| 53 | cycle. This option is not compatible with forward model |
|---|
| 54 | checking option (-F). |
|---|
| 55 | |
|---|
| 56 | -c |
|---|
| 57 | Use the formula tree so that there is no sharing of |
|---|
| 58 | sub-formulae among the formulae in the input file. This option |
|---|
| 59 | is useful in the following scenario - formulae A, B and C are |
|---|
| 60 | being checked in order and there is sub-formula sharing between |
|---|
| 61 | A and C. If the BDDs corresponding to the shared sub-formula is |
|---|
| 62 | huge then computation for B might not be able to finish without |
|---|
| 63 | using this option. |
|---|
| 64 | |
|---|
| 65 | -d <dbg_level> |
|---|
| 66 | Specify the amount of debugging performed when the system fails |
|---|
| 67 | a formula being checked. Note that it may not always be |
|---|
| 68 | possible to give a simple counter-example to show that a |
|---|
| 69 | formula is false, since this may require enumerating all paths |
|---|
| 70 | from a state. In such a case the model checker will print a |
|---|
| 71 | message to this effect. This option is incompatible with -F. |
|---|
| 72 | |
|---|
| 73 | dbg_level must be one of the following: |
|---|
| 74 | |
|---|
| 75 | 0: No debugging performed. dbg_level=0 is the default. |
|---|
| 76 | |
|---|
| 77 | 1: Debugging with minimal output: generate counter-examples for |
|---|
| 78 | universal formulas (formulas of the form AX|AF|AU|AG) and |
|---|
| 79 | witnesses for existential formulas (formulas of the form |
|---|
| 80 | EX|EF|EU|EG). States on a path are not further analyzed. |
|---|
| 81 | |
|---|
| 82 | 2: Same as dbg_level=1, but more verbose. (The subformulas are |
|---|
| 83 | printed, too.) |
|---|
| 84 | |
|---|
| 85 | 3: Maximal automatic debugging: as for level 1, except that |
|---|
| 86 | states occurring on paths will be recursively analyzed. |
|---|
| 87 | |
|---|
| 88 | 4: Manual debugging: at each state, the user is queried if more |
|---|
| 89 | feedback is desired. |
|---|
| 90 | |
|---|
| 91 | -f <dbg_file> |
|---|
| 92 | Write the debugger output to dbg_file. This option is |
|---|
| 93 | incompatible with -F. Notes: when you use -d4 (interactive |
|---|
| 94 | mode), -f is not recommended, since you can't see the output of |
|---|
| 95 | vis on stdout. |
|---|
| 96 | |
|---|
| 97 | -g <hints_file> |
|---|
| 98 | Use guided search. The file hints_file contains a series of |
|---|
| 99 | hints. A hint is a formula that does not contain any temporal |
|---|
| 100 | operators, so hints_file has the same syntax as a file of |
|---|
| 101 | invariants used for check_invariant. The hints are used in the |
|---|
| 102 | order given to change the transition relation. In the case of |
|---|
| 103 | least fixpoints (EF, EU), the transition relation is conjoined |
|---|
| 104 | with the hint, whereas for greatest fixpoints the transition |
|---|
| 105 | relation is disjoined with the negation of the hint. If the |
|---|
| 106 | hints are cleverly chosen, this may speed up the computation |
|---|
| 107 | considerably, because a search with the changed transition |
|---|
| 108 | relation may be much simpler than one with the original |
|---|
| 109 | transition relation, and results obtained can be reused, so |
|---|
| 110 | that we may never have to do a complicated search with the |
|---|
| 111 | original relation. Note: hints in terms of primary inputs are |
|---|
| 112 | not useful for greatest fixpoints. See also: Ravi and Somenzi, |
|---|
| 113 | Hints to accelerate symbolic traversal. CHARME'99; Bloem, Ravi, |
|---|
| 114 | and Somenzi, Efficient Decision Procedures for Model Checking |
|---|
| 115 | of Linear Time Logic Properties, CAV'99; Bloem, Ravi, and |
|---|
| 116 | Somenzi, Symbolic Guided Search for CTL Model Checking, DAC'00. |
|---|
| 117 | |
|---|
| 118 | For formulae that contain both least and greatest fixpoints, |
|---|
| 119 | the behavior depends on the flag guided_search_hint_type. If it |
|---|
| 120 | is set to local (default) then every subformula is evaluated to |
|---|
| 121 | completion, using all hints in order, before the next |
|---|
| 122 | subformula is started. For pure ACTL or pure ECTL formulae, we |
|---|
| 123 | can also set guided_search_hint_type to global, in which case |
|---|
| 124 | the entire formula is evaluated for one hint before moving on |
|---|
| 125 | to the next hint, using underapproximations. The description of |
|---|
| 126 | the options for guided search can be found in the help page for |
|---|
| 127 | print_guided_search_options. |
|---|
| 128 | |
|---|
| 129 | model_check will call reachability without any guided search, |
|---|
| 130 | even if -g is used. If you want to perform reachability with |
|---|
| 131 | guided search, call rch directly. |
|---|
| 132 | |
|---|
| 133 | Incompatible with -F. |
|---|
| 134 | |
|---|
| 135 | -h |
|---|
| 136 | Print the command usage. |
|---|
| 137 | |
|---|
| 138 | -i |
|---|
| 139 | Print input values causing transitions between states during |
|---|
| 140 | debugging. Both primary and pseudo inputs are printed. This |
|---|
| 141 | option is incompatible with -F. |
|---|
| 142 | |
|---|
| 143 | -m |
|---|
| 144 | Pipe debugger output through the UNIX utility more. This option |
|---|
| 145 | is incompatible with -F. |
|---|
| 146 | |
|---|
| 147 | -r |
|---|
| 148 | Reduce the FSM derived from the flattened network with respect |
|---|
| 149 | to each formula being checked. By default, the FSM is reduced |
|---|
| 150 | with respect to the conjunction of the formulae in the input |
|---|
| 151 | file. If this option is used and don't cares are being used for |
|---|
| 152 | simplification, then subformula sharing is disabled (result |
|---|
| 153 | might be incorrect otherwise). |
|---|
| 154 | |
|---|
| 155 | The truth of a formula may be independent of parts of the |
|---|
| 156 | network (such as when wires have been abstracted; see |
|---|
| 157 | [5]flatten_hierarchy). These parts are effectively removed when |
|---|
| 158 | this option is invoked; this may result in more efficient model |
|---|
| 159 | checking. |
|---|
| 160 | |
|---|
| 161 | -t <timeOutPeriod> |
|---|
| 162 | Specify the time out period (in seconds) after which the |
|---|
| 163 | command aborts. By default this option is set to infinity. |
|---|
| 164 | |
|---|
| 165 | -v <verbosity_level> |
|---|
| 166 | Specify verbosity level. This sets the amount of feedback on |
|---|
| 167 | CPU usage and code status. |
|---|
| 168 | verbosity_level must be one of the following: |
|---|
| 169 | |
|---|
| 170 | 0: No feedback provided. This is the default. |
|---|
| 171 | |
|---|
| 172 | 1: Feedback on code location. |
|---|
| 173 | |
|---|
| 174 | 2: Feedback on code location and CPU usage. |
|---|
| 175 | |
|---|
| 176 | -B |
|---|
| 177 | Check for vacuously passing formulae using the algorithm of |
|---|
| 178 | Beer et al. (CAV97). The algorithm applies to a subset of ACTL |
|---|
| 179 | (w-ACTL) and replaces the smallest important subformula of a |
|---|
| 180 | passing property with either FALSE or TRUE depending on its |
|---|
| 181 | negation parity. It then applies model checking to the |
|---|
| 182 | resulting witness formula. If the witness formula also passes, |
|---|
| 183 | then the original formula is deemed to pass vacuously. If the |
|---|
| 184 | witness formula fails, a counterexample to it provides an |
|---|
| 185 | interesting witness to the original passing formula. See the |
|---|
| 186 | CAV97 paper for the definitions of w-ACTL, important |
|---|
| 187 | subformula, and interesting witness. In short, one of the |
|---|
| 188 | operands of a binary operator in a w-ACTL formula must be a |
|---|
| 189 | propositional formula. See also the -V option. |
|---|
| 190 | |
|---|
| 191 | -C |
|---|
| 192 | Compute coverage of all observable signals in a set of CTL |
|---|
| 193 | formulae using the algorithm of Hoskote, Kam, Ho, Zhao |
|---|
| 194 | (DAC'99). If the verbosity level (-v option) is equal to 0, |
|---|
| 195 | only the coverage stats are printed. If verbosity level is |
|---|
| 196 | greater than zero, then detailed information of the computation |
|---|
| 197 | at each step of the algorithm is also provided. Debug |
|---|
| 198 | information is provided in the form of states not covered for |
|---|
| 199 | each observable signal if the dbg_level (-d option) is greater |
|---|
| 200 | than 0. The number of states printed is set by the vis |
|---|
| 201 | environment variable 'nr_uncoveredstates'. By default the |
|---|
| 202 | number of states printed is 1. The value of nr_uncoveredstates |
|---|
| 203 | can be set using the set command. See also the -I option. |
|---|
| 204 | |
|---|
| 205 | -D <dc_level> |
|---|
| 206 | Specify extent to which don't cares are used to simplify MDDs |
|---|
| 207 | in model checking. Don't cares are minterms on which the values |
|---|
| 208 | taken by functions do not affect the computation; potentially, |
|---|
| 209 | these minterms can be used to simplify MDDs and reduce the time |
|---|
| 210 | taken to perform model checking. The -g flag for guided search |
|---|
| 211 | does not affect the way in which the don't-care conditions are |
|---|
| 212 | computed. |
|---|
| 213 | dc_level must be one of the following: |
|---|
| 214 | |
|---|
| 215 | 0 : No don't cares are used. |
|---|
| 216 | |
|---|
| 217 | 1 : Use unreachable states as don't cares. This is the default. |
|---|
| 218 | |
|---|
| 219 | 2 : Use unreachable states as don't cares and in the EU |
|---|
| 220 | computation, use 'frontiers' for image computation. |
|---|
| 221 | |
|---|
| 222 | 3 : First compute an overapproximation of the reachable states |
|---|
| 223 | (ARDC), and use that as the cares set. Use `frontiers' for |
|---|
| 224 | image computation. For help on controlling options for ARDC, |
|---|
| 225 | look up help on the command: [6]print_ardc_options. Refer to |
|---|
| 226 | Moon, Jang, Somenzi, Pixley, Yuan, "Approximate Reachability |
|---|
| 227 | Don't Cares for {CTL} Model Checking", ICCAD98, and to two |
|---|
| 228 | papers by Cho et al, IEEE TCAD December 1996: one is for State |
|---|
| 229 | Space Decomposition and the other is for Approximate FSM |
|---|
| 230 | Traversal. |
|---|
| 231 | |
|---|
| 232 | -F |
|---|
| 233 | Use forward model checking based on Iwashita's method in |
|---|
| 234 | ICCAD96. Future tense CTL formulas are automatically converted |
|---|
| 235 | to past tense ones as much as possible. Converted forward |
|---|
| 236 | formulas are printed when verbosity is greater than 0. Debug |
|---|
| 237 | options (-b, -d, -f, -i, and -m) are ignored with this option. |
|---|
| 238 | We have seen that forward model checking was much faster than |
|---|
| 239 | backward in many cases, also forward was much slower than |
|---|
| 240 | backward in many cases. |
|---|
| 241 | |
|---|
| 242 | -I |
|---|
| 243 | Compute coverage of all observable signals in a set of CTL |
|---|
| 244 | formulae using an improved algorithm of Jayakumar, Purandare, |
|---|
| 245 | Somenzi (DAC'03). If the verbosity level (-v option) is equal |
|---|
| 246 | to 0, only the coverage stats are printed. If verbosity level |
|---|
| 247 | is greater than zero, then detailed information of the |
|---|
| 248 | computation at each step of the algorithm is also provided. |
|---|
| 249 | Debug information is provided in the form of states not covered |
|---|
| 250 | for each observable signal if the dbg_level (-d option) is |
|---|
| 251 | greater than 0. The number of states printed is set by the vis |
|---|
| 252 | environment variable 'nr_uncoveredstates'. By default the |
|---|
| 253 | number of states printed is 1. The value of nr_uncoveredstates |
|---|
| 254 | can be set using the set command. Compared to the -C option, |
|---|
| 255 | this one produces more accurate results and deals with a larger |
|---|
| 256 | subset of CTL. |
|---|
| 257 | |
|---|
| 258 | -S <schedule> |
|---|
| 259 | Specify schedule for GSH algorithm, which generalizes the |
|---|
| 260 | Emerson-Lei algorithm and is used to compute greatest |
|---|
| 261 | fixpoints. The choice of schedule affects the sequence in which |
|---|
| 262 | EX and EU operators are applied. It makes a difference only |
|---|
| 263 | when fairness constraints are specified. |
|---|
| 264 | <schedule> must be one of the following: |
|---|
| 265 | |
|---|
| 266 | EL : EU and EX operators strictly alternate. This is the |
|---|
| 267 | default. |
|---|
| 268 | |
|---|
| 269 | EL1 : EX is applied once for every application of all EUs. |
|---|
| 270 | |
|---|
| 271 | EL2 : EX is applied repeatedly after each application of all |
|---|
| 272 | EUs. |
|---|
| 273 | |
|---|
| 274 | budget : a hybrid of EL and EL2. |
|---|
| 275 | |
|---|
| 276 | random : enabled operators are applied in (pseudo-)random |
|---|
| 277 | order. |
|---|
| 278 | |
|---|
| 279 | off : GSH is disabled, and the old algorithm is used instead. |
|---|
| 280 | The old algorithm uses the EL schedule, but the termination |
|---|
| 281 | checks are less sophisticated than in GSH. |
|---|
| 282 | |
|---|
| 283 | -V |
|---|
| 284 | Check for vacuously passing formulae with the algorithm of |
|---|
| 285 | Purandare and Somenzi (CAV2002). The algorithm applies to all |
|---|
| 286 | of CTL, and to both passing and failing properties. It says |
|---|
| 287 | whether a passing formula may be strengthened and still pass, |
|---|
| 288 | and whether a failing formula may be weakened and still fail. |
|---|
| 289 | It considers all leaves of a formula that are under one |
|---|
| 290 | negation parity (e.g., not descendants of a XOR or EQ node) for |
|---|
| 291 | replacement by either TRUE or FALSE. See also the -B option. |
|---|
| 292 | |
|---|
| 293 | -w <node_file> This option invoked the algorithm to generate an error |
|---|
| 294 | trace divided into fated and free segements. Fate represents |
|---|
| 295 | the inevitability and free is asserted when there is no |
|---|
| 296 | inevitability. This can be formulated as a two-player |
|---|
| 297 | concurrent reachability game. The two players are the |
|---|
| 298 | environment and the system. The node_file is given To specify |
|---|
| 299 | the variables the are controlled by the system. |
|---|
| 300 | |
|---|
| 301 | -W |
|---|
| 302 | This option represents the case that all input variables are |
|---|
| 303 | controlled by system. |
|---|
| 304 | |
|---|
| 305 | -G |
|---|
| 306 | We proposed two algorithm to generate segemented counter example. They |
|---|
| 307 | are general and restrcited algorithm. Bu default we use |
|---|
| 308 | restricted algorithm. We can invoke general algorithm with -G |
|---|
| 309 | option. For more information, please check the STTT'04 paper of |
|---|
| 310 | Jin et al., "Fate and Free Will in Error Traces" |
|---|
| 311 | |
|---|
| 312 | <ctl_file> |
|---|
| 313 | File containing CTL formulas to be model checked. |
|---|
| 314 | |
|---|
| 315 | Related "set" options: |
|---|
| 316 | |
|---|
| 317 | ctl_change_bracket <yes/no> |
|---|
| 318 | Vl2mv automatically converts "[]" to "<>" in node names, |
|---|
| 319 | therefore CTL parser does the same thing. However, in some |
|---|
| 320 | cases a user does not want to change node names in CTL parsing. |
|---|
| 321 | Then, use this set option by giving "no". Default is "yes". |
|---|
| 322 | |
|---|
| 323 | guided_search_hint_type |
|---|
| 324 | Switches between local and global hints (see the -g option, or |
|---|
| 325 | the help page for set). |
|---|
| 326 | |
|---|
| 327 | See also commands : approximate_model_check, |
|---|
| 328 | incremental_ctl_verification |
|---|
| 329 | _________________________________________________________________ |
|---|
| 330 | |
|---|
| 331 | Last updated on 20050519 10h16 |
|---|
| 332 | |
|---|
| 333 | References |
|---|
| 334 | |
|---|
| 335 | 1. file://localhost/projects/development/hsv/vis/common/doc/html/init_verifyCmd.html |
|---|
| 336 | 2. file://localhost/projects/development/hsv/vis/common/doc/ctl/ctl/ctl.html |
|---|
| 337 | 3. file://localhost/projects/development/hsv/vis/common/doc/html/check_invariantCmd.html |
|---|
| 338 | 4. file://localhost/projects/development/hsv/vis/common/doc/html/read_fairnessCmd.html |
|---|
| 339 | 5. file://localhost/projects/development/hsv/vis/common/doc/html/flatten_hierarchyCmd.html |
|---|
| 340 | 6. file://localhost/projects/development/hsv/vis/common/doc/html/print_ardc_optionsCmd.html |
|---|