diff options
Diffstat (limited to 'src/systemc/tests/systemc/misc/examples/a2901/a2901_test.cpp')
-rw-r--r-- | src/systemc/tests/systemc/misc/examples/a2901/a2901_test.cpp | 472 |
1 files changed, 472 insertions, 0 deletions
diff --git a/src/systemc/tests/systemc/misc/examples/a2901/a2901_test.cpp b/src/systemc/tests/systemc/misc/examples/a2901/a2901_test.cpp new file mode 100644 index 000000000..a2a66287f --- /dev/null +++ b/src/systemc/tests/systemc/misc/examples/a2901/a2901_test.cpp @@ -0,0 +1,472 @@ +/***************************************************************************** + + 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; + } +} |