RGMII时序约束

2023-11-10

RGMII是以太网MAC连接PHY的一种接口,可以实现10/100/1000M网络速度,在FPGA系统中比较常见。RGMII在1000M模式下是双沿采样,而且要求采样端是center-aligned,所以其时序约束是比较复杂的。

下面分TX和RX来描述其时序约束应该怎么写。

TX:

通常的做法是使用ODDR实现双沿采样时序,如下图示。时序约束的重点是搞清楚有效的时序分析关系。对setup来说,分析上升沿到上升沿(RR),以及下降沿到下降沿(FF);对hold来说,分析上升沿到下降沿(RF),以及下降沿到上升沿(FR)。

TX的时序约束脚本:

##---------------------- TX ----------------------##
## clk_0 and clk_90 are derived clocks from PLL, so no need to re-define them. 
## create a forward captrue clock
create_generated_clock -name rgmii_txc -source [get_pins ${rgmii_oddr_hier}u_ODDRE1_rgmii_txc/C] -multiply_by 1 [get_ports $src_rgmii_txc]

## TX: *_TXD and *_TX_CTL are synchronous to *_TXC, which is a dual-edge clock.
##     Desired serup launch and capture relationship: RR and FF.
##     Desired hold launch and capture relationship: RF and FR. 
set_output_delay  -clock rgmii_txc  -max  1.0 [get_ports PAD_RGMII_TX_CTL]
set_output_delay  -clock rgmii_txc  -min -0.8 [get_ports PAD_RGMII_TX_CTL]
set_output_delay  -clock rgmii_txc  -max  1.0 [get_ports PAD_RGMII_TX_CTL] -clock_fall -add_delay
set_output_delay  -clock rgmii_txc  -min -0.8 [get_ports PAD_RGMII_TX_CTL] -clock_fall -add_delay
set_output_delay  -clock rgmii_txc  -max  1.0 [get_ports PAD_RGMII_TXD*]
set_output_delay  -clock rgmii_txc  -min -0.8 [get_ports PAD_RGMII_TXD*]
set_output_delay  -clock rgmii_txc  -max  1.0 [get_ports PAD_RGMII_TXD*] -clock_fall -add_delay
set_output_delay  -clock rgmii_txc  -min -0.8 [get_ports PAD_RGMII_TXD*] -clock_fall -add_delay

 

RX:

使用IDDR+一级FF做双沿采样,如下图示。对setup来说,分析上升沿到上升沿(RR),以及下降沿到下降沿(FF);对hold来说,分析上升沿到下降沿(RF),以及下降沿到上升沿(FR)。

 RX的时序约束脚本:

##---------------------- RX ----------------------##
## create a virtual launch clock outside of FPGA
create_clock -name vir_rgmii_rxc    -period [expr $GMAC_RX_PERIOD]
## create capture clock on RXC PAD, which is +90 degrees shifted relative to launch clock
create_clock -name rgmii_rxc        -period [expr $GMAC_RX_PERIOD]   [get_ports $src_rgmii_rxc]  -waveform {2 6}

## RX: *_RXD and *_RX_CTL are synchronous to *_RXC, which is a dual-edge clock.
##     Desired setup launch and capture relationship: RR and FF.
##     Desired hold launch and capture relationship: RF and FR. 
set_input_delay   -clock vir_rgmii_rxc  -max  0.5 [get_ports PAD_RGMII_RX_CTL]
set_input_delay   -clock vir_rgmii_rxc  -min -0.5 [get_ports PAD_RGMII_RX_CTL]
set_input_delay   -clock vir_rgmii_rxc  -max  0.5 [get_ports PAD_RGMII_RX_CTL] -clock_fall -add_delay
set_input_delay   -clock vir_rgmii_rxc  -min -0.5 [get_ports PAD_RGMII_RX_CTL] -clock_fall -add_delay
set_input_delay   -clock vir_rgmii_rxc  -max  0.5 [get_ports PAD_RGMII_RXD*]
set_input_delay   -clock vir_rgmii_rxc  -min -0.5 [get_ports PAD_RGMII_RXD*]
set_input_delay   -clock vir_rgmii_rxc  -max  0.5 [get_ports PAD_RGMII_RXD*] -clock_fall -add_delay
set_input_delay   -clock vir_rgmii_rxc  -min -0.5 [get_ports PAD_RGMII_RXD*] -clock_fall -add_delay

