RGMII的时序约束实例

RGMII接口:

https://blog.csdn.net/kemi450/article/details/91388581

RGMII接口的约束:

这里,已125MHz时钟为例,配置PHY使时钟和数据相移90°。


接收端


  1. 创建输入时钟和虚拟时钟。其中,虚拟时钟用以描述输入延时。

    create_clock -name {rgmii_rxclk} -period 8.000 -waveform { 2 6 } [get_ports {rgmii_rxclk}]
    create_clock -name {rgmii_rxclk_virtual} -period 8.000

  2. 约束输入延迟。T_{InputDelay}=T_{data}+T_{CO}-T_{ClockSkew}。在这里,由于数据和时钟的走线一样,因此其延迟近乎一样。
    set_input_delay -clock  [get_clocks rgmii_rxclk_virtual] -max 0.5 [get_ports “rgmii_rxd* rgmii_rxctl”] -add_delay
    set_input_delay -clock  [get_clocks rgmii_rxclk_virtual] -min -0.5 [get_ports “rgmii_rxd* rgmii_rxctl”] -add_delay

  3. 设置非关联路径。
    set_false_path -fall_from [get_clocks rgmii_rxclk_virtual] -rise_to [get_clocks rgmii_rxclk] -setup
    set_false_path -rise_from [get_clocks rgmii_rxclk_virtual] -fall_to [get_clocks rgmii_rxclk] -setup
    set_false_path -fall_from [get_clocks rgmii_rxclk_virtual] -fall_to [get_clocks rgmii_rxclk] -hold
    set_false_path -rise_from [get_clocks rgmii_rxclk_virtual] -rise_to [get_clocksrgmii_rxclk] -hold


发送端


  1. 创建发送时钟。这里,由锁相环产生125MHz的时钟,由c0输出。
    create_generated_clock -name rgmii_txclk -source [get_clocks {fpga_pll_inst|altpll_component|pll|clk[0]}] \
    [get_ports {rgmii_txclk}] -phase 90

  2. 约束输出延迟。T_{OutputDelay}=T_{data}+T_{setup}-T_{ClockSkew}T_{OutputDelay}=T_{data}-T_{hold}-T_{ClockSkew}。同理,时钟延迟和数据延迟一致。
    set_output_delay -clock rgmii_txclk -max  1.0 [get_ports "rgmii_txd* rgmii_txctl"] -add_delay
    set_output_delay -clock rgmii_txclk -max  1.0 [get_ports "rgmii_txd* rgmii_txctl"] -clock_fall -add_delay
    set_output_delay -clock rgmii_txclk -min -0.8 [get_ports "rgmii_txd* rgmii_txctl"] -add_delay
    set_output_delay -clock rgmii_txclk -min -0.8 [get_ports "rgmii_txd* rgmii_txctl"] -clock_fall -add_delay

  3. 设置非关联路径。
    set_false_path -fall_from [get_clocks {fpga_pll_inst|altpll_component|pll|clk[0]}] -rise_to [get_clocks rgmii_txclk] -setup
    set_false_path -rise_from [get_clocks {fpga_pll_inst|altpll_component|pll|clk[0]}] -fall_to [get_clocks rgmii_txclk] -setup
    set_false_path -fall_from [get_clocks {fpga_pll_inst|altpll_component|pll|clk[0]}] -fall_to [get_clocks rgmii_txclk] -hold
    set_false_path -rise_from [get_clocks {fpga_pll_inst|altpll_component|pll|clk[0]}] -rise_to [get_clocks rgmii_txclk] -hold

  4. 时钟输出最好用DDIO或DDR输出。

  • 3
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值