• 搜索

  • 移动端

    APP下载
  • 学习中心

PCIe IP之UVM验证实战-知识问答精华汇总-2024
2024-03-08 11:52:28633浏览
知识问答,干货

Q:CCIX OVER CXL 有什么特点呢?

A:CXL由英特尔主导,CCIX由赛灵思主导,OpenCAPI由IBM主导,Gen-Z由慧与主导 IBM牵头的OpenCAPI,ARM为代表支持的CCIX,AMD等支持的GenZ和Nvidia自行提出的Nvlink等等多种协议, ,可谓一个乱字了得 英特尔牵头成立了名为CXL(Compute Express Link)标准组织,以实现CPU与诸如GPU、FPGA等(数据中心)专用加速芯片间的快速互联,推动下一代数据中心的性能. 与CXL相似的标准组织有CCIX、OpenCAPI、Gen-Z Consortium(Gen-Z),这些标准组织也早在2016年已相继成立,其中CCIX与CXL同为以PCIe标准为底层连接协议。就各协议现有成员来看,包括AMD、IBM、Xilinx、华为均有参与到各协议中,英伟达也有自家的NVLink,英特尔作为服务器CPU的主要玩家,却并未在此前相关标准协议初创名单之列,即使OpenCAPI联盟也曾表示,欢迎英特尔的加入。 时隔三年,英特尔并未加入此前已有标准组织,而是选择自己拉来微软、阿里、思科、戴尔EMC、Facebook、谷歌、惠普、华为八家巨头公司成立了CXL联盟。英特尔数据中心集团执行副总裁兼总经理Navin Shenoy在其博文中表示,“虽然目前存在其他互连协议,但CXL在提供CPU/设备内存一致性、降低设备复杂性,以及在单一技术中集成行业标准的物理和电气接口方面有独特之处。”

联网需要更高的算力和互联 自进入互联网时代,信息被视为较物质、能源更为重要的社会资源; 自进入物联网时代,数据被视为较物质、能源,甚至信息更为重要的社会资源。 因此,各国都极为重视物联网相关网络建设、平台建设等。其中,协议标准由于拥有特殊的地位,成为国内外巨头厂商争夺的又一高地。 无论此前的CCIX、OpenCAPI、Gen-Z Consortium,还是近期的CXL,这些协议都是为了助力现在机器学习、云计算等相关应用实现跨CPU与数据中心实现高速互联、“共享”内存,降低软件堆栈复杂性和整体系统的成本,从而使开发人员无需考虑加速器中的内存管理硬件。 CXL同样是一个开源的协议标准,除了英特尔之外,目前初步阵容还包括微软、阿里、思科、戴尔EMC、Facebook、谷歌、惠普、华为。

Q:读请求是可以超过MRRS,直接4KB的对吗

A:1、read是没有CAP的,receiver是不会限制read的szie的,即使你MRRS是256,一样可以接受处理4KB的Read。
2、那么回CPLD会按RCB拆包,但拆的组合有很多种,至于那种组合是设计实现的issue,但是payload的大小一定是小于等于MPS的
3、RCB拆包不是说包只有RCB大小,RCB是一种addeess aligned的概念,所以拆出来

Q:我这边马上就要在fpga上做验证,把xilinx的controller替换掉,希望老师能提前指导下

A:1.xinlinx的phy现在有没有生成?
2.fpga频率目前跑gen1
3.controller配置为DF/DW?
4.xilinx phy gen1为125M 16bit,和controller连接需要做一个位宽转换逻辑
5.fpga时钟树需要打平,去掉mux

Q:你们在把PCIE_subsys集成到SoC上的时候,连线是怎么连的呢?手动?自己写脚本?还是emacs啊?

A:这些都不用,我们的设计是SV,接口是interface,接口少,直接就连接了,人为。

「sysclk:生成的rtl顶层也是sv吧。我看到C家是。」
- - - - - - - - - - - - - - -
顶层肯定是sv,只是不是很懂为什么设计用sv写之后,接口信号会少,interface不会因为语言不通就减少吧?

我们的整个设计都是SV,我们公司,模块内部没有少,只不过接口少了

但是用SV做设计就是另外一回事情了 sv做设计还是挺方便的

Q:不知道有没有那种整个soc验证环境就是基于uvm的 就像你说的 带着cpu感觉就不需要激励从外边给了 所以感觉像ip这种是不是更适合uvm 不过不确定有没有那种soc的验证环境也是uvm的


