PHOENICS: Partitioning Hardware/Software Embedded Systems Via Non-Intrusive Interactive Constraint Satisfaction

Mave Houston

In the design of mixed hardware/software systems, it becomes necessary to decide which functions in the system specification will be implemented in hardware, and which functions will be implemented in software. This process of determination is called hardware/software partitioning. Formally, hw/sw partitioning is defined as taking a specification for an embedded system and then assigning the functions in that specification to hardware or software. The functions can range in granularity from lines of source code to full functions/procedures or circuit schematics. Additionally, the hardware/software partitioning problem belongs to a class of open research problems characterized by a problem solving process where users must integrate large amounts of data, as well as make sense of the interplay between complex constraints, in order to arrive at a solution.

Humans have typically done this partitioning task by hand, using a number of effective rules of thumb, for many years. However, human designs are generally not optimal, and automated optimization algorithms can do better in some, but not all cases. The automated designs typically make no sense to a human designer, since the semantics of the system were not understandable by the algorithm.
Further, the human's rules of thumb can also lead to more efficient designs in some cases, for reasons not well understood. In order to make the most of the user's knowledge and the optimization algorithms available, the PHOENICS tool combines these approaches by letting the algorithm provide its computational power to assist the human designer, and by employing a combination of clustering and inductive generalization techniques to simultaneously and unobtrusively acquire constraints from the user. This produces a better and a more understandable design.

Back to 11th Annual Conference for African American Researchers in the Mathematical Sciences