找回密码
 注册
查看: 11085|回复: 40
打印 上一主题 下一主题

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;$ N1 q+ G. n' v
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。: H4 I: c9 [( G. H. ?0 O

    ( a! o+ ]6 x7 k6 `: d4 Y& Q
    5 |1 V' G8 R) |4 P  W" i: F8 r
    % o: W0 u; i& V* @4 g4 a有没有大神可以指导一二,非常感谢!/ h1 ]0 c/ p* I2 M
    * [& s9 }2 o7 q5 S! ]

    1 N. v. R5 s- H7 ~

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:$ m  s2 N( S2 E1 v8 u
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测) W% H; b) k9 ], |2 z3 V+ l
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G1 g4 O% A7 ^# y% h* [! r4 M" _
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3' }! o% Y" O- G1 g  X
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话186218735729 ~& m2 J3 B; |2 v# k6 o, ^% S

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

    1.jpg

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

    2.jpg

    评分

    参与人数 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:479 y8 l) \% I' _- \; R3 c
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?- R! c5 m4 u$ i6 D2 [' I; O
    以及Downstream的Device是什麼 ...
    * b0 T* _; U! E' _; B) N/ M$ n
    谢谢你的回答,以下是你提到的补充信息:
    & {) u  v, {! x& z3 O+ |1 B; n4 Y. ?$ `5 W4 S5 j  ?
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;( C7 ]! C! g* V/ t: U0 }3 \4 O" Y+ R( m
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;$ g: o2 ?' u. n% J  k' L/ {% Q
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    3 ?# R6 I. @1 [6 m4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;  R1 n, c$ u  m+ c1 `/ @

    * R3 {, ]8 P% O3 Z8 Y, w如果怀疑reset信号的话,有2点说不通吧:) o' ~5 u& H5 Z, n& b+ u
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?8 R4 l/ A  A+ R2 W1 r& J
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?- }* u. ]  q& V2 B
    7 @+ m1 v% Z6 ^  X2 O

    4 e5 H8 a2 I% N# b. t) [3 @0 n; A- W" c

    点评

    你的上行端口是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 编辑
    7 T$ }3 ?% b8 ]" G* [1 p
    Nick.song 发表于 2018-7-20 10:10
    : x3 C% u) H& A: F$ A8 U初期我應該會做幾件事情.5 U6 H* n! C8 g' {" @4 W% r. g; f$ c0 C
    1.更換其他Device確認不是單一Device造成.( X0 f7 R+ e8 u! @* V& @* d
    2.量測Downstream PCIe 訊號.
    0 s) l6 z6 m& w. J# S! [7 x/ k0 Q6 v
    谢谢你的建议( Y, T+ Y% {. `. A$ Q0 h$ `
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    ' z" B9 Q( y3 ?' b9 _+ X2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······- t: H' j+ z  K/ j1 Z) T; O
    3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    / R8 \2 N0 k7 ~) m) h% U( u, _8 ^2 v' o9 [+ J# ^: i4 c# {
      B9 t: W. R$ y5 c
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    4 T0 F4 n/ }; }* I- E4 n/ @8 p
    ' G% [4 V% W+ K: E2 J0 y" J

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?9 N' Y" h0 Z. J; k% O9 Y' v
    以及Downstream的Device是什麼裝置?
    % H) @& @4 i+ S# mReset給PEX8724與PCIe device 是同一個source嗎?  a+ i$ {  }( J& e9 }! H6 }
    Clock給PEX8724與PCIe device 是同一個source嗎?5 o3 S: c: U' @$ R# o4 G
    可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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
    7 _% F8 V4 @7 W! m8 h$ _: p$ t- E是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    " a% D! v* ]* k8 i, ~& `谢谢你的回答。- b& F) Y; p9 E3 @0 d6 ^+ X* c6 j

    4 K, f5 g/ ]" `+ Y+ y+ hPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。
    5 N3 G7 @) \& s$ L  e( R8 F# \3 n  j1 O+ C1 P& h
    & F: N* A1 @$ s, U+ A7 f5 S
    - I% \1 g+ C  ^, j  O. w) R5 W. \+ v
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?* h, H2 Q: w8 p1 C5 b

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情." N5 l! T, S+ X! w, p: V
    1.更換其他Device確認不是單一Device造成.
    / J3 V, l0 e/ h/ S! }+ q$ P2 Z, [# m; J2.量測Downstream PCIe 訊號." K: P- p( q: B2 {9 [
    3.透過PLX SDK確認register是否有error訊息.  T3 V! \" W5 N) I5 M" W7 \

    ! |; y7 ~/ d$ D: k8 V4 p給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,
    1 F( c! y+ e1 R4 @9 ~2 u3 P可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 + c* ^7 b" ^/ M( S  G0 l2 X

    ' G4 V) F8 ?" Z' W4 M2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.: W' d- B8 M/ p
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    ( u6 y' E" ~$ u  FSDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    8 @- o" }( j7 c6 ?; i$ X+ X( k: K4 x$ R$ T' \* D# p& e
    更正這一個敘述,7 x* W- N4 R3 F' r$ }# ?
    是不是進入睡眠後你們的driver沒有再去修改Regiset,
    8 G2 ~$ A8 N* ^只有開機時才有去修改.$ N: H# j$ c. J& t+ Y

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 / R9 {' `8 K+ p" K+ z: q, l1 A
    + E! k) r  c: l9 s8 s( E
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    3 v# ^$ F9 m: A0 c

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18$ ^0 i" f$ T" h$ U0 B+ V
    谢谢你的建议/ w( k' y- ]+ E' Q2 M
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    % W" I  f) N4 ]: o3 R【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。4 l0 b) I* Q% z, U/ ?- W

    3 G. s" F8 `6 K2 D9 F( o+ O

    # w4 p: z+ K- P" j. f根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
    ) O/ @+ b9 a. b; c! p- k3 ^% M" ^
    * j9 A. h. c7 |$ n0 U
    $ D# O3 E  u- D# `/ [) m- V. h5 L
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    3 B5 I: k; V0 R) Z7 C) K

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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: N. o/ D( q+ e0 ?1 ~. P. ^
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    $ m8 k0 T, n* d6 L
    谢谢你的回答。1 J' `2 ^, s0 @. x
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;3 ]  k4 A: x3 G$ M
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了: S$ S! b  y$ f
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    ( l' T, d+ w, {; e

    点评

    链路训练最开始是工作在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:168 q/ }* k0 [4 [
    谢谢你的回答。& ^8 d3 E8 ?  N# H7 p
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    ) ?' A4 n9 _# O4 m8 d
    同意,根据现象看,应该不像是channel信号质量的问题:
    3 M: {6 c) |- @. U9 q. H4 x, |4 A0 z8 |' y
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。; n( i7 `; i8 p% I1 I  N" {
    7 ~/ y2 L) w) W& S$ k% r" ~
    谢谢5 L* W+ R) }3 _% \6 x5 ^

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-26 02:28 , Processed in 0.109375 second(s), 29 queries , Gzip On.

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

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

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