Exploiting polymorphism in HW design: A case study in the ATM domain