A:soc (rc)你h2d方向走指令集过cmn到pcie,对端还是需要一个UVM的PCIE VIP的,sv和c 指令之间同步可以用寄存器

dpi用c,主要软件可以无缝的用用例。还有就是顶层大了。可以不用编译,直接run

Q:ep外面是要加一层Ha吧?除了加外面这层,其他就是用snps那工具生产code吗?

A:还是有一部分内容,比如我们讲链路训练初始化的时候,要使能链路训练ltssm_enable,这个使能需要外围模块能控制,并且你控制的时候,我要通过芯片的维护端口可以更改ip的一些配置,包含phy固件

Q:老师我想请教一个问题,pcie是不是有乱序的情况,我在网上看到Xilinx的7系PCIe IP有乱序的问题,xdma的pcie做了很大的一个缓存来解决乱序的问题

A:pcie有保序的要求,ip内部radm模块会做处理

Q:请教一个问题,EP作为DUT,通过elbi2apb module访问外部寄存器,vip发包(需要64bit data),查了一下svt_pcie_driver_app_cfg_request_sequence 只能发32bit的,有其他相应sequence可以发64bit data ?还是就不可以发64bit?@March 

A: elbi接口数据就是32bit,访问到elbi接口的请求包数据大小必须为32bit,还有一个cfg包大小就是1个dw,你这个模式是把cfg包路由到elbi,我们的配置是命中bar0走elbi.

Q:请教一个问题,EP在detect的时候TS1发出的 datarate只支持GEN1, 最终EP 和RC也training到GEN1 ,但此时发现 RC target speed 也切到GEN1 ,这个过程是哪一部分会修改到RC的target speed吗?

A:你是说rc协商到gen1,谁去更改rc controller寄存器的值

Q:目标为16G,请问老师,LTSSM为什么跳过了5G,直接进入8G?谢谢!

A:ip侧有个配置,16G都是从2.5~8~16的,这个于速率有关系,8/16G需要EQ

Q:有两个问题想请教下,
1.PCIe device seqr不用传到相应的PCIe driver中去吗?还是这部分加密了,你没有画出来
2.service seqr can refresh configuration of the agent,如何实现啊?跟在tc中进行单独对各层次configuration中变量的设置有什么区别?

A:1.pcie_agent已经最好了,我们就研究了agent提供的接口sequencer,2.tc里面可以做,没有区别的

Q:没记错的话,代码实现是检测到pl_status.link_enable=1,dl_status.link_enble=1

A:仿真的时候,phy内部有个detect_rx的信号我们force了, 你这个是使能链路训练,状态机在detect就是靠电压检测设备,仿真中我们force了phy检测设备的信号,silicon phy内部有检测设备的电路

Q: 老师,rtl能追到有哪些条件会触发 aer correctable error 里面的receiver error status置1吗?

A:可以的,cdm内部,有个err_reg模块

Q:老师好,请问一下,config0包和config1包的区别,与type1和tpye0有什么关系

A: 没有区别,一个是寄存器的头格式,一个是pcie发送的包类型.

Q:1.老师,想请问一下,svt_pcie_single_port_device_agenthdl.sv与svt_pcie_single_port_device.sv区别是什么啊?
我知道老师上课讲了svt_pcie_single_port_device.sv中定义了svt_pcie_single_port_device_agenthdl,那为什么还要svt_pcie_single_port_device_agenthdl.sv这个文件?
2.我看svt_pcie_single_port_device_agenthdl.svinclude了宏'SVC_SOURCE_MAP_SUITE_MODEL_MODULE_SV,找到定义它的地方,如下图所示,请问这个是什么意思呢?

A:pcie_vip agent就是uvm的一个壳子,其内部最后调用的pcie_hdl_model

hdl_modle实现的是真正协议的内容,估计就是和verilg实现一样

你看的这个宏,需要找到定义它的地方

Q:请问老师,可以同时使用pcie bridge的axi slave口和master口吗?比如对端正在发数据给本端( bridge master口)的过程中,本端也主动用bridge的slave口去读对端数据。这么做会有什么影响吗?

A:没有任何影响,是不同的通路,想象下这种场景,host访问EP设备pcie的应用层逻辑(axi_master接口), ep设备应用层逻辑通过pcie(axi_slave)访问host侧数据,这种情况是存在的,并且软件也不可控制

