News & Analysis

New Innovations Simplify Logic Analysis

Doug Beck

8/27/2004 12:00 AM EDT



Logic analyzers are instruments that have a reputation for being difficult to learn and difficult to use. They earned this reputation because they are unusually complex and require users to understand how they were designed in order to understand how to use them. This is like requiring a driver to understand how an automobile was designed in order to drive a car.

Infrequent usage magnifies user difficulties; logic analyzers are only used during the design stage when hardware is available for debug. This means that most engineers may not use a logic analyzer for several months and many have said that each time they use the instrument, they must re-learn it.

Recent research on the logic analyzer usage model has simplified logic analyzers by streamlining the tasks that users perform in setup, triggering and data analysis. We review the new innovations in each area, using the Agilent 16900 logic analysis system as an example.

Setup Innovations
Display Connector Pins to Simplify Bus/Signal Setup
To set up a logic analyzer, the first step is to specify the buses and signals that you will use. This means entering the bus/signal names and well as the channels used for probing. Groups of 16 channels are organized into pods. Figure 1 shows an example of a dialog to specify buses and signals. Notice the signal D0 that is the 2nd Bus/Signal from the top. Just to the right of it is a checkmark that indicates that this signal is connected via Channel 15 of Pod 4. (notice that the number 15 is directly above the checkmark for D0 and that this channel belongs to Pod 4). Secondly, as an example of a bus, there is a bus called "DATA" that is 16-bits wide. Each bit must have a corresponding channel, thus the 16 checkmarks in the same row as DATA.



Figure 1: The Bus/Signal setup dialog


Unless the number of buses and signals is very low, it is easy to see that specifying channels one by one can be a tedious process even if you have a list of exactly which channels to use. Unfortunately, when connectors, such as MICTORs, are used on the device under test (DUT), this mapping from signals to channels isn't available. The problem is:

  • each signal is routed to a specific pin on the connector, such as Pin 38, and
  • the probe (which connects the logic analyzer to the connector) maps Pin 38 to Channel 0 on whichever pod is used with that probe.

In other words, what engineers have in their schematic maps signals to pins, but the logic analyzer does not accept pins, but does accept channels. Previously, engineers were required to manually do the conversion themselves with the help of the probe documentation.

Fortunately, a new feature has been added that displays connector pins in the Bus/Signal Setup dialog such that users no longer need to perform the manual transformation. All that the user needs to do is define which type of connector was used and which logic analyzer pods were connected to it. For example, a single-ended MICTOR connector uses two pods. To avoid confusion, these two pods are labeled "Even" and "Odd" (see the example of defining a MICTOR connector using the "Add Probe" dialog in Figure 2). Notice that the user has specified Pod 4 for "Even" and Pod 3 for "Odd".


Figure 2: The Add Probe dialog

Once the user has defined their probes, the connector pin information can be shown in the Bus/Signal dialog as shown in Figure 3. Notice that there is a new row located above the logic analyzer channels (this row has a yellow background color and cell 15 has the value "7" in it). With the connector pins displayed, it is clear that the signal D0 is connected to Pin 7, which is the same as Pod 4 Channel 15. Now users can read the information directly from their schematic and enter it into the logic analyzer without having to reference the probe documentation to perform a transformation.


Figure 3: The Bus/Signal dialog showing connector pins beneath the channels


Netlist Import
While the display of connector pins does make entering buses and signals easier, an even better method is to import buses and signals directly from the EDA tool used to layout the board. Many EDA tools create ASCII netlist files, and now logic analyzers, such as the 16900A, are able to import buses and signals directly from these design simulation tools.

The ASCII netlist file maps nets to connections, such as D0 to J1-7. Notice in Figure 2 that users specified the name of the board connection, which was "J1" in this example. This name is used to identify which nets in the netlist file map to pins on a connector such as a MICTOR. Nets that are not mapped to logic analyzer probes are ignored. In other words, if a user defines J1 and J2 as connectors using the "Add Probe" dialog, then all connections other than J1 and J2 in the netlist file will be ignored. The result is an automatic method for setting up buses and signals that is fast and accurate. This method is possible because the logic analyzer was enhanced to accept what the user has readily available, a netlist file, instead making the user transform this into the format used by the logic analyzer. The time saved by importing a netlist directly into the logic analyzer can be hours or even days. According to one engineer who had a DUT with eight MICTOR connectors, "It could take a week to enter all of the buses and signals manually."

