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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;
    ! r3 Z- O( b  ^: Y% u; p' F问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    ( \, @8 `2 ~3 Z9 q' a
    2 d* G; D6 Z( \  H: O9 s! v0 f' d/ N+ M- L8 Y, l! j

    / C; m7 k1 O- t! G" b有没有大神可以指导一二,非常感谢!% I% L- A8 B- ^3 K# g& D# X

    1 c7 R! `: G' h9 g # m+ ]" R; ?. H* k

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:0 D. D& C2 e8 O$ K7 I
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    # T7 y+ w) l3 |- z" }! o6 y% [+ _2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    $ N/ d/ N, y0 M  d& z, p3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    ) c, c2 W# |- e4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话186218735722 J( |! K/ S" o6 q; C% p& F4 t& T

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

    1.jpg

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

    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
    , j8 ~( `0 m! j2 G: r請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?( B+ A/ h2 C4 B
    以及Downstream的Device是什麼 ...
    3 _' Y* _9 e& m+ |
    谢谢你的回答,以下是你提到的补充信息:( G9 }" L" R( K; q& B3 ?
    $ z" ^8 Q8 X, i( E' C
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
    # [* O: C# h- @2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    9 O( a) E/ d7 c- T# b3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    & k) }% C; h5 k# _, r4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    ( N! H  i* [3 e3 u% B& p3 q
    8 T( L( [0 l9 P如果怀疑reset信号的话,有2点说不通吧:
    2 Y4 Z, E) t4 d6 q: H. E4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    * U- I& p  `$ Y4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    : I7 a/ C  Z3 J# Z9 b4 l  X1 Q  ^9 m
    0 u3 H9 J. K' t4 X) h - D( w; y7 E) a5 I2 g' {

    ; A- U2 e( [. O$ _- L

    点评

    你的上行端口是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 编辑 2 x$ {/ L: r. b+ g; ~
    Nick.song 发表于 2018-7-20 10:10/ K5 |% j7 U) c4 j  B& |7 E
    初期我應該會做幾件事情./ \3 b" R. Q" l& ~( d) W) \8 y
    1.更換其他Device確認不是單一Device造成.  ?. b" k. X' S! x; p
    2.量測Downstream PCIe 訊號.
    5 ~, n1 j7 E1 K6 G- |" L+ A
    谢谢你的建议
    7 U; a( y. L! x: U4 u1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;2 P8 Y+ i4 N: c4 @: N
    2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    ( C* k4 C1 R  r2 _" l3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    0 I7 f1 T2 k0 ^
    $ F* N+ n1 y. X( k8 c  h$ M# v
    * [7 g+ b: i7 c, D+ f; E【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    $ A9 b1 i  h! x$ `4 I& w4 Z1 M# z( x( R" ?

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?& z+ ~+ W2 H: G4 b
    以及Downstream的Device是什麼裝置? ! x% U( [' J+ H6 S- q1 r
    Reset給PEX8724與PCIe device 是同一個source嗎?
    . Q" \  {* q% ]$ PClock給PEX8724與PCIe device 是同一個source嗎?
    $ U5 w/ t/ p7 T0 [可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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- P: S- F: l( \
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    3 d. X0 u- W5 t5 w) }
    谢谢你的回答。
    : ?% ]. q$ W9 a* K2 s0 p, Q; W5 B! z! o1 B
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。& I( T' D% D8 R2 w9 h4 J( @
    ; N+ f: J# X5 v6 f/ w: L6 l

    # r% [( C: s- p' {; `7 K: i2 \
    8 g8 q! x9 F8 @2 E请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?" ?7 ]/ V! c/ V* L" |" Z: B' H! q, u

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.# v; ?4 T: }, X5 T8 [+ t; J
    1.更換其他Device確認不是單一Device造成.
    8 P2 y1 M& Z! S' l$ q0 `' ]3 F2.量測Downstream PCIe 訊號.% q! r& k9 H/ R3 L
    3.透過PLX SDK確認register是否有error訊息.
    & `$ `& ~5 t0 U: a
    0 J2 U  C* d# X' W: R給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,  s1 {0 P  U$ N2 w5 m; o0 {
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑 - g) X8 u/ w( t( r: O! }# n$ u

    7 h3 U" ~8 q# j. @) ^2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB./ n( e( z" ?" W; R
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit2 h. ~/ L: o+ k2 D7 k% V+ B
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    , M+ p/ v4 j( M! r, {1 s8 ?9 w  q: Z7 m2 A# t
    更正這一個敘述,
    * X* y  d: H, d5 n+ x是不是進入睡眠後你們的driver沒有再去修改Regiset,/ E1 h9 n! W  r8 V3 l1 g9 P
    只有開機時才有去修改.6 D0 ?5 [& L! {$ O$ R* _2 p% K

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑   o2 i, s& q; ?% u4 G! o! K

    ) T8 M* B0 @) b; k去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    ' Q- a7 h# m# B; P: g/ a

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18: p4 c1 |+ P( P9 V$ ]3 Q% x
    谢谢你的建议- C, ^* z4 I" Y& W: m+ `$ Y
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    2 F* P: G# v0 I8 e& u9 L
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。; B( L3 J0 ]9 j6 ~: f9 \# n# G2 S
    4 [: M( `. h# s' i7 [) z

    4 g2 T) H& H* v" O7 s根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? 6 D+ `- t; ?2 @( e2 c
    : k) O8 E1 @( l0 r, ^
    * K. B# `: _( r7 h3 K0 Z
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    % J1 O" x  @8 j8 C

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
    1 R+ a, O' J7 n3 {# j- [' H/ S【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    * n7 h7 K; Q. ^. U$ e
    谢谢你的回答。
    9 J9 s/ C: k/ B" ^2 Q现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    : k4 X7 ?) m: q+ A( G; B2 g1 f1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了6 P1 ?" Z( ~' L3 P0 |) ^  Q
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。6 h$ }5 d, {0 [6 _* g% R1 J

    点评

    链路训练最开始是工作在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
    - l! s* S$ n6 J+ H4 K0 W! X谢谢你的回答。
    4 A) H1 [1 `* j' C$ ~现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    ; O4 l. C9 N4 F  a( G5 Z
    同意,根据现象看,应该不像是channel信号质量的问题:
    ! n* @6 b+ k' i2 X0 F
    3 c% c( a; V! t% o# W提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    * _9 }- J: u. ?1 `& e6 J5 i' W# C3 L! c
    谢谢  F- ]! ], c+ D" A/ j% _7 }

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-12-12 07:00 , Processed in 0.203125 second(s), 28 queries , Gzip On.

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

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

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