We have implemented aspects for debugging. Unlike previous works [11], [12], which focused on simulation time tracing and logging, we have implemented aspects for on-chip debugging. Figure 3 shows the debugged family of hardware aspects. The class Debugged Common defines common ports for all aspects. Besides the ports used for clock and reset, it defines outputs for a JTAG debug protocol (trigger_out and data_out) and for the enter/leave protocol (op_rdy_out and op_req_in). The input values for the ports defined by the subclasses determine which operation will be triggered. The aspects implemented define the following debugging functionalities: Watched causes the state of a component to be dumped every time it is modified; Traced causes every operation execution to be signalized; and Profiled counts the number of clock cycles used by the component for each operation.