|
--
|
|
-- File Name: OsvvmGlobalPkg.vhd
|
|
-- Design Unit Name: OsvvmGlobalPkg
|
|
-- Revision: STANDARD VERSION, revision 2015.01
|
|
--
|
|
-- Maintainer: Jim Lewis email: jim@synthworks.com
|
|
-- Contributor(s):
|
|
-- Jim Lewis jim@synthworks.com
|
|
--
|
|
--
|
|
-- Description:
|
|
-- Global Settings for OSVVM packages
|
|
--
|
|
--
|
|
-- Developed for:
|
|
-- SynthWorks Design Inc.
|
|
-- VHDL Training Classes
|
|
-- 11898 SW 128th Ave. Tigard, Or 97223
|
|
-- http://www.SynthWorks.com
|
|
--
|
|
-- Revision History:
|
|
-- Date Version Description
|
|
-- 01/2014: 2015.01 Initial revision
|
|
--
|
|
--
|
|
-- Copyright (c) 2015 by SynthWorks Design Inc. All rights reserved.
|
|
--
|
|
-- Verbatim copies of this source file may be used and
|
|
-- distributed without restriction.
|
|
--
|
|
-- This source file is free software; you can redistribute it
|
|
-- and/or modify it under the terms of the ARTISTIC License
|
|
-- as published by The Perl Foundation; either version 2.0 of
|
|
-- the License, or (at your option) any later version.
|
|
--
|
|
-- This source 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 Artistic License for details.
|
|
--
|
|
-- You should have received a copy of the license with this source.
|
|
-- If not download it from,
|
|
-- http://www.perlfoundation.org/artistic_license_2_0
|
|
--
|
|
|
|
library ieee ;
|
|
use std.textio.all ;
|
|
|
|
use work.NamePkg.all ;
|
|
|
|
package OsvvmGlobalPkg is
|
|
-- FILE IO Global File Identifier -- Open using AlertLogPkg.TranscriptOpen
|
|
-- file TranscriptFile : text ;
|
|
|
|
-- Shared Options Type used in OSVVM
|
|
type OsvvmOptionsType is (OPT_INIT_PARM_DETECT, OPT_USE_DEFAULT, DISABLED, FALSE, ENABLED, TRUE) ;
|
|
function IsEnabled (A : OsvvmOptionsType) return boolean ; -- Requires that TRUE is last and ENABLED is 2nd to last
|
|
function to_OsvvmOptionsType (A : boolean) return OsvvmOptionsType ;
|
|
|
|
-- Defaults for String values
|
|
constant OSVVM_DEFAULT_ALERT_PREFIX : string := "%% Alert" ;
|
|
constant OSVVM_DEFAULT_LOG_PREFIX : string := "%% Log " ;
|
|
constant OSVVM_DEFAULT_WRITE_PREFIX : string := "%% " ;
|
|
constant OSVVM_DEFAULT_DONE_NAME : string := "DONE" ;
|
|
constant OSVVM_DEFAULT_PASS_NAME : string := "PASSED" ;
|
|
constant OSVVM_DEFAULT_FAIL_NAME : string := "FAILED" ;
|
|
constant OSVVM_STRING_INIT_PARM_DETECT : string := NUL & NUL & NUL ;
|
|
constant OSVVM_STRING_USE_DEFAULT : string := NUL & "" ;
|
|
|
|
-- Coverage Settings
|
|
constant OSVVM_DEFAULT_WRITE_PASS_FAIL : OsvvmOptionsType := FALSE ;
|
|
constant OSVVM_DEFAULT_WRITE_BIN_INFO : OsvvmOptionsType := TRUE ;
|
|
constant OSVVM_DEFAULT_WRITE_COUNT : OsvvmOptionsType := TRUE ;
|
|
constant OSVVM_DEFAULT_WRITE_ANY_ILLEGAL : OsvvmOptionsType := FALSE ;
|
|
|
|
------------------------------------------------------------
|
|
procedure SetOsvvmGlobalOptions (
|
|
------------------------------------------------------------
|
|
WritePassFail : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteBinInfo : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteCount : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteAnyIllegal : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WritePrefix : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
DoneName : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
PassName : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
FailName : string := OSVVM_STRING_INIT_PARM_DETECT
|
|
) ;
|
|
|
|
------------------------------------------------------------
|
|
-- Accessor Functions
|
|
function ResolveOsvvmOption(A, B, C : OsvvmOptionsType) return OsvvmOptionsType ;
|
|
function ResolveOsvvmOption(A, B, C, D : OsvvmOptionsType) return OsvvmOptionsType ;
|
|
function IsOsvvmStringSet (A : string) return boolean ;
|
|
function ResolveOsvvmOption(A, B : string) return string ;
|
|
function ResolveOsvvmOption(A, B, C : string) return string ;
|
|
function ResolveOsvvmOption(A, B, C, D : string) return string ;
|
|
|
|
impure function ResolveOsvvmWritePrefix(A : String) return string ;
|
|
impure function ResolveOsvvmWritePrefix(A, B : String) return string ;
|
|
impure function ResolveOsvvmDoneName(A : String) return string ;
|
|
impure function ResolveOsvvmDoneName(A, B : String) return string ;
|
|
impure function ResolveOsvvmPassName(A : String) return string ;
|
|
impure function ResolveOsvvmPassName(A, B : String) return string ;
|
|
impure function ResolveOsvvmFailName(A : String) return string ;
|
|
impure function ResolveOsvvmFailName(A, B : String) return string ;
|
|
|
|
impure function ResolveCovWritePassFail(A, B : OsvvmOptionsType) return OsvvmOptionsType ; -- Cov
|
|
impure function ResolveCovWriteBinInfo(A, B : OsvvmOptionsType) return OsvvmOptionsType ; -- Cov
|
|
impure function ResolveCovWriteCount(A, B : OsvvmOptionsType) return OsvvmOptionsType ; -- Cov
|
|
impure function ResolveCovWriteAnyIllegal(A, B : OsvvmOptionsType) return OsvvmOptionsType ; -- Cov
|
|
|
|
procedure OsvvmDeallocate ;
|
|
|
|
type OptionsPType is protected
|
|
procedure Set (A: OsvvmOptionsType) ;
|
|
impure function get return OsvvmOptionsType ;
|
|
end protected OptionsPType ;
|
|
end OsvvmGlobalPkg ;
|
|
|
|
--- ///////////////////////////////////////////////////////////////////////////
|
|
--- ///////////////////////////////////////////////////////////////////////////
|
|
--- ///////////////////////////////////////////////////////////////////////////
|
|
|
|
package body OsvvmGlobalPkg is
|
|
type OptionsPType is protected body
|
|
variable GlobalVar : OsvvmOptionsType ;
|
|
procedure Set (A : OsvvmOptionsType) is
|
|
begin
|
|
GlobalVar := A ;
|
|
end procedure Set ;
|
|
impure function get return OsvvmOptionsType is
|
|
begin
|
|
return GlobalVar ;
|
|
end function get ;
|
|
end protected body OptionsPType ;
|
|
|
|
shared variable WritePrefixVar : NamePType ;
|
|
shared variable DoneNameVar : NamePType ;
|
|
shared variable PassNameVar : NamePType ;
|
|
shared variable FailNameVar : NamePType ;
|
|
shared variable WritePassFailVar : OptionsPType ; -- := FALSE ;
|
|
shared variable WriteBinInfoVar : OptionsPType ; -- := TRUE ;
|
|
shared variable WriteCountVar : OptionsPType ; -- := TRUE ;
|
|
shared variable WriteAnyIllegalVar : OptionsPType ; -- := FALSE ;
|
|
|
|
function IsEnabled (A : OsvvmOptionsType) return boolean is
|
|
begin
|
|
return A >= ENABLED ;
|
|
end function IsEnabled ;
|
|
|
|
function to_OsvvmOptionsType (A : boolean) return OsvvmOptionsType is
|
|
begin
|
|
if A then
|
|
return TRUE ;
|
|
else
|
|
return FALSE ;
|
|
end if ;
|
|
end function to_OsvvmOptionsType ;
|
|
|
|
|
|
------------------------------------------------------------
|
|
procedure SetOsvvmGlobalOptions (
|
|
------------------------------------------------------------
|
|
WritePassFail : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteBinInfo : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteCount : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WriteAnyIllegal : OsvvmOptionsType := OPT_INIT_PARM_DETECT ;
|
|
WritePrefix : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
DoneName : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
PassName : string := OSVVM_STRING_INIT_PARM_DETECT ;
|
|
FailName : string := OSVVM_STRING_INIT_PARM_DETECT
|
|
) is
|
|
begin
|
|
if WritePassFail /= OPT_INIT_PARM_DETECT then
|
|
WritePassFailVar.Set(WritePassFail) ;
|
|
end if ;
|
|
if WriteBinInfo /= OPT_INIT_PARM_DETECT then
|
|
WriteBinInfoVar.Set(WriteBinInfo) ;
|
|
end if ;
|
|
if WriteCount /= OPT_INIT_PARM_DETECT then
|
|
WriteCountVar.Set(WriteCount) ;
|
|
end if ;
|
|
if WriteAnyIllegal /= OPT_INIT_PARM_DETECT then
|
|
WriteAnyIllegalVar.Set(WriteAnyIllegal) ;
|
|
end if ;
|
|
if WritePrefix /= OSVVM_STRING_INIT_PARM_DETECT then
|
|
WritePrefixVar.Set(WritePrefix) ;
|
|
end if ;
|
|
if DoneName /= OSVVM_STRING_INIT_PARM_DETECT then
|
|
DoneNameVar.Set(DoneName) ;
|
|
end if ;
|
|
if PassName /= OSVVM_STRING_INIT_PARM_DETECT then
|
|
PassNameVar.Set(PassName) ;
|
|
end if ;
|
|
if FailName /= OSVVM_STRING_INIT_PARM_DETECT then
|
|
FailNameVar.Set(FailName) ;
|
|
end if ;
|
|
end procedure SetOsvvmGlobalOptions ;
|
|
|
|
------------------------------------------------------------
|
|
-- Accessor Functions
|
|
-- Local Function
|
|
function IsOsvvmOptionSet (A : OsvvmOptionsType) return boolean is
|
|
begin
|
|
return A > OPT_USE_DEFAULT ;
|
|
end function IsOsvvmOptionSet ;
|
|
|
|
function ResolveOsvvmOption(A, B, C : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
if IsOsvvmOptionSet(A) then
|
|
return A ;
|
|
elsif IsOsvvmOptionSet(B) then
|
|
return B ;
|
|
else
|
|
return C ;
|
|
end if ;
|
|
end function ResolveOsvvmOption ;
|
|
|
|
function ResolveOsvvmOption(A, B, C, D : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
if IsOsvvmOptionSet(A) then
|
|
return A ;
|
|
elsif IsOsvvmOptionSet(B) then
|
|
return B ;
|
|
elsif IsOsvvmOptionSet(C) then
|
|
return C ;
|
|
else
|
|
return D ;
|
|
end if ;
|
|
end function ResolveOsvvmOption ;
|
|
|
|
-- Local Function
|
|
function IsOsvvmStringSet (A : string) return boolean is
|
|
begin
|
|
if A'length = 0 then -- Null strings permitted
|
|
return TRUE ;
|
|
else
|
|
return A(A'left) /= NUL ;
|
|
end if;
|
|
end function IsOsvvmStringSet ;
|
|
|
|
function ResolveOsvvmOption(A, B : string) return string is
|
|
begin
|
|
if IsOsvvmStringSet(A) then
|
|
return A ;
|
|
else
|
|
return B ;
|
|
end if ;
|
|
end function ResolveOsvvmOption ;
|
|
|
|
function ResolveOsvvmOption(A, B, C : string) return string is
|
|
begin
|
|
if IsOsvvmStringSet(A) then
|
|
return A ;
|
|
elsif IsOsvvmStringSet(B) then
|
|
return B ;
|
|
else
|
|
return C ;
|
|
end if ;
|
|
end function ResolveOsvvmOption ;
|
|
|
|
function ResolveOsvvmOption(A, B, C, D : string) return string is
|
|
begin
|
|
if IsOsvvmStringSet(A) then
|
|
return A ;
|
|
elsif IsOsvvmStringSet(B) then
|
|
return B ;
|
|
elsif IsOsvvmStringSet(C) then
|
|
return C ;
|
|
else
|
|
return D ;
|
|
end if ;
|
|
end function ResolveOsvvmOption ;
|
|
|
|
|
|
impure function ResolveOsvvmWritePrefix(A : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, WritePrefixVar.GetOpt, OSVVM_DEFAULT_WRITE_PREFIX) ;
|
|
end function ResolveOsvvmWritePrefix ;
|
|
|
|
impure function ResolveOsvvmWritePrefix(A, B : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, WritePrefixVar.GetOpt, OSVVM_DEFAULT_WRITE_PREFIX) ;
|
|
end function ResolveOsvvmWritePrefix ;
|
|
|
|
impure function ResolveOsvvmDoneName(A : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, DoneNameVar.GetOpt, OSVVM_DEFAULT_DONE_NAME) ;
|
|
end function ResolveOsvvmDoneName ;
|
|
|
|
impure function ResolveOsvvmDoneName(A, B : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, DoneNameVar.GetOpt, OSVVM_DEFAULT_DONE_NAME) ;
|
|
end function ResolveOsvvmDoneName ;
|
|
|
|
impure function ResolveOsvvmPassName(A : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, PassNameVar.GetOpt, OSVVM_DEFAULT_PASS_NAME) ;
|
|
end function ResolveOsvvmPassName ;
|
|
|
|
impure function ResolveOsvvmPassName(A, B : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, PassNameVar.GetOpt, OSVVM_DEFAULT_PASS_NAME) ;
|
|
end function ResolveOsvvmPassName ;
|
|
|
|
impure function ResolveOsvvmFailName(A : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, FailNameVar.GetOpt, OSVVM_DEFAULT_FAIL_NAME) ;
|
|
end function ResolveOsvvmFailName ;
|
|
|
|
impure function ResolveOsvvmFailName(A, B : String) return string is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, FailNameVar.GetOpt, OSVVM_DEFAULT_FAIL_NAME) ;
|
|
end function ResolveOsvvmFailName ;
|
|
|
|
impure function ResolveCovWritePassFail(A, B : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, WritePassFailVar.Get, OSVVM_DEFAULT_WRITE_PASS_FAIL) ;
|
|
end function ResolveCovWritePassFail ; -- Cov
|
|
|
|
impure function ResolveCovWriteBinInfo(A, B : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, WriteBinInfoVar.Get, OSVVM_DEFAULT_WRITE_BIN_INFO) ;
|
|
end function ResolveCovWriteBinInfo ; -- Cov
|
|
|
|
impure function ResolveCovWriteCount(A, B : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, WriteCountVar.Get, OSVVM_DEFAULT_WRITE_COUNT) ;
|
|
end function ResolveCovWriteCount ; -- Cov
|
|
|
|
impure function ResolveCovWriteAnyIllegal(A, B : OsvvmOptionsType) return OsvvmOptionsType is
|
|
begin
|
|
return ResolveOsvvmOption(A, B, WriteAnyIllegalVar.Get, OSVVM_DEFAULT_WRITE_ANY_ILLEGAL) ;
|
|
end function ResolveCovWriteAnyIllegal ; -- Cov
|
|
|
|
procedure OsvvmDeallocate is
|
|
begin
|
|
-- Free up space used by NamePType within OsvvmGlobalPkg
|
|
WritePrefixVar.Deallocate ;
|
|
DoneNameVar.Deallocate ;
|
|
PassNameVar.Deallocate ;
|
|
FailNameVar.Deallocate ;
|
|
WritePassFailVar.Set(FALSE) ; -- := FALSE ;
|
|
WriteBinInfoVar.Set(TRUE ) ; -- := TRUE ;
|
|
WriteCountVar.Set(TRUE ) ; -- := TRUE ;
|
|
WriteAnyIllegalVar.Set(FALSE) ; -- := FALSE ;
|
|
|
|
end procedure OsvvmDeallocate ;
|
|
|
|
end package body OsvvmGlobalPkg ;
|