¿Por qué declaramos las entradas de nuestro diseño como reg en testbench y las salidas como cable ?
La respuesta de Shashank es buena.
Me gustaría agregar que en un banco de pruebas más sofisticado, todas las señales de los pines del dispositivo bajo prueba podrían declararse como cables, ya que podría elegir que otro módulo controle sus entradas del dispositivo bajo prueba (es decir, un modelo funcional de bus).
Si todos sus estímulos provienen directamente del banco de pruebas, entonces tiene sentido declarar las señales de entrada del DUT como reg (o lógica) en el módulo del banco de pruebas.
Las entradas se declaran como reg
y las salidas como wire
solo en Verilog. En SystemVerilog, usamos logic
para simulación de 4 estados y bit
para simulación de 2 estados.
En Verilog, las entradas se declaran como reg
porque son variables que almacenan valores durante la simulación. El valor se almacena en las entradas de tipo reg
hasta que se sobrescribe con algún otro valor.
El tipo de datos wire
se usa para las salidas porque las salidas en el banco de pruebas son impulsadas por el DUT (Dispositivo bajo prueba) continuamente y no almacenan ningún valor durante la simulación.
En SystemVerilog, declare una señal como wire
solo si espera que tenga varios controladores.
Lectura adicional: el excelente blog del Sr. Dave Rich sobre cable y registro en Siemens Blogs
Máquina virtual Shashank
Trucha