The naive way to add approximate timing annotations is to block the SystemC kernel until the required time has elapsed.
   sc_time clock_period  = sc_time(5, SC_NS);  // 200 MHz clock
   int read(A)
   { 
     int r = 0;
     if (A < 0 or A >= SIZE) error(....);
     else r = MEM[A];
     wait(clock_period * 3);   // <-- Directly model memory access time: three cycles say.
     return r;
   }
We can also measure resource utilisation in this way:
  write(A, D)
  {
     if (A > LIM) port1.write(A-LIM, D) else port0.write(A, D)
     opcount += 1;
     if (opcount == 100)
     {
        sc_time delta = sc_time_stamp() - last_measure_time;
        logging.log(100, delta);
        last_measure_time = sc_time_stamp();
        opcount = 0;
     }
  }
In the above, we assume logging.log knows how many bus cycles per unit time can be handled and hence can compute and record the utlisation.