|
|
1.1 ! root 1: .TH SPIN 1 ! 2: .CT 1 comm_mach protocol ! 3: .SH NAME ! 4: spin \(mi protocol analysis software ! 5: .SH SYNOPSIS ! 6: .B spin ! 7: [ ! 8: .BI -n N ! 9: ] ! 10: [ ! 11: .BI -pfglpqrsm ! 12: ] ! 13: [ ! 14: .BI -at ! 15: ] ! 16: [ ! 17: .I file ! 18: ] ! 19: .SH DESCRIPTION ! 20: .I Spin ! 21: is a tool for analyzing the logical consistency of ! 22: concurrent systems, specifically communication protocols. ! 23: The system is specified in a guarded command language called Promela. ! 24: The language, described in the reference, ! 25: allows for the dynamic creation of processes, ! 26: nondeterministic case selection, loops, gotos, ! 27: variables and assertions. ! 28: The tool has fast and frugal algorithms for analyzing ! 29: liveness and safeness conditions. ! 30: .PP ! 31: Given a model system specified in Promela, ! 32: .I spin ! 33: can either perform random simulations of the system's execution ! 34: or it can generate a C program that performs a fast exhaustive ! 35: validation of the system state space. ! 36: The validator can check, for instance, if user specified system ! 37: invariants may be violated during a protocol's execution, or ! 38: if any non-progress execution cycles exist. ! 39: .PP ! 40: Without any options the program performs a random simulation. ! 41: With option ! 42: .TP ! 43: .BI -n N ! 44: the seed for the simulation is set explicitly to the integer value ! 45: .BR N . ! 46: .PP ! 47: A second group of options ! 48: .B -pglrs ! 49: is used to set the desired level of information that the user wants ! 50: about the simulation run. ! 51: Every line of output normally contains a reference to the source ! 52: line in the specification that caused it. ! 53: .TP ! 54: .B p ! 55: Show at each time step which process changed state. ! 56: .TP ! 57: .B l ! 58: In combination with option ! 59: .BR p , ! 60: show the current value of local variables of the process. ! 61: .TP ! 62: .B g ! 63: Show at each time step the current value of global variables. ! 64: .TP ! 65: .B r ! 66: Show all message-receive events, giving ! 67: the name and number of the receiving process ! 68: and the corresponding the source line number. ! 69: For each message parameter, show ! 70: the message type and the message channel number and name. ! 71: .TP ! 72: .B s ! 73: Show all message-send events. ! 74: .PP ! 75: Two options can be used to alter the model definition itself. ! 76: .TP ! 77: .B m ! 78: Changes the semantics of send events. ! 79: Ordinarily, a send action will be delayed if the ! 80: target message buffer if full. ! 81: With this option a message sent to a full buffer is lost. ! 82: The option can be combined with ! 83: .TP ! 84: .B q ! 85: Causes spin to inspect the Promela code for sequences that ! 86: can safely be cast into atomic sequences, to allow a ! 87: reduction of the complexity of larger validation runs. ! 88: Manual placement of atomic sequences can usually achieve ! 89: still larger reductions. ! 90: .B -a ! 91: (see below). ! 92: .TP ! 93: .B a ! 94: Generate a protocol-specific analyzer. ! 95: The output is written into a set of C files, named ! 96: .BR pan. [ cbhmt ], ! 97: that can be compiled ! 98: .RB ( "cc pan.c" ) ! 99: to produce an executable analyzer. ! 100: Large systems, that require more memory than available ! 101: on the target machine, can still be analyzed by compiling ! 102: the analyzer with a bit state space: ! 103: .IP ! 104: .B cc -DBITSTATE pan.c ! 105: .IP ! 106: This collapses the state space to 1 bit per system state, ! 107: with minimal side-effects. ! 108: .IP ! 109: A compiled analyzer has its own set of options, ! 110: which can be seen by typing ! 111: .BR "a.out -?" . ! 112: .TP ! 113: .B t ! 114: If the analyzer finds a violation of an assertion, a deadlock, ! 115: a non-progress loop, or ! 116: an unspecified reception, it writes an error trail into a file ! 117: named ! 118: .BR pan.trail . ! 119: The trail can be inspected in detail by invoking ! 120: .I spin ! 121: with the ! 122: .B t ! 123: option. ! 124: In combination with the options ! 125: .B pglrs ! 126: different views of the error sequence are then easily obtained. ! 127: .SH SEE ALSO ! 128: .I cospan ! 129: in ! 130: .IR langs (1) ! 131: .br ! 132: G.J. Holzmann, ! 133: `Spin \(em A Protocol Analyzer', ! 134: this manual, Volume 2.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.