|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
双向端口模型:
module tri_bus
(
rst ,
clk ,
IO_SEL ,
DIN ,
DOUT ,
DIO
);
input rst ;
input clk ;
input IO_SEL;
input DIN ;
output DOUT ;
reg DOUT ;
inout DIO ;
[email=always@(posedge]always @(posedge[/email] clk or posedge rst)
begin
if(rst)
DOUT <= 1'b0;
else
if(IO_SEL)
DOUT <= DIO;
end
assign DIO = IO_SEL ? 1'bz : DIN;
endmodule
约束文件如下:
NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 175 MHz HIGH 50 %;
NET "clk" LOC = "M21 " | IOSTANDARD = LVDCI_33;
NET "rst" LOC = "AW24" | IOSTANDARD = LVDCI_33;
NET "DIN" LOC = "AL24" | IOSTANDARD = LVDCI_33 ;
NET "DOUT" LOC = "AV23" | IOSTANDARD = LVDCI_33 ;
NET "DIO" LOC = "AU23" | IOSTANDARD = LVDCI_33 ;
NET "IO_SEL" LOC = "AU16" | IOSTANDARD = LVDCI_33 ;
NET DOUT OFFSET=OUT 5.0 AFTER "clk";
#NET "DIO" OFFSET = OUT 2.8ns AFTER clk;
时钟是175M,时钟周期是5.7ns,这个想实现的功能是想约束一下寄存器输出到FPGA内部引脚的时间为2.8ns,但是这样就出现时序不收敛,需要的周期为7.7ns,这样还大于了时钟周期,我们的设计是FPGA的信号连接另外一块芯片,是在同一时钟下,这样肯定导致时序不满足,导致数据读写错误。希望大牛帮忙分析,offset 约束到底应该怎样去约束?另外双向端口应该怎样去约束呢?谢谢! |
|