Browse Source

Switched to OSVVM 2014.01

pull/1/head
T. Meissner 9 years ago
parent
commit
41f76efd9b
6 changed files with 6152 additions and 1107 deletions
  1. +4237
    -0
      test/OSVVM/CoveragePkg.vhd
  2. +204
    -0
      test/OSVVM/MessagePkg.vhd
  3. +6
    -4
      test/OSVVM/RandomBasePkg.vhd
  4. +1646
    -0
      test/OSVVM/RandomPkg.vhd
  5. +59
    -25
      test/OSVVM/SortListPkg_int.vhd
  6. +0
    -1078
      test/osvvm_2.1/RandomPkg.vhd

+ 4237
- 0
test/OSVVM/CoveragePkg.vhd
File diff suppressed because it is too large
View File


+ 204
- 0
test/OSVVM/MessagePkg.vhd View File

@ -0,0 +1,204 @@
--
-- File Name: MessagePkg.vhd
-- Design Unit Name: MessagePkg
-- Revision: STANDARD VERSION, revision 2014.01
--
-- Maintainer: Jim Lewis email: jim@synthworks.com
-- Contributor(s):
-- Jim Lewis SynthWorks
--
--
-- Package Defines
-- Data structure for name and message handling.
--
-- Developed for:
-- SynthWorks Design Inc.
-- VHDL Training Classes
-- 11898 SW 128th Ave. Tigard, Or 97223
-- http://www.SynthWorks.com
--
-- Latest standard version available at:
-- http://www.SynthWorks.com/downloads
--
-- Revision History:
-- Date Version Description
-- 06/2010: 0.1 Initial revision
--
--
-- Copyright (c) 2010 - 2013 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 ieee.std_logic_1164.all ;
use ieee.numeric_std.all ;
use ieee.math_real.all ;
use std.textio.all ;
package MessagePkg is
type MessagePType is protected
procedure SetName (NameIn : String) ;
impure function GetName return string ;
impure function IsSetName return boolean ;
procedure SetMessage (MessageIn : String) ;
impure function GetMessage (ItemNumber : integer) return string ;
impure function GetMessageCount return integer ;
procedure DeallocateName ; -- clear name
procedure DeallocateMessage ; -- clear message
procedure Deallocate ; -- clear all
end protected MessagePType ;
end package MessagePkg ;
package body MessagePkg is
-- Local Data Structure Types
type LineArrayType is array (natural range <>) of line ;
type LineArrayPtrType is access LineArrayType ;
------------------------------------------------------------
-- Local. Get first word from a string
function GetWord (Message : string) return string is
------------------------------------------------------------
alias aMessage : string( 1 to Message'length) is Message ;
begin
for i in aMessage'range loop
if aMessage(i) = ' ' or aMessage(i) = HT then
return aMessage(1 to i-1) ;
end if ;
end loop ;
return aMessage ;
end function GetWord ;
type MessagePType is protected body
variable NamePtr : line := new string'("") ;
variable MessageCount : integer := 0 ;
constant INITIAL_ITEM_COUNT : integer := 25 ;
variable MaxMessageCount : integer := INITIAL_ITEM_COUNT ;
variable MessagePtr : LineArrayPtrType := new LineArrayType(1 to INITIAL_ITEM_COUNT) ;
------------------------------------------------------------
procedure SetName (NameIn : String) is
------------------------------------------------------------
begin
deallocate(NamePtr) ;
NamePtr := new string'(NameIn) ;
end procedure SetName ;
------------------------------------------------------------
impure function GetName return string is
------------------------------------------------------------
begin
if NamePtr.all /= "" or MessagePtr(1) = NULL then
return NamePtr.all ;
else
return GetWord( MessagePtr(1).all ) ;
end if ;
end function GetName ;
------------------------------------------------------------
impure function IsSetName return boolean is
------------------------------------------------------------
begin
return NamePtr.all /= "" ;
end function IsSetName ;
------------------------------------------------------------
procedure SetMessage (MessageIn : String) is
------------------------------------------------------------
variable NamePtr : line ;
variable OldMaxMessageCount : integer ;
variable OldMessagePtr : LineArrayPtrType ;
begin
MessageCount := MessageCount + 1 ;
if MessageCount > MaxMessageCount then
OldMaxMessageCount := MaxMessageCount ;
MaxMessageCount := OldMaxMessageCount * 2 ;
OldMessagePtr := MessagePtr ;
MessagePtr := new LineArrayType(1 to MaxMessageCount) ;
for i in 1 to OldMaxMessageCount loop
MessagePtr(i) := OldMessagePtr(i) ;
end loop ;
Deallocate( OldMessagePtr ) ;
end if ;
MessagePtr(MessageCount) := new string'(MessageIn) ;
end procedure SetMessage ;
------------------------------------------------------------
impure function GetMessage (ItemNumber : integer) return string is
------------------------------------------------------------
begin
if MessageCount > 0 then
if ItemNumber >= 1 and ItemNumber <= MessageCount then
return MessagePtr(ItemNumber).all ;
else
report LF & "%% MessagePkg:MessagePType.GetMessage input value out of range" severity failure ;
return "" ; -- error if this happens
end if ;
else
return NamePtr.all ;
end if ;
end function GetMessage ;
------------------------------------------------------------
impure function GetMessageCount return integer is
------------------------------------------------------------
begin
return MessageCount ;
end function GetMessageCount ;
------------------------------------------------------------
procedure DeallocateName is -- clear name
------------------------------------------------------------
begin
deallocate(NamePtr) ;
NamePtr := new string'("") ;
end procedure DeallocateName ;
------------------------------------------------------------
procedure DeallocateMessage is -- clear message
------------------------------------------------------------
variable CurPtr : LineArrayPtrType ;
begin
for i in 1 to MessageCount loop
deallocate( MessagePtr(i) ) ;
end loop ;
MessageCount := 0 ;
-- Do NOT Do this: deallocate( MessagePtr ) ;
end procedure DeallocateMessage ;
------------------------------------------------------------
procedure Deallocate is -- clear all
------------------------------------------------------------
begin
DeallocateName ;
DeallocateMessage ;
end procedure Deallocate ;
end protected body MessagePType ;
end package body MessagePkg ;

test/osvvm_2.1/RandomBasePkg.vhd → test/OSVVM/RandomBasePkg.vhd View File


+ 1646
- 0
test/OSVVM/RandomPkg.vhd
File diff suppressed because it is too large
View File


test/osvvm_2.1/SortListPkg_int.vhd → test/OSVVM/SortListPkg_int.vhd View File


+ 0
- 1078
test/osvvm_2.1/RandomPkg.vhd
File diff suppressed because it is too large
View File


Loading…
Cancel
Save