Q:老师。为啥要调用虚拟sequencer。而不是直接调用sequencer呢?没看出有什么优势。

A: virtual_sq实现调度 uvm的东西,现在看vip的讲解有可能觉得没有用,但是后面内容有通过vir_seq访问环境组件就知道了,况且我感觉还便于集中管理

Q:老师请问下关于jtag口灌vcd 这个vcd是怎么生成的?vcd不是最外层pad上的变化吗?我理解的vcd是机台加载后直接作用在芯片pad上的 为啥和jtag关系?

A:我们和机台那边接口的包格式就是vcd,vcd波形,vcd波形 机台通过jtag灌到dut,vcd就是我们和机台交互的数据,你看下你们那边机台需要怎样的数据格式,还有WGL的格式文件,这个你要问机台那边接口数据

Q:PCIE RTL可以在fpga上验证吧?我的想法是ctrl层用PCIE的RTL,然后phy层用xilinx的pcie_phy IP。这样就可以在fpga上验证PCIE RTL了。

A:可以的

Q:老师好。RX/TX是phy层的信号,不需要暴露给应用层吧?pcie_ep是对接APP层的,不用把通信层的信号给到APP层吧?

A:是的,rx/tx是差分线连接其它设备的.但是要拉到芯片的top,通过pin出去

Q:Pcie ordering这东西一般怎么个验法,把读写一路force堵住?

A:这是一种,但是还是往应用上面靠,才能发现问题,比如信用配置不一样,读不能穿越写,就要靠用例check.,还有cpl无条件落地,信用有差别,就能构造堵住的场景

Q:pcie是一个已经验证过的东西,没有bug,我们之所以要学这个,主要是为了集成它到芯片上,确保在整个系统中正确工作是吧

A:是的

Q:完成包中,lower address[6:0]低俩bit是为了数据对界,其他bit有什么作用。(lower address[4:2]赋值为0,会造成返回完成保数据错误吗)

A: low address代码返回cpld包的mem地址,这个cpld携带数据的mem地址,设计要和这个规则保持一致

Q:RC给 EP发一个memory包的时候 首先经过outbound atu转一下地址 变成pci域的地址 ,然后tlp到达ep端首先和bar进行匹配 ,如果匹配成功,再经过inbound atu转一下,成为cpu域的地址 ,然后cpu对其进行存储读写

是这个意思吗 老师

A:可以这样,但是一般rc发出的包都是ep bar空间范围内的包,到ep在有需要可以用atu转

Q:老师您好,如果我初始link状态为gen4,x8情形下link成功,当通过配置寄存器修改为x1 lane宽时,这种场景下,设备进入低功耗状态时,检测电气IDLE,是检查1lane还是所有lane是否处于电气IDLE状态

A:更改链路宽度,会重新训练,没有使能的lane 会配置进入电器闲的tx_elecidle

Q:老师,请问,脚本生成pcie vip example,run完后,用verdi test_top.fsdb打开verdi后,不显示代码tree结构,也不显示代码。怎么解决的?

A:在vcs_build_options加入如下指令 –kdb -lca

Q:老师,ep dma给rc发 memory请求(read/write),tlp是怎么路由到rc的呢?rc内部不是没有bar与tlp中的地址映射吧,那rc怎么收这个包呢?

A: rc内部又mem base/limit 寄存器,收到包要在这个地址范围外

Q:老师,请问ep的dma要发outbound包读写rc的内存空间,ep dma的怎么知道rc这边的地址呢?

A:ep dma软件需要填写source/dest addr,地址需要软件申请,软件肯定知道

Q:PCIE测带宽有点困惑,比如存读,如果从第一个读为起始时间,最后一个CPLD回来作为结束时间,这么算下来的实际带宽是算双向还是单项呢

A:pcie带宽测试分为上行/下行/双向带宽,这个应该算双向,dma读/写可以视为单向

Q:市面上PCIE验证一般分四种
1、PCIE作为传输通路,做应用,比如AI,SSD ,加速卡这些,基于应用走PCIE包去验场景

2、验芯片集成,把关作用,买来的S家的IP,但是上面是挂的A家的CMM,这不同厂家之间,就需要验证把关。比如性能怎么样,连线上有没有bug,参数和RAM资源的最优value。还有一些自己做的小方案自研逻辑,比如MCTP方案,中断方案,SMMU配合的方案,等等等等