Probe Summary
Once users have defined the probes, a Probe Summary dialog is created, as shown in Figure 4. The purpose of this dialog is to tell users how to re-connect the probes in the event that this becomes necessary. This task can be a fairly common occurrence because most labs have very few logic analyzers and several engineers must share the instrument. This means that engineers frequently are not allowed to keep their DUT connected to the logic analyzer for the duration of their project forcing them to connect and re-connect their DUT to the logic analyzer. The Probe Summary dialog saves time by showing at a glance exactly how to re-connect the probes.


Figure 4: The Probe Summary allows users to re-connect the probes


Unified Sampling Dialog
There are two main methods for telling a logic analyzer when to acquire a sample, either at regular intervals (Timing Mode) or based upon a DUT clock signal (State Mode). While setting up the sampling might seem easy because there are relatively few choices, this has been difficult because the settings were spread across several dialogs that mapped to the underlying logic analyzer architecture. The key innovation here was to allow the user to specify all parameters in a single dialog (see Figure 5).


Figure 5: The Unified Sampling Dialog


Users select Timing or State Mode at the top of the dialog. If the user choses Timing Mode, then the sampling period is specified. If the user choses State Mode, then one or more clock signals are selected. Notice that there is one clock channel per pod. Each clock channel is clearly labeled and has an activity indicator. The innovation in this case is to put everything together in one place such that users do not forget a step. The most common problem in the past was when users selected State Mode but forgot to specify which clocks to use and then the logic analyzer could not collect data.

Eye Finder
When using a logic analyzer in State Mode, it is essential to only take a sample when bus values are stable. In other words, the logic analyzer should not take a sample when a bus is transitioning from one value to another. If it does so, then the bus value will be random implying that there could be a problem on the DUT that does not actually exist. Now users have a feature called Eye Finder. Eye Finder analyzes each bus to determine, relative to the sample clock, where the bus values are stable and where they are transitioning from one value to another. Eye Finder automatically sets up the logic analyzer to take a sample at that point (see Figure 6). The colored regions in Eye Finder are where the bus values are transitioning and the white regions are where they are stable. The blue lines are where the logic analyzer will acquire a sample.


Figure 6: The Eye Finder dialog makes it easy to see where a bus is stable relative to the sample clock. The blue lines indicate where the logic analyzer should take a sample.


Before Eye Finder, it was difficult to be sure where the eye of a bus was located. While Figure 6 shows all of the bits of the ADDR bus with the same stable region, this can vary from signal to signal depending upon where each signal is probed. Without Eye Finder, engineers were forced to measure signals a few at a time on an oscilloscope and then manually enter the sample position on the logic analyzer.

Triggering Innovations
Simple Trigger
Any engineer who has used a logic analyzer will readily agree that there is nothing simple about setting it up. However, the most frequently used logic analyzer triggers are relatively simple. Doesn't it make sense that setting up these common triggers should be very easy and intuitive? Simple Trigger is an innovation that allows users to specify triggers directly in the Waveform and Listing windows. Consider the example in Figure 7. In this case, we have a bus and a signal in a waveform window. To trigger on a falling edge on the D31, all we need to do is select "falling edge" from the Simple Trigger menu. To trigger on a DATA value that occurs at the same time as the edge on D31, all the user has to do is enter the value into the text field.



Figure 7: Simple Trigger in a Waveform window


Simple Trigger is not designed to provide all of the trigger functionality for the logic analyzer. That is why there is also a separate dialog for more advanced triggers. But whenever users want to specify a simple trigger, they can do so quickly and easily without having to open a separate trigger dialog.

Quick Trigger
Another easy method for specifying a trigger is known as Quick Trigger. In this case, the user can see the event in the waveform window that they want to trigger on. To set the trigger, they simply draw a box around the region and select Quick Trigger from the popup menu. This causes the values in the selected area to be copied to the Simple Trigger as shown in Figure 8.


Figure 8: Highlighting a region to be the trigger


Quick Trigger is limited to setting simple triggers and cannot be used to specify a sequence of events. So when a box is drawn around a bus that transitions from one value to another, only the left most value is copied to the Simple Trigger. Yet this feature does cover a surprising number of common triggers. Quick Trigger was created because engineers told us that simply selecting an area of the screen was the simplest method for specifying a trigger.

Flexible Trigger Functions
Trigger functions are building blocks that simplify the process of setting up advanced trigger sequences. While such functions have existed in logic analyzers for some time, they cannot be modified. In other words, if the user was unable to find an exact match for the trigger they needed, then the functions were of no use. As an example of a flexible trigger function, see the "Pattern present for > time" function in Figure 9. This causes the logic analyzer to trigger when there has been a value of 0123456 on the ADDR bus that lasts at least 5 ns.


Figure 9: An unmodified trigger function


While this is a useful function, users may want to trigger when both the ADDR bus and DATA bus have their values for a period of time. With a flexible trigger function, it is only a matter of adding another event as shown in Figure 10. Therefore, we didn't need to find an exact match in the trigger functions. All we had to do was find a near match and then make a quick modification and the trigger has been set up. The resulting modified trigger function is shown in Figure 11.


Figure 10: Adding an event to a trigger function



Figure 11: A modified trigger function. Now there is a bus and signal that both must be stable for 10 ns


Beyond just changing a trigger function, two or more functions can be combined to form a "Followed By", as in "Find Event X followed by Event Y". In Figure 12, we see an example of finding an "Edge and Pattern" followed by a "Pattern present for > time". While users can still build advanced triggers from scratch, flexible trigger functions save valuable time.


Figure 12: Two trigger functions combined to form a "Followed By"


Trigger History
The Trigger History recognizes that engineers often want to switch back and forth between several different triggers. To make this as easy as possible, each time we run the logic analyzer, the trigger is saved. This is very much like an Internet Browser which provides a history of the sites that we visited. While users could simply save each trigger themselves after each run, it is more efficient for the system to remember the triggers. An example of this feature is shown in Figure 13.


Figure 13: The Trigger History retains all of the triggers from recent runs so that users can easily switch between them.


Analysis Innovations
Snap-to-Edge Markers
Markers are used to remember the location of an event of interest or to measure time. The vast majority of markers are placed on edges, which is where one value transitions to another. To make placing markers on edges easy, a new feature has been created that causes markers to snap to an edge (see Figure 14). In this case, the marker M1 (which is indicated by the green dashed line) is being placed. Notice that there is a small green arrow which points to the next edge that is indicated by a target. The direction of the next edge is chosen by the direction that the user moves the marker. In this case, the marker was being moved to the left. As the marker is moved, a tool tip shows the position of the marker, a couple of time measurements and the position of the next edge.



Figure 14: Placing a marker on an edge


Snap-to-Edge markers save time because the markers are placed precisely on the edge. Secondly, they are also useful for finding edges which are not visible on screen. Because the Snap-to-Edge markers will cause the time delay to be changed when snapping to off screen edges, they are also a new method for navigating through waveform data.

Quick Measurement Tool Tips
Measuring the time of an event on the screen should be a very easy task, but unfortunately, in the past, this required placing a marker on either side of event of interest and then displaying the time difference between the two markers. Now, measuring time is simply a matter of drawing a box as shown in Figure 15. Notice the tool tip provides a quick measurement of the selected area.


Figure 15: A Quick Measurement Tool Tip


Quick Search
Quick Search is very similar to Quick Trigger. The only difference is that instead of setting up the trigger based on the selected waveforms, it performs a search using the selected waveforms. This eliminates the need to locate and understand a Find dialog unless performing a more sophisticated search.

Value Based Markers
Most logic analyzer markers can only be placed at a specific point in time. This means that each time that the logic analyzer is run the markers are at the same point in time even if the event at that point has changed. If the user is interested in placing it in an event rather than a specific point in time, then each marker must be moved to the event of interest after each run. Value based markers solve this problem by associating markers with an event relative to the trigger. For example, a user might create a marker that is always located on the first occurrence of DATA = 1234 after the trigger. After each run, the marker automatically moves to this event. While time based markers are still valuable, now logic analyzers give users the choice of making each marker either time based or value based. Value based markers are shown in Figures 16 and 17. In these two figures, the marker M3 is defined as being on the first occurrence of DATA = 1111 after the trigger. M3 will automatically move to this position after each run.


Figure 16: Selecting "Value" as the position for a marker



Figure 17: Setting up a Value Based Marker


Conclusion
Recent innovations in logic analyzers have resulted in making them significantly easier to learn and to use. The key has been to provide methods for engineers to quickly perform common tasks in an intuitive manner. While these innovations required extensive research to develop, they provide users with essential debug tools that are much easier to use. The problem in the past was that the user interfaces were modeled on the logic analyzer architecture. Now, the logic analyzer user interface is designed with the engineer in mind. In essence, the logic analyzer has learned more about users so that users need to learn less about logic analyzers. This means that engineers can get the visibility into their system more rapidly and effectively than they could in the past. This new focus on usability saves valuable engineering time.


About the Author

Doug Beck received his BS in Computer Science and a Ph.D in Industrial and Operations Engineering from the University of Michigan. He has spent eight years in Agilent's Design Validation Division in Colorado Springs and today is a senior usability engineer focusing on methods for making logic analyzers and oscilloscopes easier to learn and use. He has three patents in telecommunications and five in test and measurement. Doug's after work interests include photography, hiking and softball.






Please sign in to post comment

Navigate to related information

EE Buzz DesignCon

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)

Feedback Form