2017-08-07 7 views
1

Mise en œuvre 1:Quelle est la différence entre suivre deux implémentation logique à partir de la perspective matérielle?

logic [2:0][3:0] reg0; // Packed 
[email protected](clk_a) 
    reg0[1:0] <= in0[1:0]; 
[email protected]_b) 
    reg0[3:2] <= in1[1:0]; 

Mise en œuvre 2:

logic [2:0] reg0 [3:0]; // unpacked 
[email protected](clk_a) 
    reg0[1:0] <= in0[1:0]; 
[email protected]_b) 
    reg0[3:2] <= in1[1:0]; 

Pourquoi outil me donne l'erreur multi-pilote pour la mise en œuvre 1?

Répondre

2

La différence est ce que le LRM considère comme une variable . Vous n'êtes pas autorisé à avoir plusieurs affectations à la même variable à partir de différents processus. Un tableau condensé est considéré comme une variable ainsi que chaque élément s'il s'agit d'un tableau décompressé. La raison de cette restriction a plus à voir avec une implémentation de simulation efficace et pas vraiment avec l'implémentation matérielle et la distinction sur ce qui constitue une variable est utilisée à d'autres endroits dans le LRM (c.-à-d.