3、PCIE IP的自研,那就是一个个模块的验,处于这个层次的绝对对PCIE理解处于顶层了,不过国内能完全自研的控制器和PHY的几个手指能数出来

4、剥离部分自研,比如从UPCS开始剥离往上自研,从XADM/CLIENT开始往上做DATA CHUNKING,乱序优化的自研另外还有一点就是对验证人员的要求了,你能不能自己做个PCIE VIP出来,做这个对协议理解也是很透彻的。不管处于哪个境界,学无止境,不断学习的心态才能技术更好

Q:请问老师pcie5.0引入EIEOSQ的作用是什么?

A:我刚看了下EIEOSQ就是两个连续的EIEOS,The Electrical Idle Exit Ordered Set (EIEOS) is transmitted only when operating at speeds other than 2.5 GT/s. It is a low frequency pattern transmitted periodically to help ensure that receiver Electrical Idle exit circuitry can detect an exit from Electrical Idle. When using 128b/130b encoding, it is also used for Block Alignment as described,32G估计速率太高引入两个连续的EIEOS

Q:老师 . 电源D态只能用软件去配置来改变设备的电源状态吗 它可以像链路状态一样可以自己调节吗

还有链路状态除了自己自动调节外,可以用软件去配置吗

A: 有ASPM,ASPM叫做动态电源管理,不需要软件的介入,会根据链路空闲的情况,硬件自动切入低功耗

Q:老师,请教一个问题。link_training_enable这个信号在IP内部是沿触法还是电平触发呐?我在例化Ip的时候直接给这个信号置常1,相当于一上电就是1.这样会有影响吗?

A:app_ltssm_enable,高表示使能链路训练,低表示不使能,你不想配置其它寄存器,可以直接拉高,上电

Q:老师好,速度切换,gen1不能直接切到gen4,必须要gen1切到gen3,再由gen3切到gen4,为什么gen1不能直接切到gen4,老师注意到这个问题了吗

A: 正常链路训练过程中都是这种flow, 高速serdes需要EQ校准.

Q:请问pcie工作中,不断电,把一个卡拔了,插入另一个新的完全无关卡。此时rc这边操作流程是什么?它会自己直接重新训练吗?此时枚举软件会自动运行读到该新器件吗?

A:热插拔,不能自动了,需要系统rescan

Q:cap中TPH那个enable是只影响transmit一方么,不打开会影响receiver一方的收么?

A:我看了代码没有影响

Q:大家晚上好,有个疑问 pcie switch 是可能有多个配置空间吗 每个上下游端口都有一个配置空间用来记录 base和limit 还是一个配置空间记录多个base和limit?是前者的吗?每个端口都有一个自己的bar之类的?

A:一般做rp/dp的都是单pf,所以是前者

Q:pcie里面的dma传输结束后会发送一个中断给远端 这个中断地址 会不会经过本地和对端的iatu转换啊

A:atu cfg dma bypass

Q:在不做iatu bypass的前提下 本地pcie_dma发起一次写操作 这个这操作会不会先在本地做一次outbound转换再到对端做inbound转换啊 还是只有inbound

A: 看地址,在不在atu范围内,在都会

Q:老师,请教个问题,作为RC的时候,ATU模块可以disable掉吗?或者说,在什么情况下,可以disable掉ATU? Databook上,说ATU是optional的

A:不用atu,这个看应用,你可以代码里面有atu,如果应用有需求的时候,可以enable,代码可以实现它

Q:memory的request (从host过来,要经过RP,访问EP的配置空间), 必须要借助RP的ATU, 将memory request转成Type 0的messag请求么?

A:有,cfg包的转换atu也可以做,看实现,有些设计接口能直接发cfg,但是也可以通过atu

Q:请问一下,如果PCIe重传的话,有没有寄存器可以读到,发生了重传?

A:如果同req不超过4次,应该没有,不过translog上能看出来

Q:SFI中有一个OOB presence detect events,请问老师:

问题1:这个OOB是热插拔的一个element吗?还是一个统称?

问题2:利用prsnt2信号检测热插拔是属于OOB范畴吗?

问题3:热插拔除了out of band外,还有一个in-band的概念,那个又指什么?

