0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Versal PCIe仿真例子工程介绍

XILINX开发者社区 来源:XILINX开发者社区 作者:Iris Yang 2022-06-08 15:30 次阅读
本文作者:赛灵思工程师 Iris Yang

PCIe 仿真需要Endpoint 模型和Root Port 模型协同工作。用户一般可以采用购买BFM/VIP 来模拟对端模型也可以自己设计对端模型,更简便的方法则是使用Xilinx 提供的模型 (Xilinx Root Port model) 。

仿真例子工程介绍

Versal 的PCIe 仿真和VU/VU+ 系列有些不一样,在endpoint 模式下,会有两种类型的example design, 默认的例子 是BMD 模式,(以前的器件默认的模式是PIO 模式 )在生成IP 后, 可以通过设置下面参数来切换产生的例子工程。

CONFIG.bmd_pio_mode {false}

用户仿真的例子一般有两个部分:

1. Root Port 模型,这个是模拟了RP 的产生config 读写,读写memory 空间并负责对收回来的数据进行检查。

2. Endpoint 用户代码部分,负责对收到的请求进行回复并且发起读写,中断请求。

在不同的测试间切换:

sample_tests.vh 定义了不同的测试名字,

sample_smoke_test0:

确认device/vender ID,运行BMD test (如果是BMD mode)

sample_smoke_test1:

确认device/vender ID,确认比较completion 数据。

pio_writeReadBack_test0 :

RP 模型会对每一个BAR发起一次写操作,再发起一次读操作,EP 收到后会发出CPLD。PR模型会对收到的CPLD 进行检查。RP 模型可以往EP 的特定位置写特定的值使得EP发起读写或者中断。

如果要在不同的测试间切换, 可以 TESTNAME 参数,比如:

demo_tb.exe-gui -view wave.wcfg -wdb wave_isim -tclbatch isim_cmd.tcl -testplusarg TESTNAME=sample_smoke_test0

修改仿真例子:

修改提供的 example 代码可以得到自己想要的测试。

如果需要修改 Sample_smoke_test0/1 中 ROOT PORT 对自己的设置, 可以直接修改 Sample_tests.vh 下面的代码,比如下面的代码实现的是读取地址1 往地址1里面写7 再读出来的过程,实现的是bus master /memory /IO 的使能。请注意这里的地址是DW Address , 也就是这个地址1 实际上是地址4 (byte address) 也就是协议固定的command register。

d5fddd0e-e652-11ec-ba43-dac502259ad0.jpg

可以复制以上代码 修改地址数据和byte enable 来实现对不同寄存器的操作。

如果需要修改对于EP侧 配置寄存器的直接控制,可以修改下面的代码,填入不同的地址实现不同寄存器的读写。

d66f38f0-e652-11ec-ba43-dac502259ad0.jpg

如果使用其他的分支,修改的方式类似。

RP 模型还提供了丰富的功能来实现对PCIe EP 配置空间的操作和memory 的读写操作。这些操作大部分都用通过一些task 在pci_exp_usrapp_tx / pci_exp_usrapp_rx 中实现。比如下面的 BAR_PROGRAM 任务 就是把对BAR 的读写以及控制的过程实现了一遍。

由于BAR 读写是所有memory 请求的基础,大部分的测试都会用到,所以一般就可以直接修改这个task 来丰富测试的内容。比如可以直接在这个 task 内部 ,复制下面的语句, 把地址修改为自己需要的配置地址来实现对其他配置寄存器的操作。最常见的修改就是修改下面的语句把 32‘h00000003 修改为32‘h00000007 使得 bus master 被打开。这样 EP 就具备了发起读写操作的能力。需要修改其他寄存器也是一样的道理, 请注意这里的地址区别与上面的DW address 而是byte address。(04 表示command register)

d6956ef8-e652-11ec-ba43-dac502259ad0.jpg

其他的修改也是类似。

原文标题:开发者分享|Versal PCIe Example Design 仿真技巧 1

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    71

    文章

    2163

    浏览量

    120975
  • 仿真
    +关注

    关注

    50

    文章

    4036

    浏览量

    133395
  • PCIe
    +关注

    关注

    15

    文章

    1217

    浏览量

    82424
  • Versal
    +关注

    关注

    1

    文章

    152

    浏览量

    7644

