Since digital systems consist of hardware and also software running on top of the hardware, hardware/software (HW/SW) co-design techniques, which try to concurrently generate hardware and software designs from the single specification, must be employed. Object-oriented design methodologies (OODMs) have been widely adopted in software developments for better product quality and more importantly for higher design productivity, such as reuse of designs. Most of the design methodologies proposed so far for hardware/software co-designs start their designs from their functional specifications in some executable languages, such as C/C++, even if they are using object-oriented tools like UML diagrams. We believe appropriate documentations on the analysis and design processes, such as the ones that describe various design decisions made in early design stages, are the keys for design reuse. Another very important issue is how to "reason about" these documentations efficiently and effectively What is required here for real design reuse is to have integrated design environments and their associated tools which cover object-oriented analysis and design processes and also provides means to reason about their design documentations. In this paper, we propose a design methodology and its associated design techniques which are based on an object-oriented design methodology for HW/SW co-design processes followed by dependence analysis of the specification/design descriptions. We applied the proposed techniques for HW/SW co-designs to the design of a controller for PCMCIA-flash-memory interface, a typical HW/SW codesign. Various documentations for the target SW/HW co-designs including the design analysis and decisions, which will be very useful for re-design in the case of changes of specifications and bug fixes, have been generated and documented. Also dependencies among statements in those documents can be reasoned about by our proposed method.
['Masahiro Fujita', 'Shunsuke Sasaki', 'Ken Matsui']
Object-oriented analysis and design of hardware/software co-designs with dependence analysis for design reuse