1. A computer-implemented system for designing integrated circuits using reusable design components comprising: multiple component type definitions corresponding to different types of reusable components, the component type definitions including attributes associated with the component type; multiple components, each component being of one of the component types; multiple component versions for each of the multiple components, each component version being of one of the component, at least one of the component versions including; metadata including a component version number for tracking different versions of the component and attributes values describing attributes of the component; and a deliverable version including one or more design files performing a common function and having described by deliverable version number.