1 @page pDebugFeatures Debugging features
3 The SyoSil UVM Scoreboard has been designed to make debugging a failed test as simple as possible.
4 This section describes some of the features which help to track down where errors occur.
6 @section sMiscompareTable Miscompare tables
8 When using the IO, IOP or IO_2HP comparison strategies, a miscompare table is generated when a comparison fails.
9 The table contains a printout of the items which generated the miscompare, and may also contain a comparer report with specific information on which fields failed the comparison.
10 By default, the comparer report is generated whenever an error occurs. It may be disabled via the cl_syoscb_cfg.enable_comparer_report knob.
12 When using Out of Order comparisons or a user defined compare strategy, comparer reports are disabled, as OOO compares naturally lead to a large number of "miscompares" when searching for a match.
14 An example of a miscompare table and comparer report is shown below: The upper portion of the miscompare table contains the two sequence items next to each other. The lower portion contains miscompare information retrieved from the \c uvm_comparer used to perform the comparison, indicating which fields caused the miscompare.
16 \image html miscmp.png
17 \image latex miscmp.png
19 The maximum number of miscompares shown is controlled via the \c show_max knob in the \c uvm_comparer used for the comparison. To modify this value, use cl_syoscb_comparer_config::set_show_max().
21 \c uvm_comparers are by default set to print miscompare information whenever a miscompare occurs.
22 This is controlled via the \c verbosity knob of a \c uvm_comparer, which can be set with cl_syoscb_comparer_config::set_verbosity().
23 The default verbosity level used by \c uvm_comparer's is UVM_LOW.
24 Since the scoreboard incorporates its own comparer reports, the \c uvm_comparer's reports have been muted.
25 When a configuration object is initialized with cl_syoscb_cfg::init(), or the configuration's default comparer is first retrieved with cl_syoscb_cfg::get_default_comparer(), the default comparer's verbosity is set to UVM_HIGH to avoid cluttering the output to STDOUT.
27 Note that on UVM 1.1d, an error in the UVM source code has hard-coded the verbosity of some miscompare messages to UVM_LOW. These cannot be removed without modifying the UVM source used by the simulator. If possible, it is recommended to use another version of UVM where this problem does not exist.
29 @section sScoreboardDump Scoreboard dump
30 During simulation, the contents of the scoreboard's queues may be dumped to log files for postprocessing or inspection.
31 Items may either be dumped to one file containing all transactions, or they may be dumped to separate files, one for each queue.
32 Items may either be dumped using a standard \c uvm_printer, or they may be dumped using the uvm_xml_printer, which
33 formats items into an XML-description which allows for easy postprocessing.
35 Scoreboard dumping is toggled with the config knob cl_syoscb_cfg.full_scb_dump. Other config knobs include
36 cl_syoscb_cfg.full_scb_dump_type and cl_syoscb_cfg.full_scb_dump_split. See the entry on scoreboard dumping in
37 \ref pTestcases for further information.
39 @section sOrphanDump Orphan dump
40 If items remain in any of the queues after simulation, these are seen as "orphans", which are generally treated as errors. Orphans may also be dumped to a log file once simulation finishes. This is toggled with the configuration
41 knob cl_syoscb_cfg.dump_orphans_to_files.
43 The same notes regarding the choice of printer apply as for the scoreboard dump.
45 @section sXmlPrinter XML printer
46 The SyoSil UVM Scoreboard comes with a printer that prints items as XML (uvm_xml_printer).
47 This makes it simple to postprocess and transform the scoreboard or orphan dumps as desired.
49 Once a queue or scoreboard has been dumped with the printer, this file may be transformed into an HTML view of the items by using the make target
50 @code make generate_html XML_FILE=<filename>@endcode
51 Likewise, it may be transformed into the GraphML format by using the make target \c generate_dot
53 In the directory <b>lib/xml</b> the xsd file used to verify generated XML files, as well as XSLT-files for
54 transforming to HTML and GraphML, are located.
58 The current implementation of the XML printer does not support nested arrays, as these are not supported by UVM