¿cuál es la diferencia entre pasar por ref y pasar por val en systemverilog?

1

Solo quiero saber cuál es la diferencia entre pasar por ref y pasar por val en systemverilog?

No puedo encontrar ningún ejemplo. También especialmente, ¿qué es esto? ¿Alguien sabe qué es esto y lo explica?

 interface xxx
  ...
 event yyy;
 event ggg;



 modport io_bus ( ref yyy,
                  ref ggg,
                  ....
                 );
 endinterface
    
pregunta smith Lee

2 respuestas

1

Considere un escenario de ejemplo como el siguiente: Una persona necesita entregar un certificado de grado a una organización. Se puede enviar una fotocopia del documento o el original por sí mismo.

Escenario 1: envío de fotocopia: Imaginemos un escenario donde el documento fotocopiado se daña. Desde entonces, el documento original no se ve afectado, ya que se pueden hacer muchas copias de fotos. Independientemente de los daños o cambios que ocurran en la copia de la foto, el original se mantiene intacto.

La llamada por valor sigue un enfoque similar. Simplemente pasa la copia del objeto. La ubicación de memoria original del objeto nunca se comparte. Por lo tanto, cualquier cambio que se realice en la copia nunca se reflejará en el original. Todas las copias tendrán una dirección diferente a la del objeto original.

Escenario 2: Envío del original: Supongamos que el certificado original se daña accidentalmente, no puede recuperarse.

En la llamada por referencia, la dirección del objeto original (certificado de grado) se comparte. Aquí, se pasa una referencia a la memoria. Por lo tanto, todos los objetos compartirán una memoria común y cualquier cambio realizado afectará al objeto original.

En los lenguajes c, c ++, las llamadas por referencias se implementan utilizando punteros. Sólo apuntan a alguna ubicación de memoria. System Verilog se inspira en estos idiomas e implementa las mismas funciones. En el sistema Verilog, la palabra clave "ref" significa simbólicamente que una dirección de la variable se pasa como referencia.

He intentado compilar un programa simple que explica los conceptos de call by value & llamar por ref. Ve a través de él.

enlace

    
respondido por el vim
0

El paso por referencia esencialmente pasa un puntero a la ubicación de la memoria de los datos, sin tener que preocuparse por la notación del puntero o los punteros de desreferenciación. Eso significa que la función en realidad está leyendo los datos reales, y potencialmente puede escribirle un nuevo valor.

Pasar por valor es simplemente tomar el número real en una ubicación de la memoria y enviarlo a una función, esencialmente haciendo una copia desechable que no puede ser modificada por la función que recibe el valor.

    
respondido por el R Drast

Lea otras preguntas en las etiquetas