Chapter 20. Navigating the Memory Coverage Window

Table of Contents

20.1. Understanding the Layout
Addressable Memory Elements Frame
Element Coverage Frame
Button Frame
20.2. Excluding/Including a Memory for Memory Coverage
20.3. Displaying a New Memory for Memory Coverage

The verbose memory window allows the user to interactively view all of the coverage information for a selected memory, including the following for each addressable memory element:

  1. Have all bits toggled from 0 -> 1 and from 1 -> 0?

  2. Has the entry been written?

  3. Has the entry been read?

To display this window, simply click on a highlighted/underlined uncovered memory in the file viewer. This will cause the verbose memory viewer to be created for the specified memory as well as display a "-->" symbol in the Coverage Viewer on the same line as the selected memory. This symbol is simply meant to help the user identify in the Coverage Viewer which memory is currently displayed in the Memory Viewer window. Figure 1 shows the Memory Viewer loaded with a 4-dimensional memory called "mem" in which two of the dimensions are unpacked (all combinations of unpacked dimensions make up the total number of addressable elements in the memory), creating a total of 18 addressable elements. The first addressable element "[0][0]" is shown in the lower frame in which only a single bit has been toggled from 0 to 1, the element has been written, but it has not been read.

Figure 20.1. Verbose Memory Window

Verbose Memory Window


20.1. Understanding the Layout

The Memory Coverage window is split up into three main frames stacked from top to bottom. These frames, in order from top to bottom, are the "Addressable Memory Elements" frame, the "Element Coverage" frame, and the button frame. Each are described in detail below.

Addressable Memory Elements Frame

The uppermost frame contains all of the addressable memory elements (AMEs) of the memory. An AME is a single memory entry that is addressed by specifying a unique combination of values for each of the unpacked dimensions of the memory. For example, consider the following memory:

  reg [15:0] foo[0:1][0:3];
        

This memory called "foo" contains three dimensions. One packed dimension which is a 16-bit little endian value and two unpacked dimensions, containing two entries of four entries (for a total of eight addressable memory elements). Each AME being 16 bits wide. The AMEs for this memory would be:

  • foo[0][0]

  • foo[0][1]

  • foo[0][2]

  • foo[0][3]

  • foo[1][0]

  • foo[1][1]

  • foo[1][2]

  • foo[1][3]

The upper frame will contain all of the AMEs for the selected memory. The uncovered AMEs will be highlighted in the uncovered color scheme (as specified in the preferences window) while all fully covered AMEs will remain unhighlighted. To view the coverage information for any uncovered AME, simply click on it and the information will be viewable in the "Element Coverage" frame below it.

Element Coverage Frame

The Element Coverage frame shows all of the coverage information for the currently selected AME including toggle coverage (which bits of the element toggled from 0->1 and 1->0), write coverage (was this entry written to) and read coverage (was this entry accessed).

The bit vector displayed in the toggle window is a binary bit vector, where each value (0 or 1) represents whether that bit in the signal either toggled (1) or did not toggle (0) during simulation. There are two bit vectors displayed for the AME, the top vector shows the 0->1 toggle information while the bottom vector shows the 1->0 toggle information.

The name of the memory along with its dimensional range information is displayed below the toggle window; however, if the mouse cursor is placed over a specific bit in the toggle box, the packed dimensional range information will be changed to show the displayed bit, making it easy for the user to discern exactly which bit has toggled/not toggled. If the width of the AME exceeds the given space for the toggle window, a scrollbar will be allowed to slide left and right to view the rest of the toggle information.

Below the memory name are two other pieces of coverage information about the AME. The value to the right of the Written: label will be set to either "Yes" or "No". If the value is "Yes", this indicates that the currently selected AME was written during simulation and value will be highlighted with the covered color scheme (as selected in the preferences window). If the value is "No", this indicates that the currently selected AME was not written during simulation and the value will be highlighted with the uncovered color scheme.

To the right of the Written information is the Read label which will also be set to either a value of "Yes" or "No". If the value is "Yes", this indicates that the currently selected AME was accessed during simulation and the value will be highlighted with the covered color scheme. If the value is "No", this indicates that the currently selected AME was not accessed during simulation and the value will be highlighted with the uncovered color scheme.

Button Frame

The button frame contains buttons for closing the Memory Coverage window, displaying this help page, or moving to the next/previous uncovered memory in the same module/instance.

To exit this window, simply click on Close button. To see this help page from the toggle window, click on the Help button.

20.2. Excluding/Including a Memory for Memory Coverage

The user may exclude/include any uncovered memory in the design for memory coverage by simply clicking on the Excluded checkbutton in the upper right-hand portion of the Memory Coverage window. If this checkbutton is checked, the exclusion reason popup window will be displayed automatically, allowing the user to specify a reason for excluding the memory. Once a reason has been entered, the summary coverage information will automatically be recalculated and redisplayed in the listbox and the background color of the underlined memory in the file viewer will change from the uncovered background color to the covered background color. However, the memory will still remain underlined, allowing the user to see the verbose memory coverage information, if necessary. If the Excluded checkbutton is unchecked, the summary coverage information and background colors will be readjusted to include the coverage information for this memory.

If the user excludes any memory for memory coverage in the design, the Save CDD... option in the file menu. This allows the user to save the excluded property either back to the CDD file (or to a newly named CDD file). Doing so will allow the user to load the CDD file at a different time and retain the knowledge of which memories have been excluded/included for memory coverage. Additionally, if a saved CDD file with coverage exclusion is merged with another CDD file, the excluded memory information is preserved for the resulting merged CDD file.

If a memory has been excluded from coverage and an exclusion reason was specified, you can view the reason for exclusion by right-click-and-holding on the Excluded checkbutton. This will cause a tooltip-style window to be displayed specifying the reason for exclusion. The background color of the tooltip will be the same color as the "covered" background color to help distinguish it from a normal tooltip. To cause the exclusion reason tooltip to disappear, simply release the button.

20.3. Displaying a New Memory for Memory Coverage

If the Verbose Memory Coverage window is currently displayed with a memory, the user may select a new memory in the file viewer of the Main window. When a new memory is selected, its value immediately replaces the currently selecting memory value. This feature allows many different memories to be viewed one after the other without having to create/destroy a new window for each memory.

The user may also see the previous or next uncovered memory in the main viewer by clicking either the left arrow button (for previous memory viewing) or the right arrow button (for next memory viewing). Note that the left arrow button will be disabled if there is not a memory previous to the current memory in the given module and the right arrow button will be disabled if there is not a memory after the current memory in the given module.