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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;' |$ u( b# H, _9 I
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。3 M  K3 C5 u  u

    ) W0 \7 ?' O: c* n3 W: P3 z% {6 C  g
    : z5 x0 N7 I- E
    有没有大神可以指导一二,非常感谢!8 J+ G& T6 B/ p/ ?; b$ @4 j8 _
    2 g% y# c) D& y0 F9 S# K! M
    7 ^/ i7 ?7 v8 {- ]* w: x

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    & C; |/ ^0 J1 x. u+ W9 R$ |8 e1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测8 ^+ c$ O* ]- R6 [) p" I; ?" x
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G1 a& r9 H3 N5 _  W& p
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3/ g6 s( \4 j* q" o, F. D$ Y2 z2 x
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    # p& ~; K5 X1 z: X

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

    1.jpg

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

    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( E  ^$ y1 ~: Q  A$ w
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?+ D' U5 c8 n7 J5 }! b
    以及Downstream的Device是什麼 ...

    3 g3 A: u: U3 \6 A* [# e谢谢你的回答,以下是你提到的补充信息:
    % J' z: n; |5 A8 {, [6 `! K
    : |/ C" r& t+ k$ F9 k+ z' F1 @1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    4 [, p; R+ N. x% }: z7 E2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;6 V1 M  e" H" v4 x
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;& [+ R/ F% u5 J8 T4 p
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    ( J) e. c' ?7 g8 S2 J
    5 ^. Q. Z0 E' k# J& A: @$ z, U8 W如果怀疑reset信号的话,有2点说不通吧:
    / }' a( j% K& b/ i: ~5 m# |4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    # h8 e+ L3 K2 j7 X* o) L) x5 [$ s4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?9 w' N. C$ K2 j( q  x
    8 r4 z9 Z' S% g
    ! l! p0 D# w" ?6 K* S8 r
    . W% L3 e; n  T1 w% T( b) G' X

    点评

    你的上行端口是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 编辑 1 o- P% e% Y2 }. f5 ?: g% s
    Nick.song 发表于 2018-7-20 10:109 f, V  y2 M( B! j
    初期我應該會做幾件事情.9 t. t3 U* t0 X7 K, _
    1.更換其他Device確認不是單一Device造成.
    5 [' m1 i1 m9 C9 K2.量測Downstream PCIe 訊號.
    & R" d, `1 {8 q$ d7 K
    谢谢你的建议1 V( F' U7 W4 |+ Z" h* l. `
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;4 k/ l% u' }" d# Q& S! o
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    - u/ A9 A  K  O/ ~7 j3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    & ?" k1 e; d. [: O' I& @
    # Q" n5 H7 s' V3 H$ j9 |$ T6 }8 u2 W  G; W3 @6 ^0 h
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    - q, b2 d- k6 L/ O. n
    # e4 G2 }) b7 r* x- r* 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)"這段敘述是透過什麼工具?
    . x& t6 C6 I6 t) ~# J/ S% t以及Downstream的Device是什麼裝置?
    $ p, h$ c! Q& K" OReset給PEX8724與PCIe device 是同一個source嗎?
    & M. a$ e& O  B7 w) tClock給PEX8724與PCIe device 是同一個source嗎?
    $ }# a6 [  y5 e- Q* z可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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( ?$ g4 X( \* L  I
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    $ r% L; T9 V  Z8 Z* _
    谢谢你的回答。
    / G+ E; [- }9 A& ?6 e! q# b$ Q' `
    1 \- Q% g( a% NPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。. Q/ G& G$ ~. N1 J
    $ m: N5 W7 m- }" [4 f) |/ j' N3 d
    + J; E0 V( X/ `4 q: ]. H
    * \/ P# Z. C: W, p- _- d
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
    * ~& E: b$ n, ~7 g/ B1 t

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.8 H6 {' |( `* O* ?- @# V8 x* s
    1.更換其他Device確認不是單一Device造成.
    1 q5 U& _; n5 A2.量測Downstream PCIe 訊號.
    2 o8 I9 f# l2 _3 Z' d0 B3 d3.透過PLX SDK確認register是否有error訊息.( p8 K3 x7 w  p# o+ S. d
    % _7 R$ l/ H0 ]  X* u1 |. Q7 Q
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,: u4 S3 D  K) l
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    - g0 N2 k0 D& N/ O8 L/ |
    " m6 D- y+ M  y( o8 c  S% S2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.) [- [7 X2 X; ~- a; r
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit5 r' r8 Y" x6 W% |  `9 ~) E9 Q
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    4 i" a- d7 F  @: Y  A
    ! g9 [$ p5 C- m, \& q' f& R更正這一個敘述,
    - k$ W! E2 k( w* B; z/ J! [" N是不是進入睡眠後你們的driver沒有再去修改Regiset,
      I" S; W, W4 m# Z6 T/ i  O* {只有開機時才有去修改.  {+ q; f/ j. L- o8 F

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 : I6 H0 x" Y+ j" Z& s$ G7 Q

    % U$ q7 }" ^; [2 ]+ V去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。+ j$ z& ^  [# x3 y- r: V2 @

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    % Q) J6 U, z7 `$ t& X谢谢你的建议3 y- Q0 ^# T2 T" C0 B+ H
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    + K, l$ y. g' \" b
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    : E7 I* a1 e2 }2 o: Y
    6 I1 [+ p; M) M" Z" D- b, t. }
    / z2 ]3 C9 Z" R/ J& c! N
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    * J, U* m% F* u- N, Q0 [" O" j, \0 _; c1 d

    - J' }; i; z! k' r1 S8 x另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程( m$ H6 W$ g0 }; k* Q  v

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
    . C1 f1 m* T# B- |7 o- m1 _0 }1 c) [【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...

    4 E2 c8 L- n  m, t8 b0 S- x- P谢谢你的回答。
    + j5 }8 R% f' P* O- ?* ?% p0 ~现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;% U7 X( V# W5 j2 C5 t
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了
    * _2 g- m  |; n) |5 F# K2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    2 W. l. Q( x- a- \: w

    点评

    链路训练最开始是工作在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! r* r# E# Z谢谢你的回答。
    , z$ {  U5 n: V$ Y1 D- O现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

      n  T, x8 k( x& M* f" `6 O' C同意,根据现象看,应该不像是channel信号质量的问题:
      g$ O$ ?5 U. N
    % q: U2 Y9 L9 {4 m提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    * Q% c$ C& A" a/ o7 ], f0 S' b) z1 R: \, i9 [5 o4 f; V
    谢谢
    ) v; u0 g4 J4 M& V9 `

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-22 02:51 , Processed in 0.203125 second(s), 29 queries , Gzip On.

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

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

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