原创 时序分析总结(以 SDRAM 时序约束为例)

2010-10-10 11:06 6993 4 4 分类: FPGA/CPLD

1。 时序分析就是分析前级的数据是否在后一个时钟沿的数据有效窗口里面,就是说在整个窗口内部,数据都应该保持有效,如果不满足时间窗的前端,就是 setup 违例,如果不满足时间窗的后端,那么就是 hold 违例;


2.  分析的基本情况是针对 reg2reg 这种情况, 至于 pin-2-reg, 给出 pin 端的时间窗,来约束FPGA的 su 和 hd 时间,对于 reg-2-pin, 给出外部的时间窗,来约束 FPGA 内部的 tco 等参数,要约束的始终是 FPGA 内部,要假定外部提要求, FPGA 内部通过一定的布局来满足;


3. 关于 input min / max,  output min /max 这些参数都是为了给出有效时间窗口的范围,所以切记, 这些值都是以 clock 为基准的,记住这个,算的时候就很容易了;


4. 基本的时序约束有: 时钟约束, IO 约束, 例外说明, 这些都是可以通过 timequest 来设置的。 所谓 同步时序,寄存器在同一个时钟沿动作, 所谓 异步时序, 寄存器不是一个时钟沿动作, 还有 源同步时序,就是原始clk 是一致的,但是使用的时候可能同频不同相。 可以看到,这是设计电路的固有属性,跟约束无关,现在我们要通过上面的3中约束来正确的分析这3中电路结构。


5. 明确一下,基本的分析模型,对于 reg 2 reg, 对于setup的分析是,source clk 和 destination clk 中寻找有效沿靠得最近的两个来分析,同时满足:source clk 在前 destination  在后,这样,前面的为 lauch edge, 后面的是 latch edge, 这就是 setup relations 分析,注意,找这两个有效沿的时候,时钟走线延迟是不计算在内的(不然,各个寄存器离clk有远有近,这个延时都不相同,就不好找了)。同时,如果两个沿的时间差为0,也是忽略的。


6. 平时,都是按照默认的模型来分析的,即,对于同步时序,前一个clock  lauch, 后一个clock latch,这是绝大多数情况。 对于其他不同频同相得时钟,都要找2个相近的沿来分析。有时候,找到的2个沿就不是我们实际使用的 latch ~ lauch 沿,这个时候就需要例外设置了。


7. 一旦 setup relation的2个沿确定了, hold 的2个沿也就确定了,对于同频的时钟来讲,如果不同频,还需要找 hold relation 的2个沿,在 handbook 上有讲怎么找。


8.. 对于 SDRAM 时序的来讲,分析好相移, 最后确定了我们实际用的 setup relation 和 hold relation 关系如下:



也就是 SDRAM clk 需要 phase shift  2 ns 左右,根据


http://blog.ednchina.com/ilove314/955999/message.aspx 所述。


以从左到右记这四个 rising edge, 1, 2, 3, 4;


对于读: SDRAM clock 2 launch -->   Controller clock 3 latch, 按照默认模型分析,setup relation 就是对的;


对于写: Controller clock 1 launch -> SDRAM  clock 4 latch, 这时,默认的setup relation 关系是: Controller clock 1 launch -> SDRAM clock 2 latch, 这个显然是不满足的,通过多周期的例外设置来调整 setup relation 如我们想要的来分析;


上面分析的是setup relation , 对于同频的 clk 来讲, setup 的关系对了,hold 的关系自然也对了。


9。 上例中, sdram 的 data 是根据 sdram clk 来确定 output max/min 的, 因为在write 的时候,我们要给出的外部 sdram 中 reg 的 time window。


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条