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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;
    0 [8 {5 D) a4 B0 D2 S) T% X0 g问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    & z- c# M5 W6 T" r, A
    & b: K8 ~; j: u9 G. T& R
    ; a0 v& n4 |- ~$ [( z) h/ k9 Q  Z' W0 d
    有没有大神可以指导一二,非常感谢!
    - r- c" p3 h7 J' p) z3 ~
    & V/ h" }* E% u) z" J9 A% m- }
      h, @& W. F" m

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:& a6 t$ {- M% {
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测: G) |/ R+ ?+ p' M  M0 w
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    8 n5 ~3 n2 x, J$ w8 ~% p+ R# z1 W3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3% `6 }* o  k8 H! [2 b
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572, N3 n4 g2 h! W3 m- U/ E6 }

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

    1.jpg

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

    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- S" ^" r* M% k/ ?$ m, |; A
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?! R/ l# P, V7 j" [" ], C3 F" X9 ~6 `
    以及Downstream的Device是什麼 ...

    9 M' Z3 g/ U; {8 w* s* L8 L谢谢你的回答,以下是你提到的补充信息:" r( J! V! I$ D  I$ ~1 V8 K
    & ?- R* o5 W+ {3 ^- ?: {# L
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    * \! b% }6 x  ~( ]3 X% `1 Q. @2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    # `3 O# Z/ I1 D) M& }3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    7 J1 K# w. X% A$ v1 {4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;4 h8 Y3 |  r0 E# N
    ( v5 C' i$ c( d! a
    如果怀疑reset信号的话,有2点说不通吧:& e, o$ r5 r+ v8 k/ Z  j
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    9 _- \0 N6 _; H6 X; E0 D, k: W4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?1 ?# ]# d! P" v' d: K4 ^

    3 \7 e( B9 \- @+ k% b" L" x
    3 W# o" [; o4 Q6 G6 n1 Q0 A' L8 l, S. ~

    点评

    你的上行端口是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 编辑
    % {" `' f% z2 ^6 j
    Nick.song 发表于 2018-7-20 10:10
    * V- ?" O: j  ]" T初期我應該會做幾件事情./ y4 C" c* ?7 E5 [' r
    1.更換其他Device確認不是單一Device造成.! S' I, G) D4 M
    2.量測Downstream PCIe 訊號.

    3 C5 n2 s( t& S2 a3 @谢谢你的建议: c* J  y5 b3 i# H3 q: P2 W, d% Y
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;& z. U0 ?+ J( |6 D. t- U* b
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    6 p8 a$ r* O5 D3 Q/ i3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    + _% O5 o! D6 b2 P  m8 E, a; d- ~' f: S+ N( W* |2 Q

    ; }6 r! W0 \6 [% ?【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
      G4 t# X* r; I. ~8 b5 ]* [+ G
    : y1 K$ b  @% J

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?
    8 _6 P, n" u% c) @3 [* q以及Downstream的Device是什麼裝置?
    * R0 {8 @. T  U  r3 @  AReset給PEX8724與PCIe device 是同一個source嗎?
    + I3 u& V2 Q$ d2 ?' OClock給PEX8724與PCIe device 是同一個source嗎?, O) n) H9 U+ y& 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
    ) _, S) O" O; w" Z* W9 r是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    : r2 Q1 o+ D- {7 ~
    谢谢你的回答。$ C5 o" q& Q' b6 `& i- ?8 W

    4 F* X* H0 E% R+ p3 pPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。3 D& I9 g: @& Z2 c9 [
    0 \) _9 V( w  X2 N1 A4 v5 {
    ( X& ^/ e5 L* N

    4 [) Y6 I4 d. R5 f/ m请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?  S  _3 C  X5 r6 V  q! ~" T9 D

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    : v$ `7 M. V- o5 S1.更換其他Device確認不是單一Device造成.
    3 x2 e; b7 t% Q2.量測Downstream PCIe 訊號.# ?2 n1 w( l8 j( Z$ i: f* l3 h
    3.透過PLX SDK確認register是否有error訊息.! ^3 _( _' [4 `# m# p
      N: i( k0 J4 q0 M8 e9 y
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,
    - z0 J, i$ @! L2 t" y- i& r: t% n可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 3 W; X1 u5 `3 n* x

    9 W7 Y4 V" z) O: i3 @% {* k! m2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    : A( _8 D8 r+ F6 A$ h3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    ; a! A" N* U" PSDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    % o: J4 S/ S* p1 W" J1 W, m' \0 c* [6 G; ^
    更正這一個敘述,7 R- u) A: q- {/ H4 Q
    是不是進入睡眠後你們的driver沒有再去修改Regiset,
    ) s2 C5 `/ o! G' z1 ?. d只有開機時才有去修改.2 P# D# ]8 ~3 y$ e4 N

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 ' i. E  P7 V" C: p% y" L9 E% Y
    7 @, E9 z1 G, H+ f3 s# `6 f/ x
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    + m& ~8 i% Q) a

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18' ^' F3 _; u0 P# D
    谢谢你的建议
    ! A  ?  q% s& }0 C+ ^1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    $ v* B( M1 m+ o+ w0 ]# H6 R0 h
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。0 ]: H. x8 z2 V% Z
    4 ?1 A' S/ Q& e
    - A& u( k# r! [* K$ l5 W
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    , i0 s# x- J+ x6 A  ?: ^) r
    " @6 J7 z4 ?( D8 W3 r/ f

    - O- A0 _" k; D' m; V% e另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程0 [- A( ?- o' V3 e2 v9 d4 e' T$ r

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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' `5 W! [- L) C2 m* ^
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    3 t% H0 {2 @4 k* N/ R
    谢谢你的回答。9 L* n7 J/ t# [# \& U5 `
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;$ g( {, S! _2 c9 Q
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了1 M( t5 t# z, X- r3 ]7 \$ [
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    7 d6 v- N' w* \0 x+ T

    点评

    链路训练最开始是工作在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
    9 P3 a* I9 p' E" ]7 f9 U5 X谢谢你的回答。& I; {! e) u& z0 n0 v% z
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    7 Z+ }- h# O; Y
    同意,根据现象看,应该不像是channel信号质量的问题:
    ) A$ s: j0 r& ?6 U: O, T: I. g$ m* E* k7 ^$ T2 b) \3 k  S
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    0 U, F8 P/ ]9 k+ b  R( M# ^
      y& N" ~$ f/ d. c谢谢
    ( w' D( T: B/ t

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-9-1 08:58 , Processed in 0.171875 second(s), 41 queries , Gzip On.

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

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

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