The paper presents a technique for the design of digital systems on the basis of reusable hardware templates, which are circuits with modifiable functionality that might be customized to satisfy requirements of target applications, such as a highly optimized implementation of the selected problem-specific operations. Reusability is provided at two levels that are the level of hardware circuits and the level of specifications. The paper demonstrates how hardware templates can be modeled in software and implemented in hardware.