next up previous
Next: NUSMV is open: the Up: Conclusions Previous: Conclusions

NUSMV vs. CMU SMV

The capabilities of NUSMV were tested on a series of examples taken from the literature, which were then used for a comparison with the original CMU SMV. Below is a brief description of the tests used and their sources:

These examples can be found in the distribution of NUSMV. Table 3 lists the results of such a comparative test. For each test, we report the number of (current and next) boolean variables necessary to represent the corresponding model (``# of BDD vars''), and the memory17 and time required by the systems to analyze the model. We mark as time out the failure to the problems in 15000 seconds. For the examples marked with ``(*)'' a previously computed ordering file was provided to the system. The verification of the examples marked with a ``(+)'' required the modification of some of the parameters of the BDD package. The other symbols between parentheses are command line options passed to the model checkers: -f enables the computation of the set of reachable states (which is then used to restrict the search in model checking), while -cp # enables conjunctive partitioning with the threshold of each partition set to #. All these tests were performed on an Intel Pentium-II 300Mhz processor with 512Mb of RAM under Linux RedHat 5.0. The results listed in Table 3 show that NUSMV performs in most examples better (in 22 examples of the 39 listed w.r.t. to speed and in 8 examples w.r.t. to memory occupation) than CMU SMV, especially for larger examples. This enhancement in performance is mainly due to the use of the state of the art CUDD BDD package. In the tests none of the enhanced capabilities not present in CMU SMV (e.g., enhanced partitioning methods), were used.


 
Table 3: The results of the comparison test.
 
  NUSMV CMU SMV
Example file name # of BDD vars Memory (KB) Time (secs) Memory (KB) Time (secs)
abp4.smv 66 4938 9.4 960 10.6
abp4.smv (-f) 66 2818 1.5 960 3.2
abp8.smv 98 5886 81.4 1984 117.3
abp8.smv (-f) 98 15074 114.5 6528 527.7
abp10.smv 114 14275 632.9 11776 1011.4
abp10.smv (-f) 114 66767 2712.2 -- time out
abp11.smv 122 43355 3121.2 -- time out
abp11.smv (-f) 122 103251 12554.5 -- time out
brp.smv 98 23966 178.4 30784 1218.7
brp.smv (-f) 98 5346 3.5 1280 4.4

guidance.smv (*)

190 5090 23.0 1728 21.8
guidance.smv (-f) (*) 190 3926 4.8 1408 4.9

p-queue.smv (*)

86 2318 0.4 1088 0.2
p-queue.smv (-f) (*) 86 2318 0.4 1088 0.1

prod-cons.smv (*)

58 6610 80.9 2880 105.1
prod-cons.smv (-f) (*) 58 5594 11.8 1152 33.0

production-cell.smv (*)

108 5826 72.0 2368 97.0
production-cell.smv (-f) (*) 108 2583 1.8 1088 0.4

base.smv (-f) (*)

148 3223 2.2 1536 1.9

idle.smv (-f) (*)

150 7710 90.1 6144 162.0

counter.smv

6 1334 0.0 896 0.0
dme1.smv (-f) (*) 108 3618 1.3 2368 9.4
dme1-16.smv (-f) (*) 576 25310 277.7 -- time out
dme1-16.smv (-cp 2000 -f) (*) 576 15299 335.5 8768 454.4
dme2.smv (-f) (*) 112 3335 1.0 1088 0.6
dme2-16.smv (-f) (*) 586 27050 6313.1 -- time out
dme2-16.smv (-f ) (+) (*) 586 49099 1821.9 68864 4985.8
gigamax.smv 88 4142 1.9 1216 2.0
mutex.smv 10 1342 0.0 896 0.0
mutex1.smv 14 1370 0.1 896 0.0
pci3p.smv (-f) (*) 92 1862 0.2 960 0.1
pci4p.smv (-f) (*) 128 5422 20.0 1152 53.0
periodic.smv (-f) 72 1786 1.0 960 0.1
ring.smv (-f) 10 1342 0.0 1152 0.0
robot.smv (-f) (*) 88 2894 8.7 1280 1.5
semaphore.smv (*) 14 1350 0.0 896 0.0
syncarb10.smv 60 3674 1.2 1216 1.0
syncarb5.smv 30 1455 0.1 896 0.0

tcas-t.smv (-cp 10000) (*)

292 98955 779.0 146816 (+) 1588.6 (+)
 
 



NuSMV <>