怎么解决有关于data保存时间的时序错误?

电子说

1.2w人已加入

描述

Q: 使用 zynq 器件, select io 解码串行数据, data 和 clock 直接进入, 未进行其他处理, 综合有关于 data 保存时间的时序错误, 请问什么问题? 实测接收功能基本正确

器件时序, 约束采用的是其中的 tframe = 1.3 - 1.9ns

时序设计

时序设计

时序设计

约束:

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -min -add_delay -1.300 [get_ports rxData_n]

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -max -add_delay -1.900 [get_ports rxData_n]

set_input_delay -clock [get_clocks rxDco_p] -min -add_delay -1.300 [get_ports rxData_n]

set_input_delay -clock [get_clocks rxDco_p] -max -add_delay -1.900 [get_ports rxData_n]

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -min -add_delay -1.300 [get_ports rxData_p]

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -max -add_delay -1.900 [get_ports rxData_p]

set_input_delay -clock [get_clocks rxDco_p] -min -add_delay -1.300 [get_ports rxData_p]

set_input_delay -clock [get_clocks rxDco_p] -max -add_delay -1.900 [get_ports rxData_p]

A: 应该是 set_input_delay 约束写错了

参考 vivado language template 的话,这个 data 接口符合 source synchronous--》 center aligned --》 DDR 的模板

其中参数

dv_bre = dv_bfe = 1.3ns

dv_are = dv_afe = (1/2 period - 1.9)ns

所以约束里的

-max 值是(1/2 period - 1.3)

-min 值是(1/2 period - 1.9)

Language template在 vivado 图形界面 tools 菜单里。

关于 template 的介绍,可以先学习 inputdelay/output delay 的理论基础,结合实践琢磨一下,这套 template 使用的方法还是有点巧妙的

经验是通过时序图对比,找到最匹配的 template,确定里面对应参数的值,套用 template里面的约束模板就可以。

可以找出这个 source synchronous --》 centeraligned --》 DDR 模板,看里面的时序图跟用户手册里的时序图对比下

时序图里没有画出 data 有效数据跟无效数据(就是阴影部分)的范围,但 tFRAME 的值之所以是 1.3~1.9,就是因为 data 有有效数据跟无效数据范围的原因,把时序图的有效数据和无效数据范围画出来,就容易跟 template 里的时序图进行匹配了。

原文标题:本周一问 | Select io 解串行数据, 时序约束不通过问题

文章出处:【微信公众号:XILINX技术社区】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分