mirror of
https://git.code.sf.net/p/ngspice/ngspice
synced 2026-08-28 16:54:20 +02:00
Fix #686: "XSpice Verilog Vector Input Bug".
Bug report and fix by Aodhan Murray.
This commit is contained in:
committed by
Holger Vogt
parent
816f43dd36
commit
b03dd90694
@@ -40,18 +40,18 @@ static unsigned char previous_output[outs + inouts];
|
||||
|
||||
/* The input function: it should ignore out-of-range values of index. */
|
||||
|
||||
#define VL_DATA(size, name, msb, lsb) \
|
||||
if (index >= msb - lsb + 1) { \
|
||||
index -= msb - lsb + 1; \
|
||||
} else if (msb == 0 && lsb == 0) { \
|
||||
topp->name = val ? 1 : 0; \
|
||||
return; \
|
||||
} else { \
|
||||
if (val) \
|
||||
topp->name |= (1 << (msb - index)); \
|
||||
else \
|
||||
topp->name &= (1 << (msb - index)); \
|
||||
return; \
|
||||
#define VL_DATA(size, name, msb, lsb) \
|
||||
if (index >= msb - lsb + 1) { \
|
||||
index -= msb - lsb + 1; \
|
||||
} else if (msb == 0 && lsb == 0) { \
|
||||
topp->name = val ? 1 : 0; \
|
||||
return; \
|
||||
} else { \
|
||||
if (val) \
|
||||
topp->name |= (1 << (msb - index)); \
|
||||
else \
|
||||
topp->name &= ~(1 << (msb - index)); \
|
||||
return; \
|
||||
}
|
||||
|
||||
static void accept_input(struct co_info *pinfo,
|
||||
@@ -70,21 +70,21 @@ static void accept_input(struct co_info *pinfo,
|
||||
|
||||
offset = outs;
|
||||
#undef VL_DATA
|
||||
#define VL_DATA(size, name, msb, lsb) \
|
||||
if (index >= msb - lsb + 1) { \
|
||||
index -= msb - lsb + 1; \
|
||||
offset += msb - lsb + 1; \
|
||||
} else if (msb == 0 && lsb == 0) { \
|
||||
topp->name = val ? 1 : 0; \
|
||||
previous_output[index + offset] = val; \
|
||||
return; \
|
||||
} else { \
|
||||
if (val) \
|
||||
topp->name | (1 << (msb - index)); \
|
||||
else \
|
||||
topp->name &= (1 << (msb - index)); \
|
||||
previous_output[index + offset] = val; \
|
||||
return; \
|
||||
#define VL_DATA(size, name, msb, lsb) \
|
||||
if (index >= msb - lsb + 1) { \
|
||||
index -= msb - lsb + 1; \
|
||||
offset += msb - lsb + 1; \
|
||||
} else if (msb == 0 && lsb == 0) { \
|
||||
topp->name = val ? 1 : 0; \
|
||||
previous_output[index + offset] = val; \
|
||||
return; \
|
||||
} else { \
|
||||
if (val) \
|
||||
topp->name | (1 << (msb - index)); \
|
||||
else \
|
||||
topp->name &= ~(1 << (msb - index)); \
|
||||
previous_output[index + offset] = val; \
|
||||
return; \
|
||||
}
|
||||
|
||||
#include "inouts.h"
|
||||
|
||||
Reference in New Issue
Block a user