|
|
- --
- -- 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 ;
|