1 |
31 |
qaztronic |
// (C) 2001-2016 Intel Corporation. All rights reserved.
|
2 |
|
|
// Your use of Intel Corporation's design tools, logic functions and other
|
3 |
|
|
// software and tools, and its AMPP partner logic functions, and any output
|
4 |
|
|
// files any of the foregoing (including device programming or simulation
|
5 |
|
|
// files), and any associated documentation or information are expressly subject
|
6 |
|
|
// to the terms and conditions of the Intel Program License Subscription
|
7 |
|
|
// Agreement, Intel MegaCore Function License Agreement, or other applicable
|
8 |
|
|
// license agreement, including, without limitation, that your use is for the
|
9 |
|
|
// sole purpose of programming logic devices manufactured by Intel and sold by
|
10 |
|
|
// Intel or its authorized distributors. Please refer to the applicable
|
11 |
|
|
// agreement for further details.
|
12 |
|
|
|
13 |
|
|
|
14 |
|
|
// $Id: //acds/rel/16.1/ip/sopc/components/verification/lib/verbosity_pkg.sv#1 $
|
15 |
|
|
// $Revision: #1 $
|
16 |
|
|
// $Date: 2016/08/07 $
|
17 |
|
|
//-----------------------------------------------------------------------------
|
18 |
|
|
// =head1 NAME
|
19 |
|
|
// verbosity_pkg
|
20 |
|
|
// =head1 SYNOPSIS
|
21 |
|
|
// Package for controlling verbosity of messages sent to the console
|
22 |
|
|
//-----------------------------------------------------------------------------
|
23 |
|
|
// =head1 COPYRIGHT
|
24 |
|
|
// Copyright (c) 2008 Altera Corporation. All Rights Reserved.
|
25 |
|
|
// The information contained in this file is the property of Altera
|
26 |
|
|
// Corporation. Except as specifically authorized in writing by Altera
|
27 |
|
|
// Corporation, the holder of this file shall keep all information
|
28 |
|
|
// contained herein confidential and shall protect same in whole or in part
|
29 |
|
|
// from disclosure and dissemination to all third parties. Use of this
|
30 |
|
|
// program confirms your agreement with the terms of this license.
|
31 |
|
|
//-----------------------------------------------------------------------------
|
32 |
|
|
// =head1 DESCRIPTION
|
33 |
|
|
// This module will dump diagnostic messages to the console during
|
34 |
|
|
// simulation. The level of verbosity can be controlled in the test
|
35 |
|
|
// bench by using the *set_verbosity* method in the imported package
|
36 |
|
|
// verbosity_pkg. For a given setting, message at that level and all
|
37 |
|
|
// lower levels are dumped. For example, setting VERBOSITY_DEBUG level
|
38 |
|
|
// causes all messages to be dumped, while VERBOSITY_FAILURE restricts
|
39 |
|
|
// only failure messages and those tagged as VERBOSITY_NONE to be
|
40 |
|
|
// dumped.
|
41 |
|
|
// The different levels are:
|
42 |
|
|
// =over 4
|
43 |
|
|
// =item 1 VERBOSITY_NONE
|
44 |
|
|
// Messages tagged with this level are always dumped to the console.
|
45 |
|
|
// =item 2 VERBOSITY_FAILURE
|
46 |
|
|
// A fatal simulation error has occurred and the simulator will exit.
|
47 |
|
|
// =item 3 VERBOSITY_ERROR
|
48 |
|
|
// A non-fatal error has occured. An example is a data comparison mismatch.
|
49 |
|
|
// =item 4 VERBOSITY_WARNING
|
50 |
|
|
// Warn the user that a potential error has occurred.
|
51 |
|
|
// =item 5 VERBOSITY_INFO
|
52 |
|
|
// Informational message.
|
53 |
|
|
// =item 6 VERBOSITY_DEBUG
|
54 |
|
|
// Dump enough state to diagnose problem scenarios.
|
55 |
|
|
// =back
|
56 |
|
|
|
57 |
|
|
|
58 |
|
|
`ifndef _AVALON_VERBOSITY_PKG_
|
59 |
|
|
`define _AVALON_VERBOSITY_PKG_
|
60 |
|
|
|
61 |
|
|
package verbosity_pkg;
|
62 |
|
|
|
63 |
|
|
timeunit 1ps;
|
64 |
|
|
timeprecision 1ps;
|
65 |
|
|
|
66 |
|
|
typedef enum int {VERBOSITY_NONE,
|
67 |
|
|
VERBOSITY_FAILURE,
|
68 |
|
|
VERBOSITY_ERROR,
|
69 |
|
|
VERBOSITY_WARNING,
|
70 |
|
|
VERBOSITY_INFO,
|
71 |
|
|
VERBOSITY_DEBUG} Verbosity_t;
|
72 |
|
|
|
73 |
|
|
Verbosity_t verbosity = VERBOSITY_INFO;
|
74 |
|
|
string message = "";
|
75 |
|
|
int dump_file;
|
76 |
|
|
int dump = 0;
|
77 |
|
|
|
78 |
|
|
//--------------------------------------------------------------------------
|
79 |
|
|
// =head1 Public Methods API
|
80 |
|
|
// =pod
|
81 |
|
|
// This section describes the public methods in the application programming
|
82 |
|
|
// interface (API). In this case the application program is the test bench
|
83 |
|
|
// or component which imports this package.
|
84 |
|
|
// =cut
|
85 |
|
|
//--------------------------------------------------------------------------
|
86 |
|
|
|
87 |
|
|
function automatic Verbosity_t get_verbosity(); // public
|
88 |
|
|
// Returns the global verbosity setting.
|
89 |
|
|
return verbosity;
|
90 |
|
|
endfunction
|
91 |
|
|
|
92 |
|
|
function automatic void set_verbosity ( // public
|
93 |
|
|
Verbosity_t v
|
94 |
|
|
);
|
95 |
|
|
// Sets the global verbosity setting.
|
96 |
|
|
|
97 |
|
|
string verbosity_str;
|
98 |
|
|
verbosity = v;
|
99 |
|
|
|
100 |
|
|
case(verbosity)
|
101 |
|
|
VERBOSITY_NONE: verbosity_str = "VERBOSITY_";
|
102 |
|
|
VERBOSITY_FAILURE: verbosity_str = "VERBOSITY_FAILURE";
|
103 |
|
|
VERBOSITY_ERROR: verbosity_str = "VERBOSITY_ERROR";
|
104 |
|
|
VERBOSITY_WARNING: verbosity_str = "VERBOSITY_WARNING";
|
105 |
|
|
VERBOSITY_INFO: verbosity_str = "VERBOSITY_INFO";
|
106 |
|
|
VERBOSITY_DEBUG: verbosity_str = "VERBOSITY_DEBUG";
|
107 |
|
|
default: verbosity_str = "UNKNOWN";
|
108 |
|
|
endcase
|
109 |
|
|
$sformat(message, "%m: Setting Verbosity level=%0d (%s)",
|
110 |
|
|
verbosity, verbosity_str);
|
111 |
|
|
print(VERBOSITY_NONE, message);
|
112 |
|
|
endfunction
|
113 |
|
|
|
114 |
|
|
function automatic void print( // public
|
115 |
|
|
Verbosity_t level,
|
116 |
|
|
string message
|
117 |
|
|
);
|
118 |
|
|
// Print a message to the console if the verbosity argument
|
119 |
|
|
// is less than or equal to the global verbosity setting.
|
120 |
|
|
string level_str;
|
121 |
|
|
|
122 |
|
|
if (level <= verbosity) begin
|
123 |
|
|
case(level)
|
124 |
|
|
VERBOSITY_NONE: level_str = "";
|
125 |
|
|
VERBOSITY_FAILURE: level_str = "FAILURE:";
|
126 |
|
|
VERBOSITY_ERROR: level_str = "ERROR:";
|
127 |
|
|
VERBOSITY_WARNING: level_str = "WARNING:";
|
128 |
|
|
VERBOSITY_INFO: level_str = "INFO:";
|
129 |
|
|
VERBOSITY_DEBUG: level_str = "DEBUG:";
|
130 |
|
|
default: level_str = "UNKNOWN:";
|
131 |
|
|
endcase
|
132 |
|
|
|
133 |
|
|
$display("%t: %s %s",$time, level_str, message);
|
134 |
|
|
if (dump) begin
|
135 |
|
|
$fdisplay(dump_file, "%t: %s %s",$time, level_str, message);
|
136 |
|
|
end
|
137 |
|
|
end
|
138 |
|
|
endfunction
|
139 |
|
|
|
140 |
|
|
function automatic void print_divider( // public
|
141 |
|
|
Verbosity_t level
|
142 |
|
|
);
|
143 |
|
|
// Prints a divider line to the console to make a block of related text
|
144 |
|
|
// easier to identify and read.
|
145 |
|
|
string message;
|
146 |
|
|
$sformat(message,
|
147 |
|
|
"------------------------------------------------------------");
|
148 |
|
|
print(level, message);
|
149 |
|
|
endfunction
|
150 |
|
|
|
151 |
|
|
function automatic void open_dump_file ( // public
|
152 |
|
|
string dump_file_name = "avalon_bfm_sim.log"
|
153 |
|
|
);
|
154 |
|
|
// Opens a dump file which collects console messages.
|
155 |
|
|
|
156 |
|
|
if (dump) begin
|
157 |
|
|
$sformat(message, "%m: Dump file already open - ignoring open.");
|
158 |
|
|
print(VERBOSITY_ERROR, message);
|
159 |
|
|
end else begin
|
160 |
|
|
dump_file = $fopen(dump_file_name, "w");
|
161 |
|
|
$fdisplay(dump_file, "testing dump file");
|
162 |
|
|
$sformat(message, "%m: Opening dump file: %s", dump_file_name);
|
163 |
|
|
print(VERBOSITY_INFO, message);
|
164 |
|
|
dump = 1;
|
165 |
|
|
end
|
166 |
|
|
endfunction
|
167 |
|
|
|
168 |
|
|
function automatic void close_dump_file(); // public
|
169 |
|
|
// Close the console message dump file.
|
170 |
|
|
if (!dump) begin
|
171 |
|
|
$sformat(message, "%m: No open dump file - ignoring close.");
|
172 |
|
|
print(VERBOSITY_ERROR, message);
|
173 |
|
|
end else begin
|
174 |
|
|
dump = 0;
|
175 |
|
|
$fclose(dump_file);
|
176 |
|
|
$sformat(message, "%m: Closing dump file");
|
177 |
|
|
print(VERBOSITY_INFO, message);
|
178 |
|
|
end
|
179 |
|
|
endfunction
|
180 |
|
|
|
181 |
|
|
function automatic void abort_simulation();
|
182 |
|
|
string message;
|
183 |
|
|
$sformat(message, "%m: Abort the simulation due to fatal error incident.");
|
184 |
|
|
print(VERBOSITY_FAILURE, message);
|
185 |
|
|
$stop;
|
186 |
|
|
endfunction
|
187 |
|
|
|
188 |
|
|
endpackage
|
189 |
|
|
|
190 |
|
|
// =cut
|
191 |
|
|
|
192 |
|
|
`endif
|
193 |
|
|
|