Expresiones en instancias del módulo Verilog

0

Si tengo la siguiente definición de módulo verilog:

module foo (
  input a,
  output b
  );

  assign b = !a;

endmodule

Y luego lo instalo dentro de otro módulo como tal

module bar (
  input c,
  output d
  );

  foo foo0 (
    .a(c),
    .b(!d) //note the not operator
  );

endmodule

Observé la definición de sintaxis EBNF para Verilog y mostró expresiones como argumentos válidos para la asignación de puertos.
¿Hará esto lo que quiero (es decir, actuará como un passthrough, dando salida a c)? ¿O verilog no permite operadores distintos a la concatenación para la asignación de puertos?

Me doy cuenta de que este ejemplo está diseñado, pero mi proyecto tiene una cantidad decente de código, por lo que no quise subir / explicar todo a menos que sea necesario.

    
pregunta rfoster

1 respuesta

2

Esto es legal para las conexiones de puertos de entrada, pero los puertos de salida solo pueden conectarse a redes y / o variables, o una concatenación de esas. Consulte la sección 23.3.3.3 Reglas de conexión de puertos para redes con tipos de redes incorporados del LRM 1800-2017.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas