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

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

  [复制链接]
  • TA的每日心情
    开心
    2025-11-21 15:15
  • 签到天数: 28 天

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;( l& Z5 K' z" J! J$ p3 g
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    * G/ N  N  X) Y$ l9 H& `! K& V+ H& ?7 j+ e* M

    ) |" }5 m1 O! `0 ~+ Z
    5 Y" J- H* q  ?0 P# I! ~4 M有没有大神可以指导一二,非常感谢!
      L  {( _5 q7 O. W
    ( w' M* s3 o3 E+ x. b( j
    ) d; m; U1 S5 ?) H+ D) ?

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    ; g- k7 E* c! B, x, _1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    , n- `' ]0 Q$ b5 @2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G  K" T& ]4 ~  z: |( Q3 e
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3* w. ~7 o4 V1 Q* R4 M6 |
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话186218735722 _1 w  c0 k7 n' E  C4 j+ [

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

    1.jpg

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

    2.jpg

    点评

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

    评分

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

    查看全部评分

  • TA的每日心情
    开心
    2025-11-21 15:15
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2018-7-19 19:16 | 只看该作者
    Nick.song 发表于 2018-7-19 10:47
    , z3 U% _* k2 t$ V; b8 U請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    7 @3 q  I7 U, f3 E& g, d0 I以及Downstream的Device是什麼 ...

    ' q; k7 |5 V" R0 J, I8 x谢谢你的回答,以下是你提到的补充信息:
    . M) U  J+ A& ?' M; p- G0 @
    0 {  ?1 @4 p0 u3 r1 d1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    : q  G1 l7 g: {# t2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    9 K: a: x$ r# \8 H3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
      w/ d8 h6 o3 `$ Q$ K' u- h# W4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    ) i6 q' Z5 n+ b1 j7 i/ @* b# \) X$ d' J% O
    如果怀疑reset信号的话,有2点说不通吧:5 P, c8 m) O9 D% [% V# ^
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?" d. `" g4 h/ M
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    1 f( u  ~' G3 c7 K( S& y& g; F+ C# e
    # ~, f, k& ]  A" [ # y. b" B( A" b3 K* D6 {* r% {

    * \. \& ^! \; i5 P

    点评

    你的上行端口是port几  详情 回复 发表于 2019-5-2 12:10
  • TA的每日心情
    开心
    2025-11-21 15:15
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2018-7-20 11:18 | 只看该作者
    本帖最后由 gavinhuang 于 2018-7-20 11:28 编辑
    & ~; p' w1 W" O2 t9 D
    Nick.song 发表于 2018-7-20 10:10
    , ]6 {" J2 K& R- I9 U初期我應該會做幾件事情.8 ~3 Z+ C& k; t+ e, G" t0 U/ w+ x% V
    1.更換其他Device確認不是單一Device造成.9 d* b5 W8 T" `0 b, s2 P" r9 i
    2.量測Downstream PCIe 訊號.

    . I: S# M: P7 S谢谢你的建议
    7 H& A: b4 L2 k, K6 D1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;1 s. B) C; e5 X4 c' f( S( h
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    9 U8 z( q3 h* D- g3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    / y2 U+ K  I2 t5 l  B& e- Y
    0 S- v1 C( p! \# g$ T4 p
    ; ?6 u* `/ A+ v# [3 m- s【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    1 v/ o2 d3 Z! S# n' e$ x* J  w  W1 a" {5 [% z- _

    点评

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

    该用户从未签到

    5#
    发表于 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

    该用户从未签到

    6#
    发表于 2018-7-19 10:47 | 只看该作者
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?0 v) b/ D3 W: |% |. C
    以及Downstream的Device是什麼裝置?
    4 K) I! M; y( Q: j4 o. bReset給PEX8724與PCIe device 是同一個source嗎?
    : W4 l% W$ O' N9 b8 g* @& S: fClock給PEX8724與PCIe device 是同一個source嗎?: r+ D( |4 m; ^/ r; N  w4 m* |1 h
    可以再補充些資訊嗎?

    点评

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

    [LV.4]偶尔看看III

    7#
     楼主| 发表于 2018-7-19 18:13 | 只看该作者
    Jujianjun 发表于 2018-7-18 13:43* |7 o* i+ q* h3 O. N( c
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    8 r2 Z! G, }! P% X7 d
    谢谢你的回答。
    ' R6 w  a; ^/ {9 X5 m% v$ C
    : S) v3 ~$ S' wPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。2 {' a. R5 M7 R" {1 ^

    " D- y) n5 E0 u' X' P
    1 K7 A" |- y* p+ ]+ v5 d
    5 e$ g) K7 y, c4 Q4 S请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?/ ]6 O1 S% g% V$ ^

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    & P, Q- ]$ Y. u/ u9 u1.更換其他Device確認不是單一Device造成.# Q  i1 O& l0 A4 H& w- x: x
    2.量測Downstream PCIe 訊號.
      a; L: v1 r3 ^, c% [1 P, @3.透過PLX SDK確認register是否有error訊息.& y/ O$ p6 D1 W1 [" C
    ; {5 A& s# K* |2 H) L: q; G6 Y1 K
    給你參考.

    点评

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

    该用户从未签到

    9#
    发表于 2018-7-20 10:14 | 只看该作者
    再補充一個,
    $ p7 d$ a% c7 u5 V可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 5 P8 b! f: q: q6 o  v" M

    : [2 k/ f* a# W8 T" z) J2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    + \8 x# D$ G/ H( C; Q7 J3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit4 e* \6 p& S1 ~9 w3 }
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    1 e" T5 g2 ?$ K+ D4 N2 Z4 D0 b/ H: k; ?) k& R9 v
    更正這一個敘述,5 }" D6 o/ a8 ?' B' u8 `* G
    是不是進入睡眠後你們的driver沒有再去修改Regiset,
    # q& L% f' F8 D5 ]# _& y只有開機時才有去修改.  m. a5 F* z- n1 @% H2 _

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 % W, g& r" V/ y: I: d

    2 Q0 c& S7 W8 f去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    & X& S8 E/ X# h+ {  n# C- O

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    4 h1 P; h' e" r谢谢你的建议- x+ v3 A# C6 T% M! }; j
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    $ A0 {: u  ]' T/ Y! Q5 e2 F【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    5 l/ A& Z) |' D$ x' z
    ' V! S( \4 P6 d* Y
    % `( n+ M3 f8 a0 P7 p: }
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? 2 k) e+ m; o& [

    . O* t& X- f  R" m+ v/ H

    ; r/ j; s3 h0 M+ K  F另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    1 `# \2 Z  Z* S: Q) _' i0 s0 F' ?8 O

    点评

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

    [LV.4]偶尔看看III

    14#
     楼主| 发表于 2018-7-30 10:16 | 只看该作者
    Jujianjun 发表于 2018-7-28 16:14
    ! z' ^1 o$ Z# ?, p. U【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...

    % a" @! g4 ?$ ^% h$ I谢谢你的回答。
    " g5 L( ~8 L6 T$ d. @0 U# j现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    6 y; C& J+ P4 i6 m1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了: W$ H/ N$ l' h, r( I9 t' l* }
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    2 i+ A  j* |6 H% t3 V

    点评

    链路训练最开始是工作在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. B2 ~( R/ s+ ?3 K2 {* Y
    谢谢你的回答。
    5 H2 B% U( t; v% U3 V7 Z: T现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

    6 E/ j8 f9 q$ \* Z8 o! ?) O! M同意,根据现象看,应该不像是channel信号质量的问题:
    ( W5 y: y9 V7 M9 u9 v7 P3 H3 A5 E) a7 F
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    $ F: X/ N1 \. s
    ! q1 Q! a) E$ x3 M& r* M' E谢谢
    & B4 i# ]$ u8 g" E

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-22 03:17 , Processed in 0.171875 second(s), 29 queries , Gzip On.

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

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

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