请教关于IO约束的问题,帮忙分析一下
时间:10-02
整理:3721RD
点击:
双向端口模型:
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 ;
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 约束到底应该怎样去约束?另外双向端口应该怎样去约束呢?谢谢!
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 ;
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 约束到底应该怎样去约束?另外双向端口应该怎样去约束呢?谢谢!
有人能回答一下吗?谢谢!
你用的什么FPGA?因为有的FPGA跑不到175M的。
Known
可以这样
在软件里做约束也可以的
