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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;5 q3 N* e' d+ C7 P  o! n8 q
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    8 u% {+ T) P' c3 n; e6 m3 V4 T5 S  M" \1 h4 [* O; P, j. `

    , e0 ~: d4 H9 Z# _: f. w! N
    , G4 M2 u3 p. Y0 I  K9 L有没有大神可以指导一二,非常感谢!
    & @- X* b" x5 T* y: \) @7 d+ L
    , y# g4 ]5 ~1 c5 {: \
    5 {0 [( F/ \- R, W2 \

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:7 [7 a$ Y7 d0 m
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    ) H% Y! V* d+ U( M% I2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G0 n- C- L* \: l( e4 O
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    # b$ o/ V0 y& L0 K3 Y; J- }* _4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    9 W9 w( Z" q0 |; p

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

    1.jpg

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

    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:473 U+ m. y4 Z; |. w0 X2 K2 Z& C
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?4 a& F# M% q3 t: ~/ u/ W/ \; a) a
    以及Downstream的Device是什麼 ...
    7 Z2 ?" q& p" J9 b& H
    谢谢你的回答,以下是你提到的补充信息:2 P  v) {! o( a0 }" _
    ) f- s; B  g0 o3 P4 {
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    " Y0 u! ~' S5 f5 |2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    6 {" e; ^8 _" M" b- q4 v3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;; a- k$ S6 D  A  ], S3 Y7 d4 `: V% L
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;( A' P$ |/ Q, d; _3 w' Y$ U
    8 A+ l9 j+ c+ b. i: L
    如果怀疑reset信号的话,有2点说不通吧:! V4 S4 q2 J6 Z6 w6 }
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?. s2 m  `0 n4 W/ h/ G" F, ^! l
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    5 ^  S  e; t+ O6 B) f$ v! z7 F" {8 m3 J7 w9 N- X) o: @2 j" A

    ) N& G, T; c6 i: m; F1 m( t
    5 D  u* |/ }  t" n3 P& Q9 N

    点评

    你的上行端口是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 编辑
    2 p+ P3 O6 d$ Z4 Q( H# Y" d
    Nick.song 发表于 2018-7-20 10:10" _  e, i7 f( r. J
    初期我應該會做幾件事情.
    / t: b& Q: E  ^% g% \. p5 m1.更換其他Device確認不是單一Device造成.
    # P5 D6 r5 V" u* W2.量測Downstream PCIe 訊號.
    5 E0 E/ r4 m  n% o5 }) h1 X2 T
    谢谢你的建议
    2 V6 |1 }" V8 w1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    ; M& L5 e( ^! S) G9 d% e2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······8 S9 ]3 m' ~# w. M
    3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;) R( Z# T4 k. h* V2 ?  r0 }

    . p6 }/ G# f/ y0 K, S* y5 F# K" Z5 l
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    $ P: b0 |2 m3 S: {  Q+ ]: x' l4 Y, y5 A( G7 H7 p' i9 n+ B$ m3 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)"這段敘述是透過什麼工具?" i* y. o; y* s" f, K5 A2 K
    以及Downstream的Device是什麼裝置? " X% F4 b( y/ d8 }
    Reset給PEX8724與PCIe device 是同一個source嗎?2 F  N3 W8 F& |3 S" m6 D
    Clock給PEX8724與PCIe device 是同一個source嗎?
    # R4 l% Z; i5 }1 }' Q7 R6 V可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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

    7#
     楼主| 发表于 2018-7-19 18:13 | 只看该作者
    Jujianjun 发表于 2018-7-18 13:43
    % H6 M" q" }/ k) k6 V$ k是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    5 N2 J* _' y; l: {0 w  s
    谢谢你的回答。
    ! R: w) [, S2 @3 \1 g9 K6 ]8 s9 A3 q4 ]- ~* ]$ i" `
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。
    ' [/ {2 Z% S8 v  n5 ?$ ]8 U+ A
    / \2 i( I$ R& Y' ?' Z
    $ Q5 c* e# ]( l
    2 y* O0 l7 d  z% v4 `请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
    6 _4 E# g, f3 f4 ^

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.8 {% Z5 ?( Z8 N3 e. R
    1.更換其他Device確認不是單一Device造成.
    : |. y# F& Q3 k2.量測Downstream PCIe 訊號.
    2 ?- e4 L" U, [3.透過PLX SDK確認register是否有error訊息.
    / l1 L+ y. t8 g' N3 _- w- Q6 g+ ^3 d. }! ~: 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 | 只看该作者
    再補充一個,4 ~8 J0 h# J% |. ^
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 $ R" h/ g) v8 \# U0 Q

    ' s. t* Y7 ]$ z. b2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    . D2 z$ A9 B9 Y) a4 z# P% I3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit/ v3 Z" d. G, @. ~1 g
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.+ h. ~( i3 k9 [8 D, Y

    8 m" o; }1 M0 B# I2 h( r; J更正這一個敘述,
    1 O% @5 P2 y+ R% H; q9 a3 o是不是進入睡眠後你們的driver沒有再去修改Regiset,
    & p$ P" p7 F% S8 L3 y# Y8 b只有開機時才有去修改.
    ( v) R, K7 s0 n# j

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 - x% I5 |* T9 j1 _$ S  r! _

    2 |) @4 X6 D* o/ s- x# Q去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。) L( `- W. j$ e5 J: |: v9 d! W

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    5 z3 j- Y3 I+ v谢谢你的建议
    $ a- v, s* b: x1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    6 |7 `* \* O( Q% O5 b【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。8 @) |5 [. X8 h! }  j2 `2 K
    + V8 X1 r9 |9 J' @8 v2 ]
    / h3 W, j' |/ _8 |
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    ' @: M* g5 y2 @7 e
    ) Y5 }) k' v; z* Q% ]: P! Y- M: q
    % s5 c9 H( ~5 D7 M' Q: a. d2 [
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程# a# V& |( ^. p: {" I5 N

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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# o8 f7 P) ?  \! X
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    ' @! ~# K' t4 b, e0 m
    谢谢你的回答。8 n" \: d! k6 _0 T& q
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    + S* }: O8 t8 T) |/ W1 I8 g1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了
    4 x* n; ?2 V4 H3 b  T( L1 D3 U9 y2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    " Z+ @" `- h/ F* O* Z5 ^/ T. ~$ r: C

    点评

    链路训练最开始是工作在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; w' r0 c. Y5 p/ @- y7 j
    谢谢你的回答。- v  Y! q" @5 a0 F+ H1 C$ P+ x9 @# \
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    3 T6 a& i1 b) P1 x- y* `2 |" V  d
    同意,根据现象看,应该不像是channel信号质量的问题:9 m+ e6 S: O; a4 @. w2 Z' \8 {
    + k4 z( L& H9 s7 Y$ ^
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。; H5 L" s; Y9 {

    ( k. w- F" b. {6 `. d2 L谢谢4 w: P) @2 E, E# o

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-9-3 14:24 , Processed in 0.171875 second(s), 40 queries , Gzip On.

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

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

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