原文标题:开发者分享|Versal PCIe Example Design 仿真技巧 1

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PCIe 5.0设计面临的挑战以及仿真案例

    本文主要给大家分享一下PCIe5.0的发展历程、以及在设计、仿真中一些挑战和如何进行仿真
    的头像 发表于 02-03 10:16 5728次阅读
    <b class='flag-5'>PCIe</b> 5.0设计面临的挑战以及<b class='flag-5'>仿真</b>案例

    是否采用 Versal?为什么升级到 Versal

    在探讨为什么要升级到 Versal ACAP 时,必须首先认识到所有硬 IP 的价值,包括存储控制器、PCIe®、多速率以太网和片上可编程网络( NoC )等常用基础设施的价值,它可以减少对灵活应变的引擎或可编程逻辑的路由需求。
    的头像 发表于 10-11 11:19 2615次阅读

    PCIe引脚定义和PCIe协议层介绍

    本文我们将向大家介绍PCIe引脚定义以及PCIe协议层。
    发表于 09-26 11:39 1.6w次阅读
    <b class='flag-5'>PCIe</b>引脚定义和<b class='flag-5'>PCIe</b>协议层<b class='flag-5'>介绍</b>

    AMD Versal系列CIPS IP核建立示例工程

    接着上一篇“AMD Versal系列CIPS IP核介绍”文章来进一步讲解如何来建立CIPS IP核示例工程
    的头像 发表于 12-05 13:34 624次阅读
    AMD <b class='flag-5'>Versal</b>系列CIPS IP核建立示例<b class='flag-5'>工程</b>

    【ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍(2)

    【ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍,以及Versal 芯片开发流程的简介。
    的头像 发表于 03-07 16:03 960次阅读
    【ALINX 技术分享】AMD <b class='flag-5'>Versal</b> AI Edge 自适应计算加速平台之 <b class='flag-5'>Versal</b> <b class='flag-5'>介绍</b>(2)

    proteus仿真MCS-51的一百个例子

    proteus仿真MCS-51的一百个例子
    发表于 07-28 10:27 191次下载
    proteus<b class='flag-5'>仿真</b>MCS-51的一百个<b class='flag-5'>例子</b>

    PCIE DMA例子

    Xilinx FPGA工程例子源码:PCIE DMA例子
    发表于 06-07 14:13 52次下载

    利用ORAN IP的例子工程来做仿真

    PTP的用例都囊括了。该例子工程主要用于做板上demo,具体后续上板操作方式,以及相关软件驱动,可以在下面这个AR里了解到详情。
    的头像 发表于 03-11 09:42 1502次阅读

    仿真例子工程介绍

    如果需要修改 Sample_smoke_test0/1 中 ROOT PORT 对自己的设置, 可以直接修改 Sample_tests.vh 下面的代码,比如下面的代码实现的是读取地址1 往地址1里面写7 再读出来的过程
    的头像 发表于 06-14 11:10 865次阅读

    Versal GTY仿真:初始化,复位和速率变更

    本篇博文侧重于提供 Versal GTY 仿真示例、演示 GTY 如何解复位以及如何执行速率变更。
    的头像 发表于 11-23 10:02 1152次阅读

    Versal CPM AXI Bridge模式的地址转换

    Versal 系列的 DMA axi bridge 模式可以在 PL 的 QDMA IP 或者在 CPM(The integrated block for PCIe Rev. 4.0
    的头像 发表于 05-10 09:47 1546次阅读
    <b class='flag-5'>Versal</b> CPM AXI Bridge模式的地址转换

    如何开启Versal的XilSEM功能

    本文介绍了如何开启Versal最基本的XilSEM功能。
    的头像 发表于 07-07 14:15 412次阅读
    如何开启<b class='flag-5'>Versal</b>的XilSEM功能

    如何加速PCIe仿真

      我们在进行PCIe RTL仿真时,由于PCIe ltssm协商过程比较复杂,导致PCIe ltssm进入L0状态所花费的时间比较长(大概在20~60分钟,因代码复杂度、服务器性能、
    的头像 发表于 08-17 09:42 1406次阅读
    如何加速<b class='flag-5'>PCIe</b><b class='flag-5'>仿真</b>

    AMD Versal™ Adaptive SoC CPM PCIE PIO EP设计CED示例

    本文可让开发者们看懂 AMD Vivado Design Tool 2023.2 中的“AMD Versal Adaptive SoC CPM PCIE PIO EP 设计”CED 示例。‍
    的头像 发表于 05-10 09:39 505次阅读
    AMD <b class='flag-5'>Versal</b>™ Adaptive SoC CPM <b class='flag-5'>PCIE</b> PIO EP设计CED示例

    AMD Versal自适应SoC CPM5 QDMA的Tandem PCIe启动流程介绍

    本文将从硬件设计和驱动使用两个方面介绍基于 CPM5 QDMA 的 AMD Versal 自适应 SoC 的 Tandem 设计和启动流程。
    的头像 发表于 09-18 10:07 410次阅读
    AMD <b class='flag-5'>Versal</b>自适应SoC CPM5 QDMA的Tandem <b class='flag-5'>PCIe</b>启动流程<b class='flag-5'>介绍</b>