Para similitudes, ambos dependen en gran medida de la lógica, y ambos son deterministas; es decir, a menos que algo esté mal, dadas las mismas entradas, un sistema de hardware o software debería comportarse igual.
Algunos aspectos del diseño de hardware se parecen más al software. El diseño de FPGA, por ejemplo, se realiza con archivos fuente que se parecen mucho a C. Sin embargo, eso no significa que un programador pueda diseñar un FPGA sin saber nada más: para el diseño de FPGA, debe ser mucho más consciente de qué tipos de recursos que acaba de gastar, en forma de compuertas de entrada, compuertas regulares, compuertas de salida, multiplicadores y ciclos de reloj, de lo que utilizaría para la C. normal. ellos.
En cuanto a las diferencias, en el software, nunca tiene que preocuparse por la física. Considere que un nanosegundo tiene aproximadamente 6 pulgadas de largo en cobre. Como ingeniero de software, eso no significa nada para ti, pero como diseñador a nivel de junta, lo significa todo. Significa que la idea de un pulso de reloj en la mitad de su tablero moderadamente grande está desfasada con el pulso de reloj en la otra mitad. ¿Qué hacer si necesito elementos en todo el tablero para sincronizar y, por supuesto, los necesito para sincronizar?
- ¿Cuáles son las mejores empresas de pruebas de software en Europa del Este?
- ¿Qué carrera tiene mejores perspectivas para un graduado de ingeniería informática: sistemas embebidos o diseño de circuitos digitales / arquitectura de computadoras?
- ¿Podría sugerir una lista de software para el desarrollo de juegos a gran escala?
- ¿Cuál es la lógica detrás del diseño de Python?
- ¿DevOps, QA o ciertos tipos de desarrolladores de software eventualmente se automatizarán?
Luego está el costo. ¿Cuál es el costo de arruinar la construcción de su software, digamos agregando un error importante? Bueno, como regla general, todo lo que has perdido es el tiempo que te llevará reconstruirlo. En hardware? Es posible que tenga que volver a formar una tabla (reconstruirla afuera), a costa de semanas y potencialmente decenas de miles de dólares.
Eso se vuelve ridículamente caro cuando se habla de volver a formar ASICS. El NRE (gasto no recuperable) para un ASIC puede ser de millones .
Esa es una razón por la cual los ASIC (IC específicos de la aplicación) están desfavorecidos en gran parte del mundo del hardware, a favor de los FPGA de alta densidad. Con un FPGA, un error generalmente cuesta el mismo tiempo de reconstrucción que el software (aunque los tiempos de compilación son más largos). Eso hace que la prima por unidad que paga por los últimos FPGA valga la pena en muchos casos.
Ningún gerente de ingeniería quiere escuchar que un error común en un ASIC le va a costar unos meses y unos pocos millones de dólares. “Bien”, dice, “usaré el FPGA de $ 300 solo para evitar el riesgo de eso”.
A veces, una vez que se prueba un diseño FPGA, un equipo de diseño puede optar por convertirlo en un ASIC. Depende, en ese momento, del número de unidades que va a vender y de si los ahorros por unidad justifican la NRE.
Una diferencia más es que las herramientas para el diseño de hardware, particularmente el diseño ASIC, son muy caras y requieren toneladas y toneladas de cómputo. Son los tipos que necesitan un clúster Beowulf de 64 nodos para mantener sus compilaciones manejables. ¿Software? Dame una computadora portátil hecha en los últimos 10 años, y tal vez incluso las herramientas gratuitas en Linux serán lo suficientemente buenas; un experto en software puede hacer literalmente su trabajo con un valor de $ 50 en muchos casos.