quick.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

   

space.gif

   

space.gif

  ../images/main/bulllet_4dots_orange.gif Array Of Ports/Signals

SystemC allows to declare Array of ports and signals. This is very useful when we need to create array of similar ports and signals. Below examples shows how to use of array of ports and signals.

   

space.gif

   

space.gif

  ../images/main/bullet_star_pink.gif Example : Array Of Ports/Signals
   

space.gif


  1 #include <systemc.h>
  2 
  3 SC_MODULE(ports_arrays) {
  4   sc_in<sc_uint<2> > a[4];
  5   sc_in<sc_uint<2> > b[4];
  6   sc_out<sc_uint<3> > o[4];
  7 
  8   void body () {
  9     int i;
 10     for (i=0; i < 4; i ++) { 
 11       o[i].write(a[i].read() + b[i].read());
 12     }
 13   }
 14 
 15   SC_CTOR(ports_arrays) {
 16     int j;
 17     SC_METHOD(body);
 18       for (j=0; j<4; j++) {
 19         sensitive << a[j] << b[j];
 20       }
 21   }
 22 };
 23 
 24 // Testbench to generate test vectors
 25 int sc_main (int argc, char* argv[]) {
 26   sc_signal<sc_uint<2> > a[4];
 27   sc_signal<sc_uint<2> > b[4];
 28   sc_signal<sc_uint<3> > o[4];
 29 
 30   int z;
 31 
 32   ports_arrays prt_ar("PORT_ARRAY");
 33     for (z=0; z<4; z++) {
 34       prt_ar.a[z](a[z]);
 35       prt_ar.b[z](b[z]);
 36       prt_ar.o[z](o[z]);
 37     }
 38   sc_start(0);
 39   // Open VCD file
 40   sc_trace_file *wf = sc_create_vcd_trace_file("ports_arrays");
 41   ((vcd_trace_file*)wf)->sc_set_vcd_time_unit(-5);
 42     for (z=0; z<4; z++) {
 43       char str[3];
 44       sprintf(str, "(%0d)",z);
 45       sc_trace(wf,a[z],"a" + string(str));
 46       sc_trace(wf,b[z],"b" + string(str));
 47       sc_trace(wf,o[z],"o" + string(str));
 48     }
 49   // Start the testing here
 50   sc_start(1);
 51   for (z=0; z<4; z++) {
 52     a[z] = rand();
 53     b[z] = rand();
 54     sc_start(1);
 55     cout << "@" << sc_time_stamp() <<" a : " << a[z] 
 56       << " ,b : " << b[z] << " ,o : " << o[z] << endl;
 57   }
 58   sc_start(2);
 59 
 60   sc_close_vcd_trace_file(wf);
 61   return 0;// Terminate simulation
 62 }
You could download file ports_arrays.cpp here
   

space.gif

  ../images/main/bullet_star_pink.gif Simulation Output : Array Of Ports/Signals
   

space.gif

              SystemC 2.0.1 --- Oct  6 2006 19:17:37
         Copyright (c) 1996-2002 by all Contributors
                     ALL RIGHTS RESERVED
 WARNING: Default time step is used for VCD tracing.
 @2 ns a : 3 ,b : 2 ,o : 5
 @3 ns a : 1 ,b : 3 ,o : 4
 @4 ns a : 1 ,b : 3 ,o : 4
 @5 ns a : 2 ,b : 0 ,o : 2
   

space.gif

   

space.gif

   

space.gif

   

space.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

  

Copyright © 1998-2014

Deepak Kumar Tala - All rights reserved

Do you have any Comment? mail me at:deepak@asic-world.com