3 SC Process
3 SC Process
Rolf Drechsler
Daniel Groe
University of Bremen
Process Basics
l
l
l
Types of processes
Method : SC_METHOD
Thread : SC_THREAD
Clocked thread : SC_CTHREAD
SC_METHOD
l
l
l
l
SC_METHOD - Example
frame
rcv
// rcv.h
#include frame.h
SC_MODULE(rcv) {
sc_in<frame_type> xin;
sc_out<int> id;
id
// rcv.cc
void rcv::extract_id()
{
frame_type frame;
frame = xin;
void extract_id();
};
SC_CTOR(rcv) {
SC_METHOD(extract_id);
sensitive<<xin;
}
if(frame.type==1)
id = frame.ida;
else
id = frame.idb;
SC_THREAD
l
l
l
l
Road
Sensor
NSred;
NSyellow;
NSgreen;
EWred;
EWyellow;
EWgreen;
void control_lights();
SC_CTOR(traff){
SC_THREAD(control_lights);
sensitive<<roadsensor;
sensitive_pos<<clock;
}
};
Road
Sensor
Road
Sensor
SC_CTHREAD
l
l
l
Processes, Type of
Process Type
SC_METHOD
SC_THREAD
SC_CTHREAD
Exec. Trigger
Signal Events
Signal Events
Clock Edge
Exec.
Suspend
NO
YES
YES
Infinite Loop
NO
YES
YES
Suspend /
Resume by
N.A.
wait()
wait()
wait_until(bool-sign.-cond.)
Construct &
Sensitize
Method
SC_METHOD(p);
sensitive(signals);
sensitive_pos(signals);
sensitive_neg(signals
);
SC_THREAD(p);
sensitive(signals);
sensitive_pos(signals);
sensitive_neg(signals);
SC_CTHREAD(p, clock.pos());
SC_CTHREAD(p, clock.neg());
Watching (1)
l
l
}
l
Watching (2)
l
Watching signal
Process method