我看了一下,差不多,是在compile的时候,莫名其妙的有未定义的变量,类似于这种报错
Compiling module DFFRS_X1
** Error: ../../Verilog/NangateOpenCellLibrary.v(1477): (vlog-2730) Undefined variable: 'RN_AND_SN'.
就导致后面的vsim有未识别的模块,最后就fail了
但是我看我的.v文件里面这个变量也有定义,所以也不明白,里面的代码部分大概相关就是这些了
module DFFRS_X1 (D, RN, SN, CK, Q, QN);
.....
`ifdef NTC
`ifdef RECREM
buf (SN_d, SN_di);
buf (RN_d, RN_di);
`else
buf (SN_d, SN);
buf (RN_d, RN);
`endif
....
buf(RNx, RN_d);
and(RN_AND_SNx, RN_d, SN_d);
buf(SNx, SN_d);
`ifdef TETRAMAX
`else
ng_xbuf(RN_d, RNx, 1'b1);
ng_xbuf(RN_AND_SN, RN_AND_SNx, 1'b1);
ng_xbuf(SN_d, SNx, 1'b1);
ng_xbuf(xid_14, id_14, 1'b1);
`endif
`else
.....
// SDF Logic
buf(RNx, RN);
and(RN_AND_SNx, RN, SN);
buf(SNx, SN);
`ifdef TETRAMAX
`else
ng_xbuf(RN, RNx, 1'b1);
ng_xbuf(RN_AND_SN, RN_AND_SNx, 1'b1);
ng_xbuf(SN, SNx, 1'b1);
ng_xbuf(xid_10, id_10, 1'b1);
`endif
`endif
specify
(posedge CK => (Q +: D)) = (0.1, 0.1);
....
(posedge CK => (QN -: D)) = (0.1, 0.1);
.....
`ifdef NTC
`ifdef RECREM
....
`else
....
`endif
$setuphold(posedge CK &&& (RN_AND_SN === 1'b1), negedge D, 0.1, 0.1, NOTIFIER, , ,CK_d, D_d);
$setuphold(posedge CK &&& (RN_AND_SN === 1'b1), posedge D, 0.1, 0.1, NOTIFIER, , ,CK_d, D_d);
....
`else
....
$setuphold(posedge CK &&& (RN_AND_SN === 1'b1), negedge D, 0.1, 0.1, NOTIFIER);
$setuphold(posedge CK &&& (RN_AND_SN === 1'b1), posedge D, 0.1, 0.1, NOTIFIER);
....
`endif
endspecify
endmodule
我忽略这个error,继续使用不完整的库也没有问题,但是还是想请教一下这个该怎么弄
|