原创 PLD中的微小延时(二) 插入逻辑门或LCELL

2009-11-10 21:59 4288 14 14 分类: FPGA/CPLD

1.插入逻辑门,为保证不被综合器优化,必须加入综合控制语句,代码如下:
module delay_10ns_2(oe_i,dir_i,oe_o,dir_o);
input oe_i,dir_i;
output oe_o,dir_o;
wire x1 /* synthesis keep */;
wire x2 /* synthesis keep */;
wire x3 /* synthesis keep */;
wire x4 /* synthesis keep */;
//inout
assign x1 = oe_i && 1'b1;
assign x2= ~x1;
assign x3 = x1 && ~x2;
assign x4 = x3 && ~x2;
assign oe_o = ~(x4 && x3);
assign dir_o = ~ dir_i;
endmodule
虽然加了四级,但只引入了不到4ns。
2.插入LCELL,那么代码不要特别处理,如下:
module delay_10ns_2(oe_i,dir_i,oe_o,dir_o);
input oe_i,dir_i;
output oe_o,dir_o;
assign oe_o = ~ oe_i;
assign dir_o = ~ dir_i;
endmodule
插入了10个LCELL,但只引入了5ns的延迟,而且有时约束好像不能起到作用,约束语句如下:
set_instance_assignment -name LCELL_INSERTION 10 -to oe_i


点击开大图


                          插入了逻辑门,布局之后


点击开大图


                            插入LCELL,布局之后


在插入LCELL时,RTL级不会改变,但插入逻辑门后,RTL级改变,但逻辑等价。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
14
关闭 站长推荐上一条 /3 下一条