behavior. A SystemC process (controller method) handles
the input/output protocol (behavior method) and calls the
requested operations, which are each implemented in its
own methods. These methods are overridden in the Scenario
Adapter class. Notice that, although scattered through a
class hierarchy and different methods, all operations (from
the handling of the component’s input/output protocol, to
the triggering of the aspects) executes inside the controller
SC_CTHREAD process. For the proposed scheme to work,
wait() statements are also used to schedule the operations
among the clock cycles, instead of defining explicit state
machines. If the latter is used, it would not be possible to
elegantly implement the structure described in figure 1, since
a state machine would require manual intervention to add the
operation defined by the scenario.
B. ADESD and classic AOP
Several previous works have already discussed aspectoriented
hardware design using SystemC and proposed
solutions based on classic AOP concepts using the well
known AspectC++ language. Indeed, AspectC++ provides
more powerful mechanisms for aspect implementation then
ADESD, especially when it comes to the definition of the
pointcut, however, this additional mechanisms are usually either
unnecessary or can be efficiently replaced. For example,
the aspects implemented in Déharbe and Medeiros [13] (section
III) could be more elegantly implemented using other
standard C++ features like inheritance and templates parameters.
In the scope of ADESD, we can say that scenario
adapters can be used to implement homogeneous crosscutting