A design function with well-defined interfaces. a design block for a specific chip that handles a well-defined piece of functionality A block of logic or data that can be used in making application-specific integrated circuits (ASICs) and field programmable gate arrays (FPGAs)