[sv-ac] 1678

From: Doron Bustan <dbustan_at_.....>
Date: Wed Nov 15 2006 - 08:55:18 PST
I open a new bug - 1678 for local variables name clashes:

-------------------------------------------------------------

A naive interpretation of substitution may lead to
local variables name clashing.

Here is an example of name clashing.

sequence r1(lv);
logic [7:0] lv1;

(a, lv1 = 0) ##1 (!a, lv1 = lv1 +lv)[*0:$] ##1 a ##0 (1, lv = lv1);
endsequence



sequence r2;

logic [7:0] lv1;

(b, lv1 = c) ##1
r1(lv1)
##1 (lv1 == d);
endsequence



A naive substitution will result in the following:

sequence r2;

logic [7:0] lv1;
logic [7:0] lv1;

(b, lv1 = c) ##1
(a, lv1 = 0) ##1 (!a, lv1 = lv1 +lv1)[*0:$] ##1 a ##0 (1, lv1 = lv1)
##1 (lv1 == d);
endsequence


what we really want is to rename lv1 in r1 to a unique name before the
substitution occurs. Then we get

sequence r2;

logic [7:0] lv1;
logic [7:0] unique_lv1;

(b, lv1 = c) ##1
(a, unique_lv1 = 0) ##1 (!a, unique_lv1 = unique_lv1 +lv1)[*0:$] ##1 a 
##0 (1, lv1 = unique_lv1)
##1 (lv1 == d);
endsequence
Received on Wed Nov 15 08:55:23 2006

This archive was generated by hypermail 2.1.8 : Wed Nov 15 2006 - 08:55:31 PST