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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;) [3 ^8 e; b: M; e4 e2 ^5 v% y
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    , [6 R% K! }) Y3 {: c4 ]3 V& Z) d0 L

    . y3 m* E- j; c
    - b5 [+ z$ B  U6 N有没有大神可以指导一二,非常感谢!
    8 @& k) u# |0 ^! O7 L2 {' S1 b) |7 _% T
    5 f1 L, w8 T( G+ i  S

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    # }$ }4 A, x. i4 `0 P' o2 j0 L3 @1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    9 W) p: @' R, l' _* f0 B+ f2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    2 G9 `3 C$ o8 r, n5 m: i( b0 _3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN33 c9 I6 Z2 n; r# [8 c
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572% u4 a: N1 q, h2 T

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

    1.jpg

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

    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+ ~0 b( P5 ?+ d  v0 W8 ^; v+ \9 {
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?+ K8 g9 G; [; F- e+ g; Y( j
    以及Downstream的Device是什麼 ...
    5 D) G! ?: H0 X2 `8 l+ B6 D
    谢谢你的回答,以下是你提到的补充信息:7 `  t. M/ m% W; w3 E/ r
    7 k, r1 a+ n) m7 Y; g
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;6 t3 x2 B0 |" {- Z5 H4 X& e
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    # ^% V% u' g* T4 ]  b3 H( Y* D( T; v3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    6 s; s- L* {. j0 `3 _& `  G: R4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    8 m6 u9 R  Q! |4 K2 t
    0 Q$ V4 D+ f# i; p* F如果怀疑reset信号的话,有2点说不通吧:
    5 b! ]0 F3 e: u( _# I: l4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    2 B7 y1 |, C. l2 U9 c0 E4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?: G: m% J2 Z3 w' E9 }; r" e

    + l+ Q, z+ n1 v- P) d! @
    $ c# W5 g  {" C/ e- s
    3 F  E4 W: d( p! d( 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 编辑 * c, {# `1 Q6 E1 t
    Nick.song 发表于 2018-7-20 10:10
    ) y3 ~& @- N# _初期我應該會做幾件事情.
    7 h' U; B% e- G$ u4 a4 t/ N1.更換其他Device確認不是單一Device造成.
    & R* X$ r! p/ E) s& }2.量測Downstream PCIe 訊號.

    ' K6 Y1 a& A6 v+ H, Y8 `谢谢你的建议7 O* N7 w+ @/ Z2 w7 {
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    2 O3 ?+ t, m3 i8 N) I; x2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
      G& v( g7 B. d7 G% t4 H3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    ( V' _" K6 x8 a5 C% n- C2 a: {4 F. ~* l) \, o: P% q
    ; D5 k- m, z* j
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。" h( ^( f, m3 T' d$ w
    1 r4 _9 O$ z) y$ V

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?$ L' T; }2 \! T: r4 R1 Q) ~6 e% t# r
    以及Downstream的Device是什麼裝置?
    8 g4 n. ]$ {4 j/ k5 T8 ]Reset給PEX8724與PCIe device 是同一個source嗎?
    $ F+ o/ T- C& R/ JClock給PEX8724與PCIe device 是同一個source嗎?2 z) q& S* N1 s* d
    可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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:431 l7 ]- n2 r  u5 y
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    ) C6 M2 }: _' X3 J  O( r; M谢谢你的回答。
    2 x& V5 E1 N5 `2 k- f$ \: `
    9 Q- }- _& Y& {5 E7 z. h) \PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。8 c9 Q6 V: T) C* @$ i
    : ?9 R. `) o4 M6 u! ~

    " m' \: f- ^2 e
    3 n3 i; E& W% i% K! j% _请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?3 T/ t/ ]: M& o4 c: A

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    ; R, b! ?2 R6 J; a, Z1.更換其他Device確認不是單一Device造成.2 X. u+ @- O# b5 z# ~7 x
    2.量測Downstream PCIe 訊號.
    $ S* `% O, }; _. g* M3.透過PLX SDK確認register是否有error訊息.
    5 G% ]0 e+ R7 \  S" i  l3 z6 l8 F# w4 {- E
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,  c$ i6 X3 u# o* |5 }
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    % J7 n! y: W% k$ N+ d& j% B- ^7 R+ V- F( D5 p
    2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.3 q0 H8 m' O' j0 A% a. V
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit+ v# X% ?0 d! V) r% C1 t# N# R# E
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.- y4 i8 @  \  s! {$ w" K0 Q; x
    / }, T  P- _5 Y$ e
    更正這一個敘述,
    # u. l) D( a/ b% {- ~是不是進入睡眠後你們的driver沒有再去修改Regiset,
    # B" u* C- I' ?) }. t* J只有開機時才有去修改.1 X6 \$ p2 h/ a, b( U0 h# R! n: `

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 8 H% N: w- D2 n. N' v
    5 C& z% [7 A; Z2 i0 m
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。! o$ H5 G2 r! d! S$ [  Q, N  ~

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    5 Z$ K4 N; Y; }谢谢你的建议
    * R1 ^! ]4 x- Z1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    4 A$ D2 {, x( A! C& G【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。9 r4 u5 \% U$ h
    + X! N$ O3 z; V' k

    ) D( D( f* b  p根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? " j% ]5 d' R. A! E$ K3 Z7 }

    ! p& K2 O) ^  G" @7 X+ Y9 u
    ! v/ v0 U4 c/ b6 Z4 v4 I7 `) a
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程1 h5 ^/ W% D; ~

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
    8 C% E/ B5 V  n# I6 D( V【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    " Y" d  I" g* |4 u9 Y4 U' w
    谢谢你的回答。
    8 ^3 |' I- C: P1 c& y现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;- F6 h5 L* j$ ?! k
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了! J2 D0 @4 @$ I$ V0 o8 E
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。# _: F0 E! Q, O

    点评

    链路训练最开始是工作在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& ~5 L: i  G( j) B
    谢谢你的回答。* d9 T0 S) V: n
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    + v; k; w5 Q- a8 r$ a
    同意,根据现象看,应该不像是channel信号质量的问题:
    - j! M- l' @7 }4 b, r' T: k! g8 I: {5 Q- T, @' N; k! o
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    , e' x6 T" H  c/ C, H5 Q1 l3 e/ S/ o  f* Q; O
    谢谢
    7 Y+ w) m* F( R5 d; u4 u) b

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-18 17:20 , Processed in 0.140625 second(s), 29 queries , Gzip On.

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

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

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