blob: a2a66287f724090fb3f2fe213dd7a5d86c5488cf [file] [log] [blame]
/*****************************************************************************
Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
more contributor license agreements. See the NOTICE file distributed
with this work for additional information regarding copyright ownership.
Accellera licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the License for the specific language governing
permissions and limitations under the License.
*****************************************************************************/
/*****************************************************************************
a2901_test.cpp --
Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
*****************************************************************************/
/*****************************************************************************
MODIFICATION LOG - modifiers, enter your name, affiliation, date and
changes you are making here.
Name, Affiliation, Date:
Description of Modification:
*****************************************************************************/
#include "a2901_test.h"
void
a2901_test::entry()
{
switch (vec_cnt++) {
case 0:
I. write(0x7);
D. write( 0);
C0. write( 0);
OEbar.write( 0);
break;
case 1:
I. write(0x46);
D. write( 0);
C0. write( 0);
OEbar.write( 0);
break;
case 2:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000 (%0d)\n", (int)Y.read());
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1 (%0d)\n", (int)F30.read());
I.write(0x7);
D.write(0x0);
C0.write(0x0);
OEbar.write(0x0);
break;
case 3:
I.write(0x46);
D.write(0x0);
C0.write(0x1);
OEbar.write(0x0);
break;
case 4:
if (Y.read() != 0x1) fprintf(stderr,"Y != 4'b0001\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I.write(0x7);
D.write(0xf); // N("4'b1111")
C0.write(0x0);
OEbar.write(0x0);
break;
case 5:
I.write(0x46);
D.write(0x0);
C0.write(0x0);
OEbar.write(0x0);
break;
case 6:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I.write(0x7);
D.write(0xf);
C0.write(0x0);
OEbar.write(0x0);
break;
case 7:
I.write(0x46);
D.write(0x0);
C0.write(0x1);
OEbar.write(0x0);
break;
case 8:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
I.write(0x7);
D.write(0xf);
C0.write(0x0);
OEbar.write(0x0);
break;
case 9:
I.write(0x46);
D.write(0xf);
C0.write(0x0);
OEbar.write(0x0);
break;
case 10:
if (Y.read() != 0xe) fprintf(stderr,"Y != 4'b1110\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x0) fprintf(stderr,"Gbar != 1'b0\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I.write(0x7);
D.write(0xf);
C0.write(0x0);
OEbar.write(0x0);
break;
case 11:
I.write(0x46);
D.write(0xf);
C0.write(0x1);
OEbar.write(0x0);
break;
case 12:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x0) fprintf(stderr,"Gbar != 1'b0\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 13:
I .write( 0x46);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 14:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 15:
I .write( 0x46);
D .write( 0xf);
C0 .write( 0x1);
OEbar .write( 0x0);
break;
case 16:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
I .write( 0x7);
D .write( 0x1);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 17:
I .write( 0x6);
D .write( 0x1);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 18:
if (Y.read() != 0x2) fprintf(stderr,"Y != 4'b0010\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x2); // N("4'b0010")
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 19:
I .write( 0x46);
D .write( 0x2);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 20:
if (Y.read() != 0x4) fprintf(stderr,"Y != 4'b0100\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x4);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 21:
I .write( 0x46);
D .write( 0x4);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 22:
if (Y.read() != 0x8) fprintf(stderr,"Y != 4'b1000\n");
if (C4.read()!= 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x1) fprintf(stderr,"OVR != 1'b1\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x8); // N("4'b1000")
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 23:
I .write( 0x46);
D .write( 0x8);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 24:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x0) fprintf(stderr,"Gbar != 1'b0\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x1) fprintf(stderr,"OVR != 1'b1\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
// ******** SUBTRACTION S - R ********
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 25:
I .write( 0x4e); // N("9'b001001110")
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 26:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 27:
I .write( 0x4e);
D .write( 0x0);
C0 .write( 0x1);
OEbar .write( 0x0);
break;
case 28:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 29:
I .write( 0x4e);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 30:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
I .write( 0x7);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 31:
I .write( 0x4e);
D .write( 0xf);
C0 .write( 0x1);
OEbar .write( 0x0);
break;
case 32:
if (Y.read() != 0x1) fprintf(stderr,"Y != 4'b0001\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x1) fprintf(stderr,"Pbar != 1'b1\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 33:
I .write( 0x4e);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 34:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x0) fprintf(stderr,"C4 != 1'b0\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 35:
I .write( 0x4e);
D .write( 0xf);
C0 .write( 0x1);
OEbar .write( 0x0);
break;
case 36:
if (Y.read() != 0x0) fprintf(stderr,"Y != 4'b0000\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x1) fprintf(stderr,"Gbar != 1'b1\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x0) fprintf(stderr,"F3 != 1'b0\n");
if (F30.read() != 0x1) fprintf(stderr,"F30 != 1'b1\n");
I .write( 0x7);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 37:
I .write( 0x4e);
D .write( 0x0);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 38:
if (Y.read() != 0xe) fprintf(stderr,"Y != 4'b1110\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x0) fprintf(stderr,"Gbar != 1'b0\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0xf);
C0 .write( 0x0);
OEbar .write( 0x0);
break;
case 39:
I .write( 0x4e);
D .write( 0x0);
C0 .write( 0x1);
OEbar .write( 0x0);
break;
case 40:
if (Y.read() != 0xf) fprintf(stderr,"Y != 4'b1111\n");
if (C4.read() != 0x1) fprintf(stderr,"C4 != 1'b1\n");
if (Gbar.read() != 0x0) fprintf(stderr,"Gbar != 1'b0\n");
if (Pbar.read() != 0x0) fprintf(stderr,"Pbar != 1'b0\n");
if (OVR.read() != 0x0) fprintf(stderr,"OVR != 1'b0\n");
if (F3.read() != 0x1) fprintf(stderr,"F3 != 1'b1\n");
if (F30.read() != 0x0) fprintf(stderr,"F30 != 1'b0\n");
I .write( 0x7);
D .write( 0x0); // 0x1;
C0 .write( 0x0);
OEbar .write( 0x0);
if (++loop < 100000)
vec_cnt = 0;
else {
printf ("loops = %d\n", loop);
sc_stop();
}
break;
}
}