使用逻辑综合工具后,得到门级网表文件如下:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
module mis_timing ( A, DATA_RDY, VE_CLK, VE_RSTJ, OUT, OUT_RDY, TEST_SI, TEST_SO, test_se );
input [2:0] A;
output [2:0] OUT;
input DATA_RDY, VE_CLK, VE_RSTJ, TEST_SI, test_se;
output OUT_RDY, TEST_SO;
wire n7, n8, n9;
BUFX8 I3 ( .A(n7), .Y(OUT[1]) );
BUFX8 I4 ( .A(n8), .Y(OUT[0]) );
BUFX8 I5 ( .A(TEST_SO), .Y(OUT[2]) );
BUFX8 I6 ( .A(n9), .Y(OUT_RDY) );
SDFFRHQX2 OUT_RDY_reg ( .SI(TEST_SI), .SE(test_se), .D(DATA_RDY), .CK(
VE_CLK), .RN(VE_RSTJ), .Q(n9) );
SDFFRHQX2 \OUT_reg[0] ( .SI(n9), .SE(test_se), .D(A[0]), .CK(VE_CLK),
.RN(VE_RSTJ), .Q(n8) );
SDFFRHQX2 \OUT_reg[1] ( .SI(n8), .SE(test_se), .D(A[1]), .CK(VE_CLK),
.RN(VE_RSTJ), .Q(n7) );
SDFFRHQX2 \OUT_reg[2] ( .SI(n7), .SE(test_se), .D(A[2]), .CK(VE_CLK),
.RN(VE_RSTJ), .Q(TEST_SO) );
endmodule
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
研究这个网表文件,我们发现从输入到输出只有一级延迟,显然这与RTL设计不符,因此产生了不匹配。
注:我们在逻辑综合时加上了扫描链,所以有TEST_SI, TEST_SO, test_se这三个信号。
我们看综合后的仿真波形:
比较两个波形,可以直观的看出这种不匹配现象。为了避免这种情况的发生,我们必须改正原来的RTL设计。 |