Cuando dice diseños de "hardware", sé que probablemente esté hablando de soluciones de PCB y de componentes discretos, pero tengo cierta experiencia en el diseño de ASIC que pueden ser útiles en un nivel conceptual.
Cuando diseñamos un ASIC que es bastante complicado, usamos la jerarquía desde el principio. Una razón importante de esto es que a medida que los diseños se hacen más grandes, su capacidad para evaluarlos y simularlos a fondo disminuye. Además, los diseños de ASIC pueden ser bastante grandes, y sin una jerarquía bien organizada puede ser difícil administrar todo el diseño.
Tenemos una sólida cultura de reutilización para nuestros bloques de construcción. Por ejemplo, si tenemos un diseño de amplificador operacional en el que alguien dedica mucho tiempo a diseñar y validar, ese diseño se empaquetará para que otro diseñador pueda importar fácilmente ese diseño en su propio espacio de trabajo. Tenemos un servidor centralizado para almacenar estos paquetes, por lo que todas las partes que necesita son fáciles de encontrar.
Si bien un bloque individual puede haber sido diseñado para un circuito específico (por ejemplo, una referencia de voltaje para un amplificador operacional), generalmente se puede reutilizar sin modificar el diseño original. El ciclo de diseño dura un mes o más, e incluye la validación de un diseño. Diseñar uno de estos bloques requiere tiempo para familiarizarse con el conjunto de problemas, por lo que incluso si el bloque no es el ideal, probablemente intente usarlo de todos modos.