/***************************************************************************** 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; } }