2017-05-12 2 views
0

Je cherche un moyen de simplifier mon code en créant un tableau array avec des références à des variables logiques. Cela me permettra de parcourir le tableau. Voici le pseudo code que j'imagine (c'est ce que je ferais en C++). Je ne peux pas les mettre en rangée car ils font partie de RTL situés dans des endroits différents.Création d'un tableau de références aux objets.

logic A; 
logic B; 
task my_algorithm(); 
    ref logic elements[2] = {A, B}; // This wrong, ref cannot be used in this   context 
    foreach(elements[v]) begin 
    // Do same work on each element 
    end 
endtask : my_algorithm 

Merci,

Répondre

0

Vous pouvez utiliser inout arguments qui seront copiés dans l'entrée à la routine, puis recopié à la sortie de la routine. (utilisez une fonction au lieu d'une tâche, sauf si la routine doit consommer du temps)

function automatic void my_algorithm(inout logic A, B); 
    logic elements[2] = {A,B}; 
    foreach(elements[v]) begin 
     // 
    end 
    {<<{A,B}} = elements; 
endfunction 
+0

Merci Dave, c'est une très belle solution. J'espère qu'un ensemble de références fera partie du LRM. –