Don't check the scope for array words.

We do not want to check an array word scope to see if the scope
was already included since a scope does not include array words.
They must be explicitly specified.
(cherry picked from commit 0b6bd343e8)
This commit is contained in:
Cary R 2009-09-15 17:09:24 -07:00 committed by Stephen Williams
parent d68fea3f58
commit 1872652019
1 changed files with 6 additions and 3 deletions

View File

@ -782,10 +782,11 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name)
const char *fullname; const char *fullname;
int add_var = 0; int add_var = 0;
int dep; int dep;
PLI_INT32 item_type = vpi_get(vpiType, item);
/* If this is a signal make sure it has not already /* If this is a signal make sure it has not already
* been included. */ * been included. */
switch (vpi_get(vpiType, item)) { switch (item_type) {
case vpiIntegerVar: case vpiIntegerVar:
case vpiMemoryWord: case vpiMemoryWord:
case vpiNamedEvent: case vpiNamedEvent:
@ -796,11 +797,13 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name)
case vpiTimeVar: case vpiTimeVar:
/* Warn if the variables scope (which includes the /* Warn if the variables scope (which includes the
* variable) or the variable itself was already * variable) or the variable itself was already
* included. */ * included. A scope does not automatically include
* memory words so do not check the scope for them. */
scname = strdup(vpi_get_str(vpiFullName, scname = strdup(vpi_get_str(vpiFullName,
vpi_handle(vpiScope, item))); vpi_handle(vpiScope, item)));
fullname = vpi_get_str(vpiFullName, item); fullname = vpi_get_str(vpiFullName, item);
if (vcd_names_search(&vcd_tab, scname) || if (((item_type != vpiMemoryWord) &&
vcd_names_search(&vcd_tab, scname)) ||
vcd_names_search(&vcd_var, fullname)) { vcd_names_search(&vcd_var, fullname)) {
vpi_printf("VCD warning: skipping signal %s, " vpi_printf("VCD warning: skipping signal %s, "
"it was previously included.\n", "it was previously included.\n",