set_false_path  -rise_from [get_clocks vir_rgmii_rxc] -fall_to [get_clocks rgmii_rxc] -setup
set_false_path  -fall_from [get_clocks vir_rgmii_rxc] -rise_to [get_clocks rgmii_rxc] -setup
set_false_path  -rise_from [get_clocks vir_rgmii_rxc] -rise_to [get_clocks rgmii_rxc] -hold
set_false_path  -fall_from [get_clocks vir_rgmii_rxc] -fall_to [get_clocks rgmii_rxc] -hold

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RGMII时序约束 的相关文章

  • DDR3学习总结(一)

    简介 DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器 在计算机及嵌入式产品中得到广泛应用 特别是应用在涉及到大量数据交互的场合 比如电脑的内存条 对DDR3的读写操作大都借助IP核来完成 本次实验将采用 Xilinx公司
  • 各种FIFO硬件设计(FIFO概念、异步、同步、非2次幂深度FIFO)

    文章目录 一 FIFO概述 二 FIFO分类 三 FIFO重要信号与参数 3 1 信号 3 2 参数 3 2 1 data depth的确定 四 FIFO存储原理 五 同步FIFO 5 1 空满信号判断 5 2 同步FIFO源码 5 3 测
  • 数字芯片流程

    芯片设计分为前端设计和后端设计 前端设计 逻辑设计 和后端设计 物理设计 并没有同意严格的界限 这个过程中涉及到了与工艺有关的设计就是后端设计 一 需求分析 产品需要解决的问题 预测3 5年的趋向和走势 确保前瞻性 确保芯片是有卖点的 客户
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • 紫光同创 FPGA 开发跳坑指南(三)—— 联合 Modelsim 仿真

    Modelsim 是 FPGA 开发中重要的 EDA 设计仿真工具 主要用于验证数字电路设计是否正确 紫光 Pango Design Suite 开发套件支持联合 Modelsim 仿真 这里作简要的介绍 添加仿真库 方法一 打开 Pang
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • FPGA的基本设计流程

    FPGA开发主要包括系统设计 设计输入 功能仿真 综合优化 综合后仿真 实现与布局布线 时序方针与验证 板级方针与验证 芯片编程与调试等9个部分 如下图所示 1 电路设计 在系统设计之前 首先要进行的是方案论证 系统设计和FPGA芯片选择等
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 数码管电子时钟

    文章目录 前言 一 回顾数码管 二 任务描述 三 系统框图 四 模块调用 五 模块原理图 六 工程源码 6 2 时钟计数模块代码 6 2 数码管驱动模块代码 6 3 顶层模块代码 七 仿真测试 7 1 测试代码 7 2 仿真结果 八 管脚信
  • FIFO读写控制

    如果在两个模块之间传输数据 两个模块之间的处理速率不同 会导致采集数据的遗漏或错误 在他们之间加一个数据缓存器 所有数据先经过缓存器缓存 再输入数据接送模块 创建两个模块 一个 作为发送模块 一个作为接受模块 发送模块检测到 fifo为空开
  • 【FPGA】面试问题及答案整理合集

    面试问题及答案整理合集 1 硬件描述语言和软件编程语言的区别 2 FPGA选型问题 3 建立时间和保持时间问题 3 亚稳态问题 4 竞争和冒险问题 5 乒乓操作问题 6 同步和异步逻辑电路 7 同步复位和异步复位 8 MOORE 与 MEE
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • 【FPGA】通俗理解从VGA显示到HDMI显示

    注 大部分参考内容来自 征途Pro FPGA Verilog开发实战指南 基于Altera EP4CE10 2021 7 10 上 贴个下载地址 野火FPGA Altera EP4CE10征途开发板 核心板 野火产品资料下载中心 文档 hd
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求

