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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;
    $ I/ [- l& v. P9 \% N9 o  t问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    $ E1 @8 f& S' w, j* j
    ) g% M3 n: a! w5 _" |8 b
    ) x6 [$ }9 O: s7 k3 S+ o/ W1 ?" I) b+ n/ [2 u
    有没有大神可以指导一二,非常感谢!# y4 s! ~1 C8 h8 [! |
    # j: ]+ F% p6 W7 o: M, n7 T
    4 c+ Z: I' O4 y' m1 m" }

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    ) g: O3 A# T  I# K) A0 r1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测9 g* ?  \  i# X. u& I9 B3 d9 N+ A
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    6 b4 J( q6 L8 M: o. Q6 q- f3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    * ~8 P+ h$ I' A: Y' W4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    0 A- j# B* q- I) B

    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:47) q% M4 k  \+ k# C
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    ' {9 O" Y6 R- W% {以及Downstream的Device是什麼 ...

    * m( ^9 [& ?0 F3 g' s谢谢你的回答,以下是你提到的补充信息:/ ^& U% ?( }6 w
    1 t0 A6 j5 p- A& G5 f7 W8 ^2 g
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    ! F4 X! G7 n* W4 Z6 F+ ?2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;  [: R' m$ r- n) q' j+ ~
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;" X) ~4 ^0 I9 b7 H6 ]
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;! @! G  ]% C! ^6 F& j  _8 t
    - C# O; y. `- @/ E
    如果怀疑reset信号的话,有2点说不通吧:/ Z& q7 L9 d; a& _/ ]9 h* c1 x
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    3 w4 v( Q* ]" h2 N+ f) D4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?8 |1 [: T* [$ \, S# i/ I9 J

    # c2 l! U4 _# `& f( T- {
    8 d- i0 E( P) q+ C& s5 |
    8 N& a% h6 n0 c) q

    点评

    你的上行端口是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 编辑
    % D6 G. h7 i3 J
    Nick.song 发表于 2018-7-20 10:10" l; S! d9 J- c1 m! [8 Z
    初期我應該會做幾件事情.
    $ v6 ^) ?( c" D& O1.更換其他Device確認不是單一Device造成.
    . |- f& I" m0 f  E9 e2.量測Downstream PCIe 訊號.

    7 I/ G+ f: c& v1 d4 W" \5 `; v$ ^% v谢谢你的建议+ u; k  ]5 x& X, [2 j$ H# V
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    $ J* q, ^% N, o7 m2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    # G& n3 k" b+ \/ h4 B, @& p+ F; @3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;- [! Z$ _, g+ P. {4 v

    2 Y: M/ ?) y# f! T% \( p8 m9 `+ D  _1 ^# t
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    * U& U6 r! c& W7 A) a2 ?" z: J
    6 P5 [; i# w3 J) a6 B" T" W& b  I

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?
    / N1 h: u8 _+ d+ T+ x以及Downstream的Device是什麼裝置? 4 y, J3 \$ `- D5 A0 A7 p
    Reset給PEX8724與PCIe device 是同一個source嗎?
    ' Z$ \& m$ i% k: _7 `Clock給PEX8724與PCIe device 是同一個source嗎?
    1 R& R1 @. e7 H, L6 i; ~可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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- c! i5 {$ R! v( p, N( O
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    $ u8 m7 @: u7 c, g: u+ ^
    谢谢你的回答。, ]; ]# o! `9 T
    # H' I( }5 K+ R. w+ r1 j6 g- a4 R
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。( I. [7 `+ w: ?# g5 f! w5 H0 L2 l
    0 t! q! A4 C+ P+ ^) C$ t

      @4 z  J, l1 u1 }& l" g6 v0 C5 r, ]; J) w. m
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
    - k6 H! P6 W1 n. |2 M( u# I

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    ! U: q2 c. C/ u8 v' c1.更換其他Device確認不是單一Device造成.
    # {9 x3 B% ~! d" E/ k2.量測Downstream PCIe 訊號.
    $ q. b5 |' u1 Z& t# l3 I% [3.透過PLX SDK確認register是否有error訊息.
    7 w+ c9 t; y+ E5 O9 S
    : p2 H: U1 K/ x* I) H給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,' M! i; i6 `4 S0 G( d& v: H3 m7 ^1 J
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 7 g2 W! i  p1 F/ V8 Q

    2 P0 {! h( b7 {+ n7 X9 D) m2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.2 \* G/ L! `: V4 Y( W
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    + |: U, a7 {1 C8 A) nSDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    # V+ f$ R3 p3 `. E$ _
    ' u' B' S4 s# z  a& x更正這一個敘述,
    0 m4 t' W$ A  G是不是進入睡眠後你們的driver沒有再去修改Regiset,7 t( P( I, @1 P3 m
    只有開機時才有去修改.
    - \. U) l$ g: ~# {7 J1 o

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 : R. x2 ^% H* d3 c
    - q: G: P' _. f" c! f$ o! f9 B% z% C
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。& z  u# B2 E6 A. H# [$ g/ [# T

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18. b8 z3 c& q. v# ?) n
    谢谢你的建议: J) p% s, S- |" a- \8 b1 ^; ?/ z
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    , ?2 F4 S- `; @9 M【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。) R0 }' O1 E7 t- z" N  q
    9 N( }' R% d! g6 N

    # }9 L! I- z0 F2 Q$ x根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    / Y* F" i/ F4 K* j  ?" t# ^1 s' ?6 N
    6 D9 T) C+ x/ s

    0 Q: Y5 C) y$ j5 d- U另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程: @3 o+ y9 ~& S* ~9 u. E

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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( \9 y7 }# u7 A4 y, N- F- G4 _0 W" ^
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...

    : q1 S* i- C1 h  m1 `' l谢谢你的回答。6 ~# j; o' g0 h& F+ F( l
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    # I3 P" ~/ A' Q) {' d2 j1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了$ a) w) o- N- N+ D9 k
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。0 G. B, g. {6 _" u8 q' Q$ V: |1 n

    点评

    链路训练最开始是工作在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. Q9 {0 n+ j9 ^- F, ?! Z
    谢谢你的回答。
    5 E. M& \& D0 z现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    1 G, `5 r; g: j2 L$ Y: e& L
    同意,根据现象看,应该不像是channel信号质量的问题:9 p7 L: P3 @( r! ?+ k

    ' Q: U+ W8 u; w) k1 a- k5 i6 o  p提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    ! y& a: [; t; S7 Y" c2 \* g+ ^, @
    谢谢" g  S2 r( F; Z

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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