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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;5 W% p2 S; _. t( h3 n+ l" S
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    1 V, m: H. Z/ z4 e, {% w: a# {& r. c: J# \$ x# W. O; ^
    8 o( C8 ~1 g' Y/ v6 L

    5 M& w+ m" x$ t- w有没有大神可以指导一二,非常感谢!0 b* m$ V1 b, I. J4 A# I6 c" B$ O+ d( }

    , A: i( l" K, i5 Z1 z" M2 J$ a0 y
    7 n) a; f# M. Y% D1 {0 O! V8 S

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:( a6 }8 Y% v! r/ P$ b6 R
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    3 d' R, F. P1 q( Y: L2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    8 _/ R/ ^6 Y9 \+ z3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    + M" S/ |* g. s0 f1 q4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    , r, j. e4 M. ^/ h( B" R; U

    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. L5 O% e; ]4 n2 Y
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    9 I3 E$ w7 C7 O/ C' q以及Downstream的Device是什麼 ...

    % e1 J1 ~% @) C  G" \# Y% `0 ?谢谢你的回答,以下是你提到的补充信息:
      M9 j! S% G% s$ Y% @
    1 a/ [" W% ~5 J# @, }2 @& ^4 n1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;1 k1 T) c5 _- Q, f+ p8 O% P
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    " o2 s* }9 N( U$ a3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;( G) w5 v" w9 R2 Y1 X8 v& v
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    1 c, J7 G1 r' t% @) R1 R. c0 m1 h0 V5 z3 o$ H' @
    如果怀疑reset信号的话,有2点说不通吧:
    ! h# M; Y8 y) F0 ]  f" \6 }/ l4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?7 H9 r+ t" ^, c& M, W7 P& M
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    9 G2 l* ~( p5 d8 ^% c( q5 T. y! f' D
    0 x* K4 B: ]5 B/ |( W: _( P5 | 3 |% |4 y7 w: w& B8 c5 U
    & H* }5 U/ j" c+ 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 编辑 ! L+ W3 q) U( |( ?' X0 {/ W' W
    Nick.song 发表于 2018-7-20 10:10
    1 F" _: K: ]8 S1 Y$ w0 L初期我應該會做幾件事情.0 [; W! ]/ L# ^5 n5 s
    1.更換其他Device確認不是單一Device造成.
    + w2 g: |  h- E" B; g8 S0 l2.量測Downstream PCIe 訊號.
    ' ]) Q" Y3 [1 N
    谢谢你的建议2 m# }* i3 A8 m% ]9 h1 C6 E7 W
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    2 a0 y& n1 E0 p+ W$ I2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    ; D: G+ m  U7 R% X  d3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    - O; z0 `2 A0 m9 R, |" n, J; c; u1 ^

    2 N+ v9 A: s( J" {# r2 O0 @【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
      B' ]$ n( E! F5 p
    9 Z) Z$ j) ?5 w8 C) O/ L2 Y

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?, {: L! e+ {5 k6 }7 ?, G% T
    以及Downstream的Device是什麼裝置?
    ; \* [, o9 e! hReset給PEX8724與PCIe device 是同一個source嗎?
    & Q! \$ u# ?$ o4 ?4 G$ n. g; U- o+ mClock給PEX8724與PCIe device 是同一個source嗎?6 i" y6 y/ w7 F- l
    可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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
    8 R  [8 ^. @; }是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    # A9 t/ v7 U; h/ _9 u* p
    谢谢你的回答。) `) @8 o, s$ E$ y( J

    : }& A4 C/ s( M4 ?( ~* hPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。- r# i3 ?3 m$ g, T7 V+ K
    ! {3 z, E1 L8 g+ s7 e" J. H

    ! I7 a) H6 F- j! o) Q3 @3 j' }6 j9 h( S+ j7 p& H
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
      L4 g0 w% g1 D( Z) N* C1 J

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    9 y# Y, j. M$ Y8 V4 J1.更換其他Device確認不是單一Device造成.7 B) m4 l- Y4 s" n# H
    2.量測Downstream PCIe 訊號.
    9 Y6 U. @9 H4 f9 J$ x2 I9 Z3.透過PLX SDK確認register是否有error訊息.8 O! |+ f4 w$ z2 C% @! S
    " @$ e6 k/ @' W
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,. D4 }3 R/ i9 W& l. `" S
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    . z; A: S* G' `6 V: e6 H) U  O
    ) [+ n* Y" |3 b; [2 F3 {1 |; J- o9 l2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.( f% F  R2 c; S2 C
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit* j( m! Q) r2 ]# n4 |$ R2 R
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.6 x* R- [7 j% K5 W) g/ O

    9 k/ L6 |8 [# j" p% A9 I更正這一個敘述,9 [- e  K" Z" `$ _. @) {
    是不是進入睡眠後你們的driver沒有再去修改Regiset,* b+ K+ L$ u/ p' }
    只有開機時才有去修改.
    , k, \0 h2 K* B& r$ ^( i2 ]

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑
    9 N7 p& |7 L4 b6 z; m. R/ p/ P  r& z+ a- d( {/ P8 z3 t# T4 y7 K" U
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。/ R. l4 j, z/ h* @! W4 z

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18# m+ E6 Y, i! q, p6 s* g: N
    谢谢你的建议7 F0 @  s9 v5 \$ Q3 }! n
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    3 B, _/ s( q, }5 f1 n9 f: k
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。% n( T2 N: R1 M) m% ?0 ]' d6 n

    ! P  q5 R. x( h
    3 Z) j3 l8 F+ V& F& i% u
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? * `8 o$ o) o& D1 l- ^, `

    7 K0 @  P$ y: r2 u; J4 F! s3 }

    3 a: `/ d" P/ I+ q) @' c4 ~' C+ M另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程: a8 Q2 ^: J2 a0 s, U0 b

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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. n0 j, A( i6 m* |5 D) i1 }1 c2 w) w2 m
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    5 h1 S9 Y$ P. j- j- E
    谢谢你的回答。" R7 W$ W+ T/ r, Z& H0 \( x! o
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;( i4 d6 }- y* x0 _8 \- w
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了6 f  N7 `$ E8 M1 V
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    7 \. `7 V2 y  G7 {  S

    点评

    链路训练最开始是工作在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: N6 ^  D" v) y0 I
    谢谢你的回答。1 s: U6 ~2 G5 o+ I. S( s( u. L
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

      r( V! O" x' H, e同意,根据现象看,应该不像是channel信号质量的问题:0 ]! W) m: [/ M, l5 X2 n# j/ r1 U! X

    . w- N( v0 A/ i' n9 t+ Y提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    1 K( f- R7 m; X2 r9 }# u' J# `7 D* `' r3 e
    谢谢. Z0 i: j5 l5 A; W& E

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-12 06:35 , Processed in 0.140625 second(s), 29 queries , Gzip On.

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

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

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