随机推荐

  • STM32系列(HAL库)——单通道ADC转换

    本篇演示使用cubeMX配置STM32单通道ADC 话不多说 开始正文 一 前期准备 1 硬件 STM32C8T6最小系统板 USB TTL串口模块 ST Link下载器 2 软件 keil5 IDE cubeMX 二 cubeMX配置 1
  • 139. 单词拆分(DP)

    139 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典 请你判断是否可以利用字典中出现的单词拼接出 s 注意 不要求字典中出现的单词全部都使用 并且字典中的单词可以重复使用 示例 1 输入 s leetcode
  • 折半查找(C语言)

    折半查找 设定查找范围的下限low 上限high 由此确定查找范围的中间位置mid 中间位置的值等于待查的值 查找成功 中间位置的值小于待查的值 low mid 1 中间位置的值大于待查的值 high mid 1 直到low gt high
  • java基本语法 上

    目录 关键字与保留字 关键字 keyword 的定义和特点 保留字 标识符 Java中的名称命名规范 变量 变量的定义 变量的分类 整数类型 byte short int long 浮点类型 float double 字符类型 char 布
  • 函数与对象关系

    函数是对象 通过下面代码就能验证 var fn function console log fn instanceof Object true 函数跟对象之间的关系比较复杂 首先 所有对象都是通过函数创建的 有些人可能反驳 不对因为 var
  • AntD 可编辑行表格

    本地数据代码模板自用 官网例子改改 编辑行的自定义表格 import React useState from react import Table Input InputNumber Popconfirm Form Typography D
  • Umijs组件的初次应用

    在Umijs组件中我们不像vue那样可以看到组件的路径 在umijs刚刚搭建完成我们看不到组件的路径 所以我们要手动进行一些小小的改动 就可以看到了 一 应用前的准备 1 在当前项目文件路径下的终端输入 npm umi g page log
  • C 求整数n的二进制有多少个1

    首先 整数 分为正整数和负数 那么解题的时候就要注意这个正 负 提供了3中解题方案 第一种 int getBinary1 unsigned int n int count 0 while n if n 2 1 count n 2 retur
  • 说了那么多,到底什么是「神经搜索」?

    从人脑神经网络到深度学习神经网络 来自 Jina AI 的 Jack 将带大家从 0 到 1 认识 搜索 及 神经搜索 什么是神经搜索 它与普通搜索有什么区别 它能解决哪些问题 又有哪些优势和劣势 观看本期 Jina AI 小科普 在 Ja
  • SQL Server 问题集

    问题一 执行drop database xxx 反馈结果 无法对 数据库 xxx 执行 删除 因为它正用于复制 解决方案 只需要执行 sp removedbreplication XXX 然后再执行drop database xxx 原因分
  • vs2022提示函数不安全等问题

    我们在使用VS编译器编写C C 代码源程序的时候 发现在里面用scanf函数会编译出错 如下图所示 这个提示我们有两种方案可以解决 一是可以把scanf函数替换为 scanf s 如下 此时编译就会通过 但是在其他编译器里没有这个函数 因此
  • 【Figma技巧】Figma中快速制作斜线阴影的三种方法

    想要实现的效果 方法一 安装Hero Patterns插件 安装地址 https www figma com community plugin 743134103711120154 Hero Patterns for Figma 缺点 生成
  • openldap介绍和使用

    openldap介绍和使用 为什么会有本文 早期 公司是没有统一认证这个东西的 所以各自玩各自的 于是 confluence一个用户体系 gitlab一个用户体系 Jenkins一个用户体系等等 开发中要用到的开源软件数不胜数 每个软件都要
  • 齐纳二极管

    齐纳二极管 zener diodes 的主要作用就是当作一种电压调整器 QLCO A146提供稳定的参考电压 可应用在电源供应器 电压表与其他的仪器中 在本节中 你将会学习到齐纳二极管在适当的工作条件下 如何维持一个接近定值的直流电压 你将
  • HCL网络实操之ftp登录

    路由器配置ip in g0 0 ip address 192 168 56 200 24 路由器开启ftp服务 ftp server enable 创建用户 设置用户密码 设置权限 创建用户 local user cmoc 设置用户密码 p
  • JCreator 配置与用法

    对于一个web项目 里面由几个比较来说相对的标准目录 CSS 用来存放web项目中所使用到的样式文件 images 用来存放web项目中所使用的装饰图片 WEB INF 用来表示是一个jsp类型的项目 并且符合J2EE标准 inc 或者 i
  • 2023通信工程专业毕设题目大全

    文章目录 1前言 2 如何选题 3 通信工程选题方向 3 1 移动通信方向 3 2 嵌入式开发方向 3 3 人工智能方向 3 4 物联网方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最
  • redis后端启动及关闭

    本文笔记为传智教程视频截图整理 redis前端启动 无法部署集群
  • 浅谈 malloc 函数在单片机上的应用

    聊聊 malloc函数 在单片机程序设计中怎么使用 目录 前言 一 malloc 函数简介 二 malloc 之于单片机 2 1 malloc 函数申请的内存在哪里 2 2 用与不用malloc的区别 三 malloc可能遇到的问题 3 1
  • RGMII时序约束

    RGMII是以太网MAC连接PHY的一种接口 可以实现10 100 1000M网络速度 在FPGA系统中比较常见 RGMII在1000M模式下是双沿采样 而且要求采样端是center aligned 所以其时序约束是比较复杂的 下面分TX和