ibert测试说明

2024-06-05 07:48
文章标签 说明 测试 ibert

本文主要是介绍ibert测试说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  xilinx对于高速收发接口gth有专门的验证方案ibert,FPGA的引脚按bank划分,gth类似不过是按Quad来算,每个Quad的结构如下:

一共有4组收发对。每个Qual和管脚的位置都是绑定的,所以在例化ip核时只要指定Quad的位置即可,不需要再对管脚做约束了。

以UV440为例:可以整理出对应的位置表格

BANKlane0lane1lane2lane3
Bank229X0Y40X0Y41X0Y42X0Y43
Bank230X0Y44X0Y45X0Y46X0Y47
Bank231X0Y48X0Y49X0Y50X0Y51
Bank232X0Y52X0Y53X0Y54X0Y55
Bank219X0Y0X0Y1X0Y2X0Y3
Bank220X0Y4X0Y5X0Y6X0Y7
Bank221X0Y8X0Y9X0Y10X0Y11
Bank224X0Y20X0Y21X0Y22X0Y23
Bank225X0Y24X0Y25X0Y26X0Y27
Bank226X0Y28X0Y29X0Y30X0Y31
Bank227X0Y32X0Y33X0Y34X0Y35

Ibert配置介绍:

新建一个临时Temp工程:芯片选择

在ip Catalog搜索ibert:

根据连接进行配置GTH的选项:

选择一个系统使用,一般选择板卡上的一个全局时钟即可:

生成Example:

会在指定目录生成一个新的示例工程:

直接点生成bit即可:

  板卡上电,设置对应的时钟频率,(此例中:参考时钟及系统时钟)下载bit到FPGA,

使用FPGA vivado扫描Hardware,

set xil_newLinks [list]
set xil_newLink [create_hw_sio_link -description {Link 1} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y32/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y20/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                                
set xil_newLink [create_hw_sio_link -description {Link 2} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y33/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y21/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                                             
set xil_newLink [create_hw_sio_link -description {Link 3} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y34/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y22/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                               
set xil_newLink [create_hw_sio_link -description {Link 4} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y35/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y23/RX] 0] ]
lappend xil_newLinks $xil_newLinkset xil_newLink [create_hw_sio_link -description {Link 5} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y20/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y32/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                                
set xil_newLink [create_hw_sio_link -description {Link 6} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y21/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y33/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                                             
set xil_newLink [create_hw_sio_link -description {Link 7} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y22/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y34/RX] 0] ]
lappend xil_newLinks $xil_newLink                                                                                                                                                                                                               
set xil_newLink [create_hw_sio_link -description {Link 8} [lindex [get_hw_sio_txs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/2_1_0_1/IBERT/Quad_224/MGT_X0Y23/TX] 0] [lindex [get_hw_sio_rxs localhost:3121/xilinx_tcf/Digilent/210251AC2FD0/0_1_0_1/IBERT/Quad_227/MGT_X0Y35/RX] 0] ]
lappend xil_newLinks $xil_newLinkset xil_newLinkGroup [create_hw_sio_linkgroup -description {Link Group 0} [get_hw_sio_links $xil_newLinks]]
unset xil_newLinks
……

再手动添加link,link有时需要刷新(先切换到近端或远端,这些是自环选项,就是tx和rx在FPGA内部已经连接在一起了,再切换到none:外部连接的方式)才能正确显示成绿色(添加及刷新link可以在Tcl Console看到对应的脚本,这个脚本可以保存成文件,方便下次操作)。

看link时首先看PLL,PLL若没有锁住一般是频率设置不对,需要检查频率设置,PLL锁住后一般link都没有问题,只要link的rx能收到数据,不管是哪个quad的哪路tx lane发送的,都会正常显示绿色(应该是因为每个lane的伪随机数序列都是一样的),serdes的收发两端是不一定需要同源时钟的(只要数据lane对接上即可),非同源时钟只要收发两端的频率精度控制在一定范围即可,时钟是通过CDR电路从数据中恢复出来的。

双击ip核,点击Documentation->Product Guide可以看到ibert的使用说明文档。

这篇关于ibert测试说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032490

相关文章

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以