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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;3 \% R; Y5 g; G- e4 O0 W
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    " P7 E/ Z0 y8 w  r1 [8 y. x* E! M9 A9 T/ w
    ! K' ?; ~" \: E

    ! [9 E* ^+ X5 Y1 v: `有没有大神可以指导一二,非常感谢!
    # f" I* P* C7 L! q' \8 M% C# x7 ^" b% r  p( q9 U% @4 H* W# V

    ! ~& P% e" d# I4 U& T' w1 w7 t/ }$ |

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    9 g, [2 y: f! h! V1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    4 F) A7 Y' \" E; ]2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
      M9 u$ p1 h0 Q9 d2 k6 H6 B6 d3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    * q1 `+ ^0 }; M2 S$ l4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    3 @3 V: I; H1 h0 P

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

    1.jpg

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

    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:471 G" k3 d1 ~+ g9 n
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    " K, N: M4 a) f  \1 E% e8 h- F以及Downstream的Device是什麼 ...

    : E$ c! N0 _& K9 W3 x6 r! f) F谢谢你的回答,以下是你提到的补充信息:6 q8 {- {1 p4 U1 o( h, w# Y
    6 O, V! E9 v6 _
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    ) L8 x' K, q3 s# r% l# g4 Y/ W2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;" d" V8 a$ \* L, }
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;; E) H$ ~% ?2 Y% F8 E( f, a" |
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    $ {! J! l2 d" x( [
    % `# c8 R6 L5 p8 D3 b如果怀疑reset信号的话,有2点说不通吧:
    ! m+ Q9 G7 y0 n1 v) T, z- I" ?4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    * T- s3 `5 A& g/ _4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    7 r# L3 Q, L. A6 n, _( H3 h
    4 u) B% P& s! Y 0 x0 j& j+ ~% R$ ?1 O  p0 G

    5 W) s! v  |) q+ b

    点评

    你的上行端口是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 编辑 9 K  ]/ `+ L, y2 i% ~% m, n* j! S
    Nick.song 发表于 2018-7-20 10:10
    1 `( v7 j6 q4 ~初期我應該會做幾件事情.+ F; b# Y% {" l' |
    1.更換其他Device確認不是單一Device造成.
    " z  \% Y) d% E) D6 V- D7 O2.量測Downstream PCIe 訊號.
    + U, R4 t" _, h/ ]
    谢谢你的建议
    1 a, k6 h/ I! |  ]1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;8 }+ f8 D" N& @7 {8 Z" o7 w% V
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    - q5 R4 t& }5 a+ ^% u/ x3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    5 i' c; K; e0 e# _& G! D% o) E$ r+ J. R* M/ E/ D) ^" W7 L- N

    ! E0 \9 u$ n7 e! M! b2 L【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    + |2 C. C4 j2 b* K4 Q
    4 D- A& z9 D- L( w

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?
    - p0 |* m+ P, M" z% l以及Downstream的Device是什麼裝置?
    ) {1 W% J+ v6 }2 SReset給PEX8724與PCIe device 是同一個source嗎?# e" s/ d+ ~, A, O( F  t- t( R  v
    Clock給PEX8724與PCIe device 是同一個source嗎?
    ' ^( I3 l1 u4 G3 K可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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
    * ]% b0 Y( S& f8 _4 k, e' Z是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    2 e+ W9 L8 V9 Z0 F  I% l谢谢你的回答。
    ) _1 o( j; t$ E5 l+ U4 ~. [* ^1 P6 S: G2 F
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。
    ! V: l" @! T, w9 f( Q1 E; @! ~3 R. _8 A, I

    ! O& E  Q7 W# f) Z5 r& _; I2 Y% d, ?6 r6 |
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
      V, x6 f7 N  T2 ?) R4 B

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情./ Y5 t2 x! p9 Y7 r; d/ F
    1.更換其他Device確認不是單一Device造成.
    : Y5 S1 R/ v# S* k2.量測Downstream PCIe 訊號.: G0 t4 X, F( }0 o& E6 @! ^
    3.透過PLX SDK確認register是否有error訊息.+ B1 o8 V. K' L/ g

    1 D% y9 B1 Q, S4 D8 A3 ?給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,8 \% V8 c7 J+ }' d6 |- D
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 $ A  h+ d/ p5 L- Z9 e+ _7 }

    ) j: Q  l2 j) {2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    4 n( X# c1 m* C3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit3 Y5 K5 K9 h8 W7 ~7 E
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.! o! K! p  `8 M6 s3 ?  a
    # U- ^% P8 Z0 w' ~
    更正這一個敘述,: P  u( K0 d/ y. p, E9 e! d
    是不是進入睡眠後你們的driver沒有再去修改Regiset,! w7 d; o9 x  A1 ]
    只有開機時才有去修改.4 y3 ~. k" P0 P( r" ?3 K: j

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑
    1 N# \8 l  g8 k
    ( C0 K. ~3 u7 O  B去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。0 b  o* l% |/ I- c4 s

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    ! \: S- q3 J4 d$ S* {" ?9 ]) j/ I谢谢你的建议
    : O$ V& u. W6 d. [5 a5 y7 R) y' @2 g1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    - a4 _. @* g  t
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。- D; K' {2 d3 s' r% Z. B

    $ j6 g) P7 x! h2 c8 H3 }

    : s, k. T( f0 r! X/ Z! k3 A根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    8 E5 V; D# ]! ^7 ^( q
    2 y5 }* I2 g" W" A0 k

    9 L2 }: B  N$ o* k另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程9 o$ i: i- i7 G& o0 M0 D5 F: 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:144 G6 A8 l: \8 S# P6 h) b
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    4 l5 \3 ^' `$ j9 T
    谢谢你的回答。
    5 `  ^% y1 \. G0 @现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    : L' T5 k" k& w  a1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了
    3 [0 x( W5 C" ^7 t8 u2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。' ]  y9 ^7 K# {) ]8 Y1 R4 I2 F) [

    点评

    链路训练最开始是工作在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
    / S+ F. c- p) n% P- D谢谢你的回答。8 }' l, l! Z! H% y* E
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

    6 D7 _2 s. P- q2 k9 Z, P( O同意,根据现象看,应该不像是channel信号质量的问题:
    2 Y. n  H# m4 _! C7 p
    4 p& S3 K" F# L) N/ v提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    ( A7 B5 ~' I) |! i- T% o1 D5 J/ B( H' f/ @5 x; M" i% v
    谢谢% |$ ~% a9 r5 d2 g

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2026-4-18 17:39 , Processed in 0.125000 second(s), 30 queries , Gzip On.

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

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

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