//----------------------------------------------------- // This is my second Systemc Example // Design Name : first_counter // File Name : first_counter.cpp // Function : This is a 4 bit up-counter with // Synchronous active high reset and // with active high enable signal //----------------------------------------------------- #include "systemc.h" SC_MODULE (first_counter) { sc_in_clk clock ; // Clock input of the design sc_in reset ; // active high, synchronous Reset input sc_in enable; // Active high enable signal for counter sc_out > counter_out; // 4 bit vector output of the counter //------------Local Variables Here--------------------- sc_uint<4> count; //------------Code Starts Here------------------------- // Below function implements actual counter logic void incr_count () { while (true) { wait(); // If enable is active, then we increment the counter if (enable.read() == 1) { count = count + 1; counter_out.write(count); } W_BEGIN watching(reset.delayed()); W_DO wait(); if (enable.read() == 1) { count = count + 1; counter_out.write(count); } W_ESCAPE if (reset.read() == 1) { count = 0; counter_out.write(count); cout<<"@" << sc_time_stamp() << " :: Local Watching reset is activated"<