A:1.presence是在位检测信号,2.prsnt2 4.0之前热插拔需要有,5.0需要确认下,3.outbound 就是attention button/MRL/指示灯 inbound就是这些操作都需要中断的形式上报到软件

Q:relax-order和ido这2bit可以同时为1不

A:可以不同的概念,ido针对于设备 relax-ord针对于包,ido针对的粒度是function么,比如1个device里256个function支持ido超越不

Q:老师,请教下聚合2个phy时,两个phy的参考时钟都要接吗?

A:两种方案1.phy间参考钟级联 2.phy出各自的参考钟 ,我们是2

Q:phy间参考时钟级联是指将phy0的ref_repeat_clk连到phy1的ref_alt_clk时钟上吗

A:是

Q:方案2指2个phy一定要各自都有参考钟吗

A:是的,都通过pin脚来

Q:因为phy1用的lane时钟是phy0产生的,phy1要接参考时钟的原因是什么?

A:synopsys phy都是独立的,你看下pipe_wrap就知道了

Q:老师好!关于MSI这块我有些困惑,想请教下。
1. 通过系统软件可以配置要分配给EP的中断向量个数。假设我使能了4个中断向量,实际上我只需要3个,到底是哪3个中断从何得知呢?它们的中断向量号又是多少呢?0到2?


2. MSI要求中断向量连续,指的是什么呢?

Q:请问 如果是ip是rc模式的话 要配置rc寄存器什么的只能通过dbi接口吗?

A: 是的

Q:请教一下,如果想接上xilinx的phy,需要core consultant那边配置吗?还是不用改ctrl可以直接跑仿真

A:直接跑就行,pipe接口匹配

Q:还想请问一下老师,DMA的写操作在pcie内部也是以mem wr来呈现的吧?

A:是的

Q:老师,host访问pcie设备章节有说,
1.pcie设计中,通过访问bar的请求,通过axi接口送到芯片内部模块。
2.bar空间为mem空间,即访问pcie空间的包为mem包

我的疑问是
1.枚举过程中,pcie VIP通过pcie cfg request seq 配置或访问 bar空间即可,为什么还要通过axi送到芯片内部模块?
2.bar空间地址不应该是cfg seq就能访问吗?为什么要使用mem seq?

A:1.bar空间即就是芯片内部空间,硬件设计就路由到axi接口
2.bar空间我们配置为mem类型,通过pcie mem包访问.

Q:想请教下,axi slv mem response seq充当default seq的目的是什么?
我的想法是因为pcie包在bar空间转换成axi后,发送到axi slv agent后,slv此时需要发出响应。
那么pcie包无论如何都会落在bar空间范围内,这个seq才会做出响应,那么作为default seq才有意义,也就是说pcie包路由的地址肯定是会落在bar空间范围的?

A:你这个问题怎么感觉把uvm和pcie bar混到一块了,我的seq就是发送pcie mem包.落不落到bar空间,dut内部会进行判断,rc发送一个pcie mem请求到dut(ep),dut判断这个包在不在bar空间范围内,在路由到axi接口,不在丢弃.与default seq没有任何关系

Q:你在pcie_base_test中设置的这一个default seq,应该就是如果路由到axi接口,pcie与axi发生了耦合,axi_slv_mem_response会给一个回信。如果落在bar0范围内,pcie与elbi进行耦合,此时应该就不用这个axi_slv_mem_response这个default seq吧?

A:是的

Q:你们在调均衡时,从来没有调过RX端的那些参数吗

A:没有的,这种我们只能联系S更新fimware,rx_adaption具体操作哪些analog电路可以看下phy ate哪个框图FW_ENB/DIS

Q:老师,我们之所以自己写代码而不直接用pcie_vip是因为针对不同的情况有不同的参数配置是吧,vip相当于一个参考手册?

A:我们有用pcie vip,pcie vip才能发送我们需要发送的PCIe事务包,就是调用使用PCIe VIP提供sequence,和你验证开发的agent同样的视角

Q:就是不用自己写代码,只需要把vip和dut连接起来?

A:你自己写的agent, 也是通过Interface和dut连接,agent肯定也通过cfg接口对agent配置,我们通过sequece可以发送transaction到agent,我们课程利用用vip也是这样做的,真实的ep你通过金手指连接的CPU主板,你软件不操作ep设备,连起来也没有啥意义.

Q:请问,MSIX中断可以仅使用低32位地址吗

