Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / env / common / vera / include / errorCountTasks.if.vrh
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T2 Processor File: errorCountTasks.if.vrh
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
//
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
//
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// have any questions.
//
// ========== Copyright Header End ============================================
#ifndef INC_ERRORCOUNTTASKS_IF_VRH
#define INC_ERRORCOUNTTASKS_IF_VRH
interface errorCount_if {
// input clk CLOCK hdl_node "tb_top.clk";
input errorCount NSAMPLE #-3 hdl_node "tb_top.error_count";
input warnCount NSAMPLE #-3 hdl_node "tb_top.warning_count";
}
//////////////////////////////////////////////////////////////////
// See errorCountTasks.v, dispmonDefines.vh,
// std_display_class.vr & .vri, errorCountTasks.if.vrh
//////////////////////////////////////////////////////////////////
// you can do something like this to watch for excessive counts in Vera
// task CLASSNAME::wait4termination () {
//
// integer myErrors = 0, myWarns = 0;
//
// fork // too many errors
// {
// integer previousCountE = 0;
// integer previousCountW = 0;
// while (1) {
// @(errorCount_if.errorCount or errorCount_if.warnCount); // watch verilog errors
// myErrors += (errorCount_if.errorCount - previousCountE);
// previousCountE = errorCount_if.errorCount;
// myWarns += (errorCount_if.warnCount - previousCountW);
// previousCountW = errorCount_if.warnCount;
// }
// }
// {
// while (1) {
// wait_var(gDbg.errorCount); // watch vera errors
// myErrors++;
// }
// }
// {
// while (1) {
// wait_var(gDbg.warnCount); // watch vera warns
// myWarns++;
// }
// }
// {
// while (myErrors < gDbg.maxerror && myWarns < gDbg.maxwarning) wait_var(myErrors,myWarns);
// // We now have too many errors, do whatever...
// PR_ALWAYS (CLASSNAMEQ, ALWAYS,
// sprintf("Diag Ending with ERRORs. Errors=%0d, Warns=%0d (Vera)",myErrors,myWarns));
//
// repeat (gDbg.wait_cycle_to_kill) @(posedge CLOCK);
// exit(1);
// }
//
// // too many clocks
// {
// while (1) {
// // Please to not check every clock!
// // delay is measurably better than repeat (x) @(posedge CLOCK).
// // I asked Synopsys to measure it, really.
// delay(gClkPeriod*500);
// if (get_cycle() >= gParam.maxCycle) {
// PR_ALWAYS (CLASSNAMEQ, ALWAYS,
// sprintf("Max cycles of %0d exceeded! Exiting with ERRORs...",gParam.maxCycle));
// }
// }
// }
// join none
// }
#endif