|
|
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 -pglprs ! 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 and deletion of both processes ! 26: and message channels, nondeterministic case selection, loops, gotos, ! 27: variables and assertions. ! 28: .PP ! 29: Given a model system specified in Promela, ! 30: .I spin ! 31: can either perform random simulations of the system's execution ! 32: or it can generate a C program that performs a fast exhaustive ! 33: validation of the system state space. ! 34: The validator can check, for instance, if user specified system ! 35: invariants may be violated during a protocol's execution. ! 36: .PP ! 37: Without any options the program performs a random simulation. ! 38: With option ! 39: .TP ! 40: .BI -n N ! 41: the seed for the simulation is set explicitly to the integer value ! 42: .BR N . ! 43: .PP ! 44: The second group of options ! 45: .B -pglrs ! 46: is used to set the desired level of information that the user wants ! 47: about the simulation run. ! 48: Every line of output normally contains a reference to the source ! 49: line in the specification that caused it. ! 50: .TP ! 51: .B p ! 52: Show at each time step which process changed state. ! 53: .TP ! 54: .B l ! 55: In combination with option ! 56: .BR p , ! 57: show the current value of local variables of the process. ! 58: .TP ! 59: .B g ! 60: Show at each time step the current value of global variables. ! 61: .TP ! 62: .B r ! 63: Show all message-receive events, giving ! 64: the name and number of the receiving process ! 65: and the corresponding the source line number. ! 66: For each message parameter, show ! 67: the message type and the message channel number and name. ! 68: .TP ! 69: .B s ! 70: Show all message-send events. ! 71: .TP ! 72: .B a ! 73: Generate a protocol-specific analyzer. ! 74: The output is written into a set of C files, named ! 75: .BR pan. [ cbhmt ], ! 76: that can be compiled ! 77: .RB ( "cc pan.c" ) ! 78: to produce an executable analyzer. ! 79: For larger systems the state space can quickly exhaust ! 80: the available memory on the machine used. ! 81: Large to very large systems can still be analyzed by compiling ! 82: with a bit state space: ! 83: .IP ! 84: .B cc -DBITSTATE pan.c ! 85: .IP ! 86: A compiled analyzer has its own set of options, ! 87: which can be seen by typing ! 88: .BR "a.out -?" . ! 89: .TP ! 90: .B t ! 91: If the analyzer finds a violation of an assertion, a deadlock, or ! 92: an unspecified reception, it writes an error trail into a file ! 93: named ! 94: .BR pan.trail . ! 95: The trail can be inspected in detail by invoking ! 96: .I spin ! 97: with the ! 98: .B t ! 99: option. ! 100: In combination with the options ! 101: .B pglrs ! 102: different views of the error sequence are then easily obtained. ! 103: .SH SEE ALSO ! 104: .I cospan ! 105: in ! 106: .IR langs (1) ! 107: .br ! 108: G.J. Holzmann, ! 109: `Spin \(em A Protocol Analyzer', ! 110: this manual, Volume 2.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.