Hardware-design requirements are becoming increasingly complex. Accordingly, the hardware developer is also beginning to use modern programming languages instead of traditional hardware description languages. However, modularity of the current hardware design has not changed from that of the traditional design.In this paper, we first conducted empirical investigation by interviews with real-world developers of circuit products, and confirmed that there exist cross-cutting concerns in actual products. The cross-cutting concerns fall into two types: one in common with software development and one specific to hardware design. In light of these results, this paper proposes ASystemC, an AOP extension for the hardware description language SystemC. ASystemC provides AOP features based on the AspectJ-like pointcut-advice mechanism. The design principle of ASystemC is practicality; we designed ASystemC to accept existing SystemC source code, and to weave aspects by using source-to-source conversion that outputs human-readable SystemC code. This design allows a user to utilize not only existing codes but also the existing knowledge and development process, as much as possible. As a result, ASystemC does not require modification of the existing source code review process and source analysis/manipulation tools, even if there is a developer unfamiliar with ASystemC in a development team. In addition, we confirmed the practicality and flexibility of ASys-temC through case studies: estimation of circuit size by using simulation, feature-configurable products and LTL verification. These cases are abstracted from actual problems in our products. They require not only code-level changes but also structural changes.
Languages
KeywordsAspect-oriented programming, SystemC, Hardware description language SpecC[6] and SystemC [17].Nevertheless, the modularity of hardware development has not changed from that of the traditional design method, called register transfer language (RTL). RTL adopts a simple hierarchical module structure; a large module is constructed by connecting primitive modules ports. An RTL user needs to be aware of a final circuit structure. For example, since RTL's ports are represented like chip ports, they are assigned (connected) by wire. SystemC provides more abstract communication between modules, such as channels, which are represented as method calls. In this way, abstraction of communication is improved by SystemC. On the other hand, the SystemC module structure itself is not changed from RTL's; both are simply hierarchical, like object-oriented programming 1 .Previous reports on cross-cutting concerns in hardware development include [5], that pointed out reset and clock supply as a cross-cutting concern in hard-ware design, proposing an experimental pointcut-and-advice mechanism for hardware description language. To cite another example, [1] proposed ADH, which is an aspect-oriented language for hardware design. However, to our knowledge, there is no production-level aspect-oriented language for hardware design.