|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
用的是charted 0.18um工艺,库里单元定义如下:
`timescale 1ns/1ps
`celldefine
module AFHCINX2 ( S, CO, A, B, CIN);
output S, CO;
input A, B, CIN;
not I0 (ci, CIN);
xor I1 (S, A, B, ci);
and I2 (a_and_b, A, B);
and I3 (a_and_ci, A, ci);
and I4 (b_and_ci, B, ci);
or I5 (CO, a_and_b, a_and_ci, b_and_ci);
specify
specparam
tplh$A$S = 1.0,
tphl$A$S = 1.0,
tplh$A$CO = 1.0,
tphl$A$CO = 1.0,
tplh$B$S = 1.0,
tphl$B$S = 1.0,
tplh$B$CO = 1.0,
tphl$B$CO = 1.0,
tplh$CIN$S = 1.0,
tphl$CIN$S = 1.0,
tplh$CIN$CO = 1.0,
tphl$CIN$CO = 1.0;
if ((A == 1'b0 && B == 1'b0) || (A == 1'b1 && B == 1'b1))
(CIN *> S) = (tplh$CIN$S, tphl$CIN$S);
if ((A == 1'b0 && B == 1'b1) || (A == 1'b1 && B == 1'b0))
(CIN *> S) = (tplh$CIN$S, tphl$CIN$S);
if (B == 1'b0 && CIN == 1'b0)
(A *> S) = (tplh$A$S, tphl$A$S);
if (B == 1'b1 && CIN == 1'b1)
(A *> S) = (tplh$A$S, tphl$A$S);
if (B == 1'b0 && CIN == 1'b1)
(A *> S) = (tplh$A$S, tphl$A$S);
if (B == 1'b1 && CIN == 1'b0)
(A *> S) = (tplh$A$S, tphl$A$S);
if (A == 1'b0 && CIN == 1'b0)
(B *> S) = (tplh$B$S, tphl$B$S);
if (A == 1'b1 && CIN == 1'b1)
(B *> S) = (tplh$B$S, tphl$B$S);
if (A == 1'b0 && CIN == 1'b1)
(B *> S) = (tplh$B$S, tphl$B$S);
if (A == 1'b1 && CIN == 1'b0)
(B *> S) = (tplh$B$S, tphl$B$S);
if (B == 1'b1)
(A *> CO) = (tplh$A$CO, tphl$A$CO);
if (B == 1'b0)
(A *> CO) = (tplh$A$CO, tphl$A$CO);
if (A == 1'b1)
(B *> CO) = (tplh$B$CO, tphl$B$CO);
if (A == 1'b0)
(B *> CO) = (tplh$B$CO, tphl$B$CO);
(CIN *> CO) = (tplh$CIN$CO, tphl$CIN$CO);
endspecify
endmodule // AFHCINX2
`endcelldefine
有的单元还有时序检查的内容:
// timing checks
$width(posedge WW, tminpwh$WW, 0, NOTIFIER);
$period(posedge WW, tperiod$WW, NOTIFIER);
$setuphold(negedge WW, posedge WB, tsetup$WW$WB, thold$WW$WB, NOTIFIER);
$setuphold(negedge WW, negedge WB, tsetup$WW$WB, thold$WW$WB, NOTIFIER);
在不加载SDF文件的情况下,仿真结果中就已经有了延迟,如下所示
而我加载SDF之后,仿真时出现了好多保持时间违例,而在encounter中却没有报保持时间违例,
我的问题是,为什么要在库中定义延时信息??有什么作用?? |
|