High-level hardware modeling is an essential, yet time-consuming, part
of system design. However, effective component-based reuse in
hardware modeling languages can reduce model construction time and
enable the exploration of more design alternatives, leading to better
designs. While component overloading and parametric polymorphism are
critical for effective component-base reuse, no existing modeling
language supports both. The lack of these features creates overhead
for designers that discourages reuse, negating any benefits of reuse.
This paper first presents a type system which support both component
overloading and parametric polymorphism. Then, it proves that
performing type inference for any such system is NP-complete and
presents a heuristic that works efficiently in practice. The result
is a type system and type inference algorithm that, when deployed, can
encourage reuse, reduce design specification time, and lead to better
designs.