MUX select输入到MUX输出是有delay的。 不妨打开 .lib,看一下MUX的timing。下面是一个例子,输出Y和选择输入S0是有timing关系的。
cell (MX2X1) {
...
pin (Y) {
direction : "output";
function : "((S0 B) + (!S0 A))";
related_ground_pin : VSS;
related_power_pin : VDD;
max_capacitance : 0.25;
timing () {
related_pin : "S0";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.238067, 2.98287", \
"0.369968, 3.11451" \
);
}
rise_transition (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.223337, 5.14359", \
"0.225482, 5.14358" \
);
}
cell_fall (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.237351, 3.46114", \
"0.357855, 3.58212" \
);
}
fall_transition (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.265017, 6.18618", \
"0.266053, 6.18618" \
);
}
}
timing () {
related_pin : "S0";
timing_sense : negative_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.264244, 3.00917", \
"0.371618, 3.11709" \
);
}
rise_transition (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.22328, 5.14359", \
"0.223667, 5.1437" \
);
}
cell_fall (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.266554, 3.49045", \
"0.388082, 3.61224" \
);
}
fall_transition (delay_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.01, 0.25");
values ( \
"0.265037, 6.18618", \
"0.265222, 6.18623" \
);
}
}
|