1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
<chapter id="chapter.gui.memory">
<title>Navigating the Memory Coverage Window</title>
<para>
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:
</para>
<para>
<orderedlist>
<listitem>
<para>Have all bits toggled from 0 -> 1 and from 1 -> 0?</para>
</listitem>
<listitem>
<para>Has the entry been written?</para>
</listitem>
<listitem>
<para>Has the entry been read?</para>
</listitem>
</orderedlist>
</para>
<para>
To display this window, simply click on a highlighted/underlined uncovered memory in the
<link linkend="section.gui.main.viewer">file viewer</link>. 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.
</para>
<para>
<figure id="figure.gui.memory">
<title>Verbose Memory Window</title>
<mediaobject><imageobject><imagedata fileref="img/memory_full.gif" format="GIF"/></imageobject></mediaobject>
</figure>
</para>
<sect1 id="section.gui.memory.layout">
<title>Understanding the Layout</title>
<para>
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.
</para>
<sect2 id="section.gui.memory.layout.ame">
<title>Addressable Memory Elements Frame</title>
<para>
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:
</para>
<para>
<programlisting>
reg [15:0] foo[0:1][0:3];
</programlisting>
</para>
<para>
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:
</para>
<para>
<itemizedlist>
<listitem><para>foo[0][0]</para></listitem>
<listitem><para>foo[0][1]</para></listitem>
<listitem><para>foo[0][2]</para></listitem>
<listitem><para>foo[0][3]</para></listitem>
<listitem><para>foo[1][0]</para></listitem>
<listitem><para>foo[1][1]</para></listitem>
<listitem><para>foo[1][2]</para></listitem>
<listitem><para>foo[1][3]</para></listitem>
</itemizedlist>
</para>
<para>
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 <link linkend="chapter.gui.preferences">preferences window</link>)
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.
</para>
</sect2>
<sect2 id="section.gui.memory.layout.elem">
<title>Element Coverage Frame</title>
<para>
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).
</para>
<para>
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.
</para>
<para>
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.
</para>
<para>
Below the memory name are two other pieces of coverage information about the AME. The value to the right of the
<emphasis role="bold">Written:</emphasis> 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 <link linkend="chapter.gui.preferences">preferences window</link>). 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.
</para>
<para>
To the right of the <emphasis role="bold">Written</emphasis> information is the
<emphasis role="bold">Read</emphasis> 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.
</para>
</sect2>
<sect2 id="section.gui.memory.layout.button">
<title>Button Frame</title>
<para>
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.
</para>
<para>
To exit this window, simply click on <emphasis role="bold">Close</emphasis> button. To see this help page from
the toggle window, click on the <emphasis role="bold">Help</emphasis> button.
</para>
</sect2>
</sect1>
<sect1 id="section.gui.memory.excl">
<title>Excluding/Including a Memory for Memory Coverage</title>
<para>
The user may exclude/include any uncovered memory in the design for memory coverage by simply clicking on the
<emphasis role="bold">Excluded</emphasis> checkbutton in the upper right-hand portion of the Memory Coverage
window. If this checkbutton is checked, the <link linkend="chapter.gui.exclude">exclusion reason popup window</link>
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 <link linkend="section.gui.main.listbox">listbox</link> and the background color of the underlined memory in
the <link linkend="section.gui.main.viewer">file viewer</link> 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 <emphasis role="bold">Excluded</emphasis> checkbutton is unchecked, the
summary coverage information and background colors will be readjusted to include the coverage information for this
memory.
</para>
<para>
If the user excludes any memory for memory coverage in the design, the <emphasis role="bold">Save CDD...</emphasis>
option in the <link linkend="section.gui.main.filemenu">file</link> 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.
</para>
<para>
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 <emphasis role="bold">Excluded</emphasis> 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.
</para>
</sect1>
<sect1 id="section.gui.memory.displaying">
<title>Displaying a New Memory for Memory Coverage</title>
<para>
If the Verbose Memory Coverage window is currently displayed with a memory, the user may select a new memory in
the <link linkend="section.gui.main.viewer">file viewer</link> 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.
</para>
<para>
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.
</para>
</sect1>
</chapter>
|