Quando você diz projetos de "hardware", sei que provavelmente está falando sobre PCB e soluções de componentes discretos, mas tenho alguma experiência em projetar ASICs que podem ser úteis em nível conceitual.
Quando projetamos um ASIC bastante complicado, usamos a hierarquia desde o início. Uma das principais razões para isso é que, à medida que os projetos aumentam, sua capacidade de avaliá-los e simulá-los completamente diminui. Além disso, os projetos ASIC podem ficar muito grandes e, sem uma hierarquia bem organizada, pode ser difícil gerenciar todo o projeto.
Temos uma forte cultura de reutilização para nossos blocos de construção. Por exemplo, se tivermos um design de amplificador operacional que alguém gaste muito tempo projetando e validando, esse design será empacotado para que outro designer possa importar facilmente esse design para seu próprio espaço de trabalho. Como temos um servidor centralizado para armazenar esses pacotes, é fácil encontrar todas as peças necessárias.
Embora um bloco individual possa ter sido projetado para um circuito específico (por exemplo, uma referência de tensão para um amplificador operacional), ele geralmente pode ser reutilizado sem modificar o design original. O ciclo de design dura um mês ou mais e inclui a validação de um layout. Projetar um desses blocos leva tempo para se familiarizar com o conjunto de problemas; portanto, mesmo que o bloco não seja ideal, você provavelmente tentaria usá-lo de qualquer maneira.