// ========== Copyright Header Begin ========================================== // // OpenSPARC T2 Processor File: FNXPCIEXactorAssertCovDatabase.vr // 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 ============================================ #include "DenaliPCIE.vri" // FNXPCIEXactor library #include "FNXPCIEXactorDefines.vri" // report library #include "cReport.vrh" #include "FNXPCIEXactorReportMacros.vri" class FNXPCIEXactorAssertCovDatabase { // Base Class and Method Names For QR Macros local string ClassName = "FNXPCIEXactorAssertCovDatabase"; local string MethodName = null; local ReportClass MyReport; // Assertion Coverage Database Array local integer AssertCov[*]; local string XactorName; // constructor task new( ReportClass _Report, string _XactorName ); // public methods task Reset(); task Add( denaliPcieErrorTypeT covPt ); function bit Covered( denaliPcieErrorTypeT covPt ); function integer Count( denaliPcieErrorTypeT covPt ); function string GetStr(); task Display( ReportType rptType ); } task FNXPCIEXactorAssertCovDatabase::new( ReportClass _Report, string _XactorName ) { string MethodName = "new"; MyReport = _Report; XactorName = _XactorName; Reset(); } task FNXPCIEXactorAssertCovDatabase::Reset() { string MethodName = "Reset"; integer i; // Allocate Assertion Coverage Database Dynamic Array and Init to Zero AssertCov = new[PCIE_MAX_ERROR_ID]; for (i=0; i < PCIE_MAX_ERROR_ID; i++) AssertCov[i] = 0; } task FNXPCIEXactorAssertCovDatabase::Add( denaliPcieErrorTypeT covPt ) { string MethodName = "Add"; AssertCov[covPt]++; } function bit FNXPCIEXactorAssertCovDatabase::Covered( denaliPcieErrorTypeT covPt ) { string MethodName = "Covered"; if (AssertCov[covPt] > 0) Covered = 1; else Covered = 0; } function integer FNXPCIEXactorAssertCovDatabase::Count( denaliPcieErrorTypeT covPt ) { string MethodName = "Count"; Count = AssertCov[covPt]; } function string FNXPCIEXactorAssertCovDatabase::GetStr() { string MethodName = "GetStr"; string tmp, coveredStr, covPtStr, whiteSpaceStr; denaliPcieErrorTypeT covPt; integer i, j, numWhiteSpaces, maxStrLen; // Get Maximum Length of an Assertion Coverage Point's String for Display Formatting Purposes maxStrLen = 0; for (i=0; i < PCIE_MAX_ERROR_ID; i++) { cast_assign( covPt, i ); sprintf( covPtStr, "%s", covPt ); if (covPtStr.len() > maxStrLen) maxStrLen = covPtStr.len(); } // Add Assertion Coverage Table Header to GetStr sprintf( GetStr, "\n" ); sprintf( tmp, "---------------------------------------------------------------------------\n" ); GetStr = { GetStr, tmp }; sprintf( tmp, " %s Assertion Coverage Database Contents\n", XactorName ); GetStr = { GetStr, tmp }; sprintf( tmp, "---------------------------------------------------------------------------\n" ); GetStr = { GetStr, tmp }; // Add Every Assertion Coverage Point to GetStr for (i=0; i < PCIE_MAX_ERROR_ID; i++) { cast_assign( covPt, i ); if (Covered(covPt)) coveredStr = " Covered "; else coveredStr = "Not Covered"; sprintf( covPtStr, "%s", covPt ); numWhiteSpaces = maxStrLen - covPtStr.len(); whiteSpaceStr = ""; for (j=0; j < numWhiteSpaces; j++) whiteSpaceStr = { whiteSpaceStr, " " }; sprintf( tmp, " %s%s | %s | %0d\n", covPtStr, whiteSpaceStr, coveredStr, Count(covPt) ); GetStr = { GetStr, tmp }; } } task FNXPCIEXactorAssertCovDatabase::Display( ReportType rptType ) { string MethodName = "Display"; PCIEX_QR_Type( rptType, GetStr() ); }