在调试期间,我发现,至少在特定情况下,data[1]
未定义(X
)而data[1:1]
包含期望值(在此特定情况下为0
)。为什么这两个表达式之间存在差异?
编辑不幸的是,这是较大项目的一部分,但代码是这样的:
task check_init_config();
data_t data;
resp_t resp;
reset();
fork
ivip.nointr();
stvip.norun();
szvip.keep_size(0, 0);
join_none
cvip.read(0, data, resp);
disable fork;
assert(resp === OKAY) else $error("Read of config returned error: %d\n", resp);
assert(data[0:0] === 0) else $error("Interrupts on idle enabled at start\n");
assert(data[1:1] === 0) else $error("Interrupts on stop enabled at start\n");
assert(data[2:2] === 1) else $error("Running on start\n");
assert(data[31:3] === 0) else $error("Reserved state is non-zero\n");
endtask
data_t
是logic [31:0]
的typedef。 data[1:1]
为0
,但data[1]
为X
(由assert
触发器找到)。