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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;
    1 g8 d" Q' e* ]% e2 v  U问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。2 c) z/ m) Y1 P; t, y6 O& N
    8 G6 v0 ]6 H: G- j* Y: q

    " {) ]/ ~) U" x, ~" U6 e2 C3 j! ], J9 i# k/ ]$ i7 I
    有没有大神可以指导一二,非常感谢!* u" h$ h+ w, i: Z
    2 ]$ }. U% r* L9 |7 B2 }
    3 [% Q5 q0 d! L( |7 V

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:( V6 u" i0 E7 L$ U. p; [3 U$ ^5 ^
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    % t$ A: w8 G% m- `' F! c- S6 ]) F: ^2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G8 A& _$ h: W0 |1 @% Y; _
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN33 R  w5 x& h/ c6 y) I! }+ N
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572( O6 S/ a# b0 {9 f

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

    1.jpg

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

    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& N) k( f5 e# H4 X
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?+ r' N0 J0 V* r- q
    以及Downstream的Device是什麼 ...

    6 C1 l2 k6 P1 t; l* q* S谢谢你的回答,以下是你提到的补充信息:
    ; N4 o/ q. M; J( Q) d; g* M# f/ `2 q/ V' n/ K9 j5 |
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;, {3 }7 D( `' h; d) s" s
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;6 ^4 t/ q9 ~. l; a
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    * q+ {5 T+ `+ ^+ }8 l4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    0 D/ ^* ]1 D0 B3 A$ v, N
    : Z" Y& _* {% G' J如果怀疑reset信号的话,有2点说不通吧:% R, O5 v3 {; U  |+ m8 |' F: ^
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    9 }6 l" T% o. r4 v- J4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    $ }+ y3 V$ R  K  q6 \* ^9 x4 B( ?, Q

    0 e3 ?: s4 l5 a# D7 {1 W& y; `1 p% ^  ^- N" y+ @

    点评

    你的上行端口是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 编辑
    & ?/ R  r) S  T
    Nick.song 发表于 2018-7-20 10:10
    " j0 D2 X0 U6 K1 I# @2 w  m4 K初期我應該會做幾件事情.
    8 [& r- J  e# n8 q' K4 x+ c  ]1.更換其他Device確認不是單一Device造成.
    + ?/ M0 u. }  J2 |2.量測Downstream PCIe 訊號.
    / _! I8 I- a! O# e' y% x. X
    谢谢你的建议
    9 R. k: ?5 f3 I+ n. J1 a1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;8 D- f8 U; y5 p: T3 j" j' Q
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······( K! `. N( N! R6 l; G1 ~- Q* q1 C
    3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;8 z( F; [1 `6 v- n0 a* u# _

    / u# _$ U5 W  E" v  z; w6 i5 D% _9 M& G+ @
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。9 C2 r0 |: A! Y  _' M6 F) i
    9 D4 d* t; x& n3 M" W! m( p, P

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?
    $ P5 C$ L: Z% y) M9 A; r2 i以及Downstream的Device是什麼裝置?
    ! F: H; c1 B: {Reset給PEX8724與PCIe device 是同一個source嗎?% n4 Y8 [' {* ]/ c0 R3 @
    Clock給PEX8724與PCIe device 是同一個source嗎?/ ?; H6 J# }6 g" q
    可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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; R$ F" r7 s& Y/ z
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    : e% Y/ D- t. A: X( d谢谢你的回答。; W5 [. D% m! u) E
      O8 H. v3 f3 b$ R2 i
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。6 N& z* ], j( D+ _( w) v

    0 b8 \$ X5 _1 ^8 X
    ) }' M6 Y: M8 m; N3 d1 M+ Y/ w
    8 {9 A/ Q! E! G' X% [, s3 N. s请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?  a0 j3 D, ]" h1 d

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.0 W1 w1 D0 q0 X; \% K+ v3 Y% Q, O
    1.更換其他Device確認不是單一Device造成.
    ' D8 _+ u3 d* [2.量測Downstream PCIe 訊號.
    ) M$ Q9 c  n- |+ {; m2 N5 e3.透過PLX SDK確認register是否有error訊息.
    : r% H8 o) P* t' u2 ^4 |7 e) ~4 K6 d
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,9 r) |* U+ U% I$ L9 W
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 7 `) f/ q) I' w+ l& Y
    ; ]' H+ Z4 ~! H# M' j
    2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.* L2 F3 n/ V: m1 ^
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit/ z0 m) E3 D6 i) Y8 M9 g# h
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.& C. s& \8 O: g# L8 ~: X' P' ?

    . S/ _$ g$ ]+ r9 ^' f4 `. x% Z$ ~更正這一個敘述,( u/ d8 a) [9 T
    是不是進入睡眠後你們的driver沒有再去修改Regiset,* G: {- h% D0 ^: _
    只有開機時才有去修改.5 z) f# A% A8 D7 n: ?7 N7 h

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑
    * [3 n& D0 e8 Z2 j" h  N, R* ^) u, p6 b
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    : |9 P: U9 V5 G, B( i, ^) [

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18/ F; f/ @* H$ v2 x
    谢谢你的建议. U; f0 C6 }/ j" D) l2 @
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    - B+ Q6 Q5 S" d+ j- E
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。0 G6 e, q& ^0 c, {
    : z, P, P* l: Y4 \0 @! M3 ]5 `

    ! ?# x+ l% O4 J) {3 p% v4 b1 ]根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? ( E8 \' @, W4 ?0 ?" M

    % @) {; ]" }8 r% c" J5 e" d8 c

    4 r$ k! D" B" u6 p; q  @) S另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    9 q5 M, \8 ~$ c, S2 j# C

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
    7 j: F, S& v* P/ Y【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    * E" S/ q) k0 K* K! q
    谢谢你的回答。; u' n3 g( L5 N9 `6 p+ J! g
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    , i9 X+ A9 ~/ p. k1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了: S- T$ j7 Y; M% B& m
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    ! D, p7 a( k0 V4 e9 f  e* q' N& Y

    点评

    链路训练最开始是工作在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
    3 _0 @/ H& O! ^, ^0 O2 {谢谢你的回答。3 C. U7 @1 Z% y* o5 b! v
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

    7 b# [0 x# H3 n5 f同意,根据现象看,应该不像是channel信号质量的问题:
    ; Y9 x% q% F1 M+ ]* }, N* Z8 a& s/ ~
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。/ e+ G, G" R+ a8 F, x; u" d
    # |  K  A2 a& Y; k# ~
    谢谢
    % B, O" ~" F1 m- a& J8 J

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-12 06:01 , Processed in 0.187500 second(s), 40 queries , Gzip On.

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

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

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