----------------------------------------------------------------------
-- File name:       SEMAREGV.txt
--
-- Description:     Test vectors for the SEMAREGT test bench.
--
-- File History:    Project complete:       WD Peterson - 29 MAY 2002
--                  LGPL licensing:         WD Peterson - 17 JAN 2004
--
-- License:         Copyright (C) 2002 Silicore Corporation
--
--                  This library is free software; you can
--                  redistribute it and/or modify it under the terms
--                  of the GNU Lesser General Public License version
--                  2.1 as published by the Free Software Foundation.
--
--                  This library 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
--                  Lesser General Public License for more details.
--
--                  You should have received a copy of the GNU Lesser
--                  General Public License along with this library;
--                  if not, write to the Free Software Foundation,
--                  Inc., 59 Temple Place, Suite 330, Boston, MA
--                  02111-1307  USA
--
--                  US Government rights: this software was produced
--                  for the US Government under Contract No.
--                  DAAE30-95-C-0009 and is subject to the Rights in
--                  Noncommercial Computer Software and Noncommercial
--                  Computer Software Documentation Clause (DFARS)
--                  252.227-7014 (JUN 1995).  The Licensee agrees that
--                  the US Government will not be charged any license
--                  fee and/or royalties related to this software.
--
-- Support:         Support for this software in the form of
--                  maintenance, system integration, consulting and
--                  training is available for a fee from Silicore
--                  Corporation.  For more information please refer
--                  to the Silicore web site at: www.silicore.net.
----------------------------------------------------------------------

----------------------------------------------------------------------------------------------
--                                   TEST VECTORS
----------------------------------------------------------------------------------------------
--                                   A  A
--         A    A A       B    B B   B  B  A     A    B     B
--         D    S S A     D    S S B R  C  A     D    A     D
--         A    E T W     A    E T W S  L  C     A    C     A
--         T    L B E     T    L B E T  K  K     T    K     T
--         -    - - -     -    - - - -  -  -     -    -     -
-- NBR     I    I I I     I    I I I I  I  O     O    O     O       NOTES
----------------------------------------------------------------------------------------------

-- Reset both WISHBONE SLAVE interfaces and verify the initial conditions.

: 0000 00000000 0 0 0 00000000 0 0 0 1 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0001 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'A' side obtains semaphore on first read.

: 0100 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000000 0 XXXXXXXX --
: 0101 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000000 0 XXXXXXXX --
: 0102 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'A' side does not obtain semaphore on second or third reads.

: 0200 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0201 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0202 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0203 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0204 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0205 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'A' side attempts to release the semaphore by writing D00 = '1'.
-- This has no effect, and does not release the buffer.

: 0300 00000001 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0301 00000001 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0302 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0303 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0304 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000001 0 XXXXXXXX --
: 0305 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'A' side attempts to release by writing D00 = '0'.  Verify that
-- this operation is successful, and then release it again.

: 0400 00000000 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0401 00000000 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0402 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0403 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000000 0 XXXXXXXX --
: 0404 00000000 1 1 0 00000000 0 0 0 0 CLK 1 00000000 0 XXXXXXXX --
: 0405 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0406 00000000 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0407 00000000 1 1 1 00000000 0 0 0 0 CLK 1 XXXXXXXX 0 XXXXXXXX --
: 0408 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'B' side obtains semaphore on first read.

: 0500 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000000 --
: 0501 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000000 --
: 0502 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'B' side does not obtain semaphore on second or third reads.

: 0600 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0600 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0602 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0603 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0604 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0605 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'B' side attempts to release the semaphore by writing D00 = '1'.
-- This has no effect, and does not release the buffer.

: 0700 00000000 0 0 0 00000001 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0701 00000000 0 0 0 00000001 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0702 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0703 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0704 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000001 --
: 0705 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
   

-- 'B' side attempts to release by writing D00 = '0'.  Verify that
-- this operation is successful, and then release it again.

: 0800 00000000 0 0 0 00000000 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0801 00000000 0 0 0 00000000 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0802 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0803 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000000 --
: 0804 00000000 0 0 0 00000000 1 1 0 0 CLK 0 XXXXXXXX 1 00000000 --
: 0805 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
: 0806 00000000 0 0 0 00000000 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0807 00000000 0 0 0 00000000 1 1 1 0 CLK 0 XXXXXXXX 1 XXXXXXXX --
: 0808 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --


-- 'A' & 'B' side both attempt to obtain the semaphore.  Verify
-- that the 'A' sideside obtains the semaphore.

: 0900 00000000 1 1 0 00000000 1 1 0 0 CLK 1 00000000 1 00000001 --
: 0901 00000000 1 1 0 00000000 1 1 0 0 CLK 1 00000000 1 00000001 --
: 0902 00000000 0 0 0 00000000 0 0 0 0 CLK 0 XXXXXXXX 0 XXXXXXXX --