A:不行,系统配置给你的,你发送低地址,系统就不能识别这个地址

Q:请教一下pcie里的信用机制问题。最初链路训练时端到端交互好各类报文的最大信用后,通信时继续实时交换信用,我理解这时交换的值也是在最大信用值之下动态增减。问题是:如果控制器里的缓冲空间能做到动态变大,那么通信过程中交换的信用值可以动态大于训练时交换的最大信用值吗?

A:update是更新receive还有多大的空间
信用初始化报告了receiver有多大的空间,但是在通信过程中transmitter并不知道receiver有多少包被事物层处理. update就是告诉有receiver剩余多大的空间,你动态改变这个space,按照原理也是可以的.

Q:老师,请问L0s Exit Latency 和L1 Exit Latency这两个寄存器的值是硬件自动计算的么?但是我查看了控制器的代码,这个值是可以通过DBI配置的,而不是由其他逻辑计算来的,是我们这边有设计说要改控制器的逻辑,要自己算,感觉有点迷茫

A:这种应该是设备报告的从l0s退出的时间,应该是能力,而不是计算.

Q:uvc是什么;目前多数公司 用什么验证框架呀

A:unviserval verfication component,就是一些通用的东西

Q:老师,是不是这样:现在mem[]定义在driver里,elbi接口要实现读写时序,这样要把两个task都写在driver里

A:是的

Q:我请教个问题 ,EP设备在不枚举的情况下 能直接发MSI中断,给到HOST吗?,假设是固定的中断号

A:肯定不行,host收到这个包怎么知道是不是中断

Q:老师请问 vip example里跑出的spd0是svt_single_port_device_agent_hdl 但是unified_env里的root却是svt_pcie_device_agent感觉这个root跑起来没用 spd0充当的rc的作用 为啥unified_env里还要搞这么个东西

A:看下spd0是谁的instance,肯定有用,是子module.

Q:老师 dut作为ep 想发起一笔outbound的读写 这个操作是从axi-master-sqr发还是从axi-slave-sqr发?如果想让axi-slave上动作 要怎么操作呢?谢谢

A:outbound 是slave接口

Q:老师,请教一下synopsys的pcie这个ip的axi slave接口,在发送数据包的时候,它的数据格式(header部分,tc,tag等)是什么样的,在哪个文档里有介绍?

A:axi slave不需要知道这些信息,就按照axi协议发送地址数据就行,axi bridge里面会组成pcie格式的包.

A:这是pipe互联的场景

Q:老师,课程里提到的pcie ep设备指的是gpu 那些芯片还是pcie 接口呢

A:ep设备是一个泛称,gpu芯片复杂,我们讲的pcie就是其中一个重要的module

Q:老师,视频里你那个同时把多行对齐的命令是什么啊,网上查不到

A:什么意思,我就是多行选择ctrl+v

Q:老师 问两个问题1.vendor message的功能要如何配合iatu使用?不太明白为啥inbound和outbound方向都会有message对应的type attr等的使能 架构图上vmi进来通过msg_gen不是只连到到了xadm吗?第2个是关于低功耗l0s和l1 都可以通过顶层的输入信号强制进入吗 谢谢

A:主要还是为了代换,与应用场景有关,我们的就没有用

Q:老师 pcie内部有寄存器能读link up的状态吗?还是说都通过debug接口接到外部的寄存器上再读?

A:读外部寄存器

Q:老师,不是用axi_slave接口访问host吗,但代码里用的是axi_master_sequencer

A:dut axi slave接的是master vip

Q:老师老师 请问一下这个用户侧是什么呢?是指的是PCIE IP的AXI接口连接的GPU/显存/视频控制器么?这个用户侧是不是也是之前说过的芯片内部的其他模块呢?
应用层我之前听您讲的是PCIE的控制逻辑。

A:是的

2024年1月

Q:请问老师,ep主动向rc发送数据包,vip怎么处理才能收到数据包呢,能自动校验吗

A: 不能自动校验,mem包都写到vip的mem内部,验证我们一般都通过vip的callback获取到ep->rc包

Q:rc 对 ep进行 bar2 mem写,写地址一直是host侧的地址,一直写到axi slave的mem,还是这个地址,一般哪里需要地址转换呀,也就是iatu

A:PCIe bar是系统给PCIe 设备分配的地址空间; 我定义的那几个宏就是BAR的地址范围; ,命中bar的请求,路由到了AXI接口, bar配置的为了mem bar.。bar是系统分配的地址空间。在dut里面就把这个包路由到了axi接口,环境里面就是axi vip.

Q:这个地址一直到ep device上才会通过IATU进行地址映射是吗

A:是的,比如ep BAR size=256M, ep 侧空间32G, 通过bar访问32G空间,只能通过atu mapping到不同的地址.

Q:老师,如果我在gen4 link成功之后,我想让speed 降速到gen2,有什么比较简单的方法吗,比如修改vip的配置或者force dut的什么信号

A: targrt_link_speed改下

Q:可能我没表达清楚,我想问的是,rc(dut)枚举ep(vip)的时候,读到的header信息和bar大小,是不是vip实例化前一些cfg设置的?

A:VIp这些都是透传的,因此说没有地方配置着这些能力.

Q:老师,如果在仿真结束后,我要获取在shadow mem里记录的所有内存值。有什么办法嘛

A:只能通过sequence去读回来了

Q:1.VTB环境结构使用API接口协议进行通信,这里的API协议作用是什么,如何理解。自己搭建的环境当中使用interface进行数据交互,二者有什么区别。对VTB的用例挪用到自己的环境中用例有什么影响吗。
2.如何将参考VTB的用例,开发自己的用例,老师能举个例子吗
@March_PME 

A:VTB就是把我们的sequence包了一层,比如我们之前要发送mem写,调用mem seq,VTb环境都封装好了.
VTb环境这样最因为它支持dut2dut的连接,通过api我们在用例测就感知不到环境的结构,Vtb用例一直,看懂用例,写就行了,但是我们一般都没有这样做过

Q:老师 请问ep iatu的outbound寄存器里有可以替换tag的位域 这个tag会在哪用?我现在使能这个位域替换功能 tag都换为4发现发起mem读写 发现写正常 读的时候从transaction log里看是有CPLD了 但是axi slave口却没读到数据,想问下我这个使用场景有没有问题 是不是合理

A: tag号替换了,cpld的包与请求包不一样,就不能match,没有这样的应用

Q:这种iatu outbound换tag的功能 一般用在什么样的场景?

A:outbound包的多数域都可替代,就是Ip提供了一种方法,但是实际中tag没有这样用.

Q:老师还想问下 错误注入的那些寄存器配置要怎么使用?使能ep的错误注入寄存器 然后看rc的vip能不能检测到吗?

A:是的

Q:老师,pma 内部报时序违例,是不是可以放

A:具体的datapath,check与接口有没有关系

Q:有大佬知道verdi怎么看一个信号的某几位呢

A:右键 bus_opertaion

Q:如果波形中 标出的 data的bit位宽是 512bit;总耗时是 0.00079us;那这个理论带宽怎么算的呀 是什么公式么 ;单位用Gbps的,pcie的 带宽一般是什么

A:比如gen2, 每条lane的理论带宽为 5Gbps*8/10=4Gbps=500MB/s

Q:老师理解 FC Credit timeout 后会发生什么吗?phy重新从detect开始 retrain,还是只是dlp linkdown,但phy 停在L0?

A:重新链路训练,L0调转到recovery状态,你把vip set_link_en_seq....enable=0可以跑下仿真

Q:老师,想要访问vip的mem space可以直接用target mem,那访问vip的某些寄存器有相应的sequence可以用吗

A:vip没有寄存器

Q:rc dut对ep vip 的cfg write的数据怎么能知道呢

A: 一般都是通过port打到sb里面进行check了,或者callback你意思是想访问vip cfg space? 不是寄存器

访问vip cfg space用svt_pcie_cfg_database

Q:老师,请教一下,pcie的callback类,为什么在sequence的pre_body里uvm_callback::add没有生效,但是在testcase 的connect_phase完成uvm_callback::add就会生效呢?

A:为什么要在seq里面应用,seq不是在仿真时间段内都生效的

公司总部

电话:199 2141 1380
地址:上海市浦东区碧波路690号张江微电子港7号楼

合肥分站

电话:199 2141 1380
地址:安徽省合肥市高新区创新大道2800号创新产业园二期E1栋

产品链接

移知官网:www.eeeknow.com
教育培训:edu.eeeknow.com
求职招聘:job.eeeknow.com

友情链接

Arm
  • 在线客服
  • 就业老师