This paper presents the BALBOA component composition framework for system-level architectural design. It has three parts: a loosely-typed component integration language (CIL); a set of C++ intellectual property (IP) component libraries; and a set of split-level interfaces (SLIs) to link the two. A CIL component interface can be mapped to many different C++ component implementations. A type-inference system maps all weakly-typed CIL interfaces to strongly typed C++ component implementations to produce an executable architectural model. Thus, this amounts to selecting IP implementations according to a set of connection constraints. The SLIs are used to select, adapt, and validate the implementation types. The advantage of using the CIL is that the design description sizes are much smaller because the runtime infrastructure automatically selects the IP and communication implementations. The type inference facilitates changes by automatically propagating them through the design structure. We show that the inference problem is NP complete and we present a heuristic solution to the problem. We bring forth a number of issues related to the automation of reusable IP composition including type-compatibility checking, split-programming, and introspective composition environment, and demonstrate their utility through design examples. Index Terms-Hardware/software co-design, system-on-chip, embedded systems, hardware description language (HDL), modeling, simulation, design reuse, interface design. I. INTRODUCTION R AISING the abstraction levels at which microelectronic system designs are entered and validated has a direct impact on the design quality and design time [1]. Consequently, recent research efforts in the area have been focused on the specification methodologies and languages for system-level