Zero Length Fields are normal fields except their start and end times are identical. Normally, we display a field such that it stretches from the time the field began to the point it completed (last bit for example). ASYNC characters have very deterministic start (middle of start bit) and end (middle of end bit) times. Sync fields do not have ending times. For SYNC signals, we usually show the field as stretching from the field's first bit to its last bit, implying that all of these bits make up the field. But how do you display a one bit field where the first bit IS the last bit? This is a zero length field. We chose to show the field as starting at the given bit time and stretching just long enough to allow us to print the field's value and then terminate it. Its closing point is NOT tied to a timestamp. We are labeling a point in time; not a timespan.
Another use for zero length fields is in state signals. Sometimes we like to think of states like a receiving latch sees them; when the state clock transitions, the latch updates and holds the state value. In this case, we simply start a new field each time the clock transitions. Each state is displayed from its starting time until the next field starts. Another way to view states is that we want to see the state value AT the clock edge but don't want to imply that it holds until another strobe. In this case, we could use zero length fields to label each transition with its value at that instant. We would make StartField() call at the clock transition time and then an EndField() call with the same timestamp. Several of our build-in parsers and the examples demonstrate this with the 'show idle' options.