找回密码
 注册
关于网站域名变更的通知
查看: 825840|回复: 62
打印 上一主题 下一主题

求助,PCIe链路必须Retrain才能跑到Gen3

  [复制链接]
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    跳转到指定楼层
    1#
    发表于 2018-7-13 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    我们系统的PCIe链路示意图如下图所示;3 {- W( u& R; s6 S0 Q+ P
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。# I  F! ?* a4 q# v" Z( a! Q
    $ Z6 J" y6 x9 t% Z7 A% H

    & Y' T) n) w. A, `
    3 A% L' _3 X8 j3 z8 z有没有大神可以指导一二,非常感谢!' B" j+ d" p0 L7 A- S# C
    # a4 `& K, y& e7 Q1 T
    ! Y8 ~) R9 d  L1 ~) |/ \( R

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    ' g) M! m  ]9 A) Z4 o1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    * l! d( ^$ z, c  k- F( K) `: l' o2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G; F8 Q6 K8 R# T0 O5 T( a
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN36 k7 z9 g) B- _" t
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    . I; e+ |6 r9 n" @4 L5 g

    1.jpg (64.84 KB, 下载次数: 15)

    1.jpg

    2.jpg (49.91 KB, 下载次数: 10)

    2.jpg

    点评

    谢谢分享!: 5.0
    谢谢分享!: 5
      发表于 2025-5-29 17:15

    评分

    参与人数 1威望 +10 收起 理由
    Allen + 10 EDA365有你更精彩!

    查看全部评分

  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2018-7-19 19:16 | 只看该作者
    Nick.song 发表于 2018-7-19 10:47% x. q- h* {; j' X  w5 V
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?; z) }# s- G" v* P  D
    以及Downstream的Device是什麼 ...

    9 {* F' F2 Q8 G" U9 i7 s, w" n$ a谢谢你的回答,以下是你提到的补充信息:
    0 R% p- l6 X5 e( v
    2 h/ G. B1 i+ c  |4 P1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    . u9 ^$ Q, j1 S2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;' O( L2 K8 B5 k
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;2 i/ E4 B% p- G( T5 P6 \
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;7 s" H1 Q1 x/ g1 M4 w
    2 y+ x) F/ H/ C% \6 ?
    如果怀疑reset信号的话,有2点说不通吧:) c. T  T4 d5 s9 h- [" t
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?& F! b% c' i: ]0 K2 f' e) ~2 Y# z
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?+ e6 w. o  z- L1 H2 ]

    ; T- `, f' @8 r8 J; ~
    ; E4 Q( r5 o4 D9 k
    ; r) B% `2 \+ z/ L, \) [0 L

    点评

    你的上行端口是port几  详情 回复 发表于 2019-5-2 12:10
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2018-7-20 11:18 | 只看该作者
    本帖最后由 gavinhuang 于 2018-7-20 11:28 编辑 - a6 e, x- ~! K: v
    Nick.song 发表于 2018-7-20 10:10
    * {( d5 g4 k8 ^2 O3 M5 u初期我應該會做幾件事情.
    0 J& @; L/ ^' R  o6 T1.更換其他Device確認不是單一Device造成.
    8 E6 j( \+ f7 P4 A" ^8 _: \2.量測Downstream PCIe 訊號.

    . j# [! B% m+ r7 h# W5 ?4 Y& h谢谢你的建议& L1 v2 d. R! B( z2 i
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    ' F0 F; V; `9 _! w2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······1 Q/ a# k. [! H  m
    3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    5 C8 l) R9 M% ^4 M9 j( @
    2 Q; @9 C: S9 z* J: X: q) t
    " k) A9 _& c. }5 m# I1 `【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。& X! {; N  `8 C  D# }: B
    # b  Z1 k3 X+ o. m- h

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,[/backcolor]重启后也没问题[/backcolor],但是如果系统进入睡眠状态,再重  详情 回复 发表于 2018-7-28 16:14

    该用户从未签到

    3#
    发表于 2018-7-18 13:43 | 只看该作者
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    点评

    谢谢你的回答。 PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。 [attachimg]142769[/attachimg] 请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、  详情 回复 发表于 2018-7-19 18:13

    该用户从未签到

    4#
    发表于 2018-7-19 10:47 | 只看该作者
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    - i. i. z8 [' E. @* X以及Downstream的Device是什麼裝置? . o' Z! t% p, h
    Reset給PEX8724與PCIe device 是同一個source嗎?. d0 s5 \$ R& H7 w- I
    Clock給PEX8724與PCIe device 是同一個source嗎?
    ' U: Q9 ^/ E6 ?# d可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练; 2、Downstream的PCIe device,是M.2接口的SSD,  详情 回复 发表于 2018-7-19 19:16
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    5#
     楼主| 发表于 2018-7-19 18:13 | 只看该作者
    Jujianjun 发表于 2018-7-18 13:43& Q; O* k5 G$ }& q( [
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    # e9 v, Q1 n* R
    谢谢你的回答。( H, a) Q8 T$ d
    * ^% j0 v) `' M) D
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。0 x" Q& R. H* {5 |* d
    0 P( @/ Y# M1 u  X4 O
    $ p) O0 J1 C  z4 c) ^9 K
    - V7 v3 s/ V' V7 F; H' y: n
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?0 s! y  g9 p2 ]0 {9 f. b

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    , n2 U1 n7 b5 x' h, c& `/ R1.更換其他Device確認不是單一Device造成.
    2 t; W9 Z$ z' U9 l9 h  _2.量測Downstream PCIe 訊號.& N" g( Z( g/ p( B
    3.透過PLX SDK確認register是否有error訊息.
      q6 {' A8 A# W% l- H( n& z
    / X. I6 A- [* C給你參考.

    点评

    谢谢你的建议 1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧; 2、你说的量测Downstream PCIe信号是什么意思  详情 回复 发表于 2018-7-20 11:18

    该用户从未签到

    8#
    发表于 2018-7-20 10:14 | 只看该作者
    再補充一個,
      Y$ D. H+ `7 h8 W; Z: U4 h# k8 E( e$ T可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 3 U+ \$ N+ w3 ?% D

    7 U2 P% m$ ~1 O2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    : w! E) h8 G9 d6 d/ C3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    ' Y5 V: }, G  [0 t+ X7 ~$ x" JSDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    5 m, p9 b5 o! D9 z3 c/ ]2 x# K1 Y) K% j% }. C( D/ A- B5 V& K
    更正這一個敘述,
    # ^8 v' N! V, o3 {是不是進入睡眠後你們的driver沒有再去修改Regiset,1 h% A! O3 E& F' [: d% v
    只有開機時才有去修改.
    4 D/ S* k' ]5 Q$ h

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑
    : {! X# }* q! Q; m. z. i8 K3 V0 S
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    " a5 z1 H4 o  W! K2 W" B- T9 r; r- U; U

    该用户从未签到

    12#
    发表于 2018-7-23 17:47 | 只看该作者
    谢谢无私分享

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:188 D8 C  |4 Y: ]( U/ L: S
    谢谢你的建议
    & `$ e2 D% b9 `6 N" Y4 C1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    % V  T4 I5 B8 ^
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    1 a9 a* j7 @" m0 M+ a6 @3 }+ y5 a/ _0 i; h

    2 p3 R$ o3 f, F& \+ i3 U根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? + |/ P# _: h6 Z
    % o! }5 z1 r8 A6 e5 M: w$ X2 B0 U
    ! H! _2 V+ t; h9 R1 I7 a
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    ' l' E3 X! ^# x& e0 X  j( ~& K7 r7 n

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程; 1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了 2、更不可  详情 回复 发表于 2018-7-30 10:16
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    14#
     楼主| 发表于 2018-7-30 10:16 | 只看该作者
    Jujianjun 发表于 2018-7-28 16:14. k% N& e% I" G. v1 t  m
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...

    + q" @  y* r) G# x谢谢你的回答。! U, A8 }. k. W1 t% K/ a3 Z# J
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;1 g% F+ n5 Y8 k% g1 e
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了3 \. F# C; G# L6 f* @+ [
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    " O1 x0 h) a7 f1 X) ^

    点评

    链路训练最开始是工作在GEN1的,尝试去变到GEN3,有时候并不能到GEN2的,各种设备的兼容性问题。。。 其实你需要修改的是serdes参数的某个初始值,至于怎么修改,可以找BCM的FAE,不过估计也没人理你。。。  详情 回复 发表于 2018-8-3 17:07
    同意,根据现象看,应该不像是channel信号质量的问题: 提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。  详情 回复 发表于 2018-8-1 07:45

    该用户从未签到

    15#
    发表于 2018-8-1 07:45 | 只看该作者
    gavinhuang 发表于 2018-7-30 10:16# b5 s+ b& O: d6 L" [) R4 r8 G
    谢谢你的回答。
    0 U1 Z. D9 a- \8 K- T( V现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    , l1 c7 ~9 E1 r* Q: ^8 S2 \3 z( ~+ J
    同意,根据现象看,应该不像是channel信号质量的问题:
    ' d9 r- }* C/ ?8 X+ s- h8 P; N3 t
    3 q& f: b  I2 b! G- c! g5 k提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。. e2 C" S: H8 ~; O7 Z

    1 ~2 g1 u. z, s谢谢
    4 f7 L$ ^9 f+ T, |) c' ~4 C( `! t! k

    点评

    你是担心Clock给的太晚了吗,应该不会吧。 我确实没量过Clock和reset之间的时序,应该没有问题,如果训练的时候没有时钟,应该连Gen1都不能工作,不过以后可以量一下,现在这个问题暂时搁置了,等以后解决了再更新  详情 回复 发表于 2018-8-1 13:45
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-28 00:59 , Processed in 0.203125 second(s), 40 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表