Cuando dice diseños de "hardware", sé que probablemente esté hablando de soluciones de PCB y componentes discretos, pero tengo algo de experiencia en el diseño de ASIC que pueden ser útiles a nivel conceptual.
Cuando diseñamos un ASIC que es bastante complicado, usamos la jerarquía desde el principio. Una razón importante para eso 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 ASIC pueden ser bastante grandes, y sin una jerarquía bien organizada puede ser difícil administrar todo el diseño.
Tenemos una fuerte cultura de reutilización de nuestros bloques de construcción. Por ejemplo, si tenemos un diseño de amplificador operacional que alguien pasó mucho tiempo diseñando y validando, ese diseño se empaquetaría 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 piezas 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 puede reutilizarse 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 lleva tiempo para familiarizarse con el conjunto de problemas, por lo que incluso si el bloque no es ideal, probablemente intente usarlo de todos modos.