Reenvío de matriz de interfaz y modports

0

PREGUNTA

¿Los parámetros de interfaz para un módulo se deducen automáticamente de la instancia de interfaz que está conectada a la instancia de módulo?

Fondo

Estoy diseñando un sistema que proporciona una infraestructura de comunicación con múltiples canales. Cada canal puede estar vinculado a un módulo diferente por el usuario. Para separar la lógica del usuario del sistema, creé un módulo que envuelve la infraestructura. Esta es la configuración en (pseudo) código

interface channel_if #(parameter int CHANNELBITS = 8);
     logic dummy;

     modport arbiter(input dummy);
endinterface

module arbiter(
    channel_if.arbiter channel[CHANNELS] //MODPORT defined
);
endmodule

module infrastructure(
    channel_if #(CHANNELBITS=16) channel[CHANNELS] //PARAMETERS defined
);

arbiter channelArbiter(channel);

endmodule

El problema que tengo es el siguiente: puedo especificar los parámetros para la matriz de interfaz OR el puerto de puerto. No encontré la forma (Vivado 2015.1) de definir ambos parámetros, Y modport.

En top se encontrará el siguiente código:

... channel_if # (CHANNELBITS = 16) ChannelHarness [CHANNELS]; channel_if channelHarness [CHANNELS]; // ya sea este o el anterior

infraestructura (.channel (channelHarness.arbiter)); ...

Si bien no es un problema asignar InterfaceArray.modport al módulo infrastructure , no puedo asignar InterfaceArray.modport dentro de la infraestructura (Ya hemos eliminado la matriz de la interfaz a los puertos del límite del módulo de infraestructura).

Preguntas

Ya que no puedo definir los parámetros de interfaz para los árbitros (solo es posible si no defino el puerto de puertos, ¿cuál es el resultado de los orígenes de la interfaz, y que no quiero), puedo usar interfaces con parámetros no predeterminados?

¿Los parámetros de la interfaz para un módulo se deducen automáticamente de la instancia de la interfaz que está conectada a la instancia del modelo?

    
pregunta ted

1 respuesta

1

Los valores de los parámetros se deducen de la instancia de interfaz que está conectada a la instancia del modelo. Vea el ejemplo en la sección 25.8 Interfaces parametrizadas del LRM 1800-2012.

La construcción interface / modport en el lenguaje SystemVerilog es una de las secciones más mal documentadas del LRM y tiene muchas temas abiertos . Evitaría usarlos a menos que sea absolutamente necesario.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas