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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;' P- m; \% B7 W# i1 p. h, `
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。4 j  y' f$ f: K: p2 Z( S& U& Q4 Y: k
    ) ]3 T; f( n5 Z
    ' |& t) w$ ?9 c4 x6 Q* ]

    . Y- k* f9 ]7 Q  S5 _/ M  X( r有没有大神可以指导一二,非常感谢!8 p& Z) ^! i8 n! j6 r

    3 X3 B3 I% a$ _- M0 ^
    ; Q8 s* Q5 }$ x" T2 L1 t# B2 B# h% }6 M

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:: a5 E7 V9 {; Q
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测
    ! c6 ^3 S9 ]- @" o$ n2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    ! M; X" C$ b% K+ B  D7 ]3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN37 n; A7 f7 Q. o7 `5 U* s* y' I3 c2 I
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572
    1 O# S3 g1 {+ E- i6 x$ o

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

    1.jpg

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

    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" e7 G2 k* H+ C. @, d: a- x
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    * X4 i  G% e* m8 X1 Y" D以及Downstream的Device是什麼 ...
    3 G# A1 u$ B5 p- D$ B4 r
    谢谢你的回答,以下是你提到的补充信息:
    7 c. s" S2 J6 C* V, @6 g* F1 f3 E: U- U/ C2 \
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;8 y# ~& s. c' N- l
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;& E7 f: [$ z) w6 ?: I- ~
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;& J1 a: j9 s2 \0 }
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;
    : q8 B  M" H, c1 p+ t/ T
    . I, F) Y$ O0 B' w$ z( c. o如果怀疑reset信号的话,有2点说不通吧:
    . h! l6 ~) Z( G8 J+ i, f1 m# }4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?8 e& y* N+ J# p( P4 Y# C4 l9 g- _
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    4 p) v1 k; N& j1 C" x& x8 `! b4 A4 f

    2 i( Q$ U! T1 r9 P. a2 S
    " Y! B$ Y( h3 ^1 ]

    点评

    你的上行端口是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 编辑
    0 r# \6 s' k& c7 g
    Nick.song 发表于 2018-7-20 10:10
    ) i2 ]7 l* v7 I9 m初期我應該會做幾件事情.
    0 Q9 l( U- S/ k9 z1.更換其他Device確認不是單一Device造成.: U+ u. j# f9 J2 d$ K
    2.量測Downstream PCIe 訊號.
    5 D% ~# {1 Z; d6 S$ l
    谢谢你的建议1 o6 w5 P8 K0 X- |
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    % d& T2 U$ y0 F0 g+ T2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    1 y, v4 o! d9 u3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;0 M( R3 L; Z9 U/ Z( {
    * A# N# W. Q- N% |4 J
    8 Z. G1 g5 {% J1 z+ h
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    - s+ g7 P  F* C6 {, g" M
    % Y. ~: x$ R) j* s! F

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?2 c( c, K% u  d
    以及Downstream的Device是什麼裝置? % B6 m. H+ z3 o
    Reset給PEX8724與PCIe device 是同一個source嗎?
    - Y& [0 ?- o% n) p5 O3 CClock給PEX8724與PCIe device 是同一個source嗎?1 U7 Q, j  n; h; O5 L6 L  {- o0 e+ 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
    % V9 ?6 i' R9 }& {* r8 f6 \4 E( |是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?

    # x5 J4 e0 L. P谢谢你的回答。
    : j* Z. ^( ^3 m0 s) f/ \# t
    ! w. ^) g$ P; f/ nPCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。8 c4 X; i& F+ m& _/ t7 W4 ?
    : k7 o; Z: P: h! t) I( }

    2 A9 Z; j) n' y$ i7 [0 D, `' X4 m' p8 O: Y+ n( N4 d  ~1 i
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?" B3 \) v5 C' M$ s9 Y

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.8 S: h4 V; Y7 \' f6 h
    1.更換其他Device確認不是單一Device造成.: p6 M; W9 v) P  d; P' i( L
    2.量測Downstream PCIe 訊號.9 L/ X" ?6 C( D' ^) I$ m
    3.透過PLX SDK確認register是否有error訊息.6 Z; M; p7 P. j" Y  \

    , ^$ Q6 ]1 A+ p給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,4 ~, a# e0 g5 t! W
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    4 c% [' |# R9 l" {- a1 W3 Y, f0 U! h# U  P, }
    2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.0 |) g( v* V0 l: l
    3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit" [) |' d& Y# q& J5 D# w+ d* U. z
    SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.
    ' l& n5 p$ C5 h) T7 m. c8 D
    2 M$ B8 K5 i. f% Y; w更正這一個敘述,3 P& f6 _% x; ?! X& [- A( w  ?
    是不是進入睡眠後你們的driver沒有再去修改Regiset,: G; H$ _. j/ P4 S7 z
    只有開機時才有去修改.
    . W" t6 }4 q7 |$ y% p  s

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 5 a+ L8 u5 b0 W& V" {4 \7 h' F
    0 b$ B% [' A$ K6 a
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。. r% s; F7 R8 |. }

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    6 N  T. |& i: m6 h8 Y% j- L  \4 t谢谢你的建议
    , b* H- t" J+ m7 {0 ?" A1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    4 c: w+ n+ E: O: y# X6 A8 @. f; T5 U【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    9 l5 d- h5 P2 Y- m: x, \9 T5 c$ ^8 M9 k/ K& Y
    ; [- ^1 w. P# z4 o
    根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ?
      I+ {9 P/ W* {/ w8 m7 P7 l4 R1 S3 j- d' @9 t3 ^( E+ a  `- ^- U3 @
    % x% Q- p8 T" g8 \7 p( V
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程/ u1 y1 a( ]/ z

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
    ' h+ I4 q" W- Q' Z* L【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...

    . c/ ^1 Z; _* t/ C) ]$ y谢谢你的回答。
    6 q- D- m+ |3 z+ K7 [2 D0 P现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;8 c$ M# M* ?2 Q7 C9 D
    1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了
    : L0 n0 b! [6 ?) e5 N' [% v9 _: p2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    4 G4 g/ t. U# R) w8 I

    点评

    链路训练最开始是工作在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
    3 Z" u6 b! |. r- f- O" |谢谢你的回答。
    ! e; f, l% f/ P0 p! S现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    ) C9 y* s2 W5 {- o
    同意,根据现象看,应该不像是channel信号质量的问题:
    * c6 m, n- r: ?* _& v0 Y4 ]( r" V+ o4 w- }! X4 u" ?
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    / @  M6 C4 x" @9 v, y
    ' Q1 T( H5 N+ u谢谢
    3 O& Q* f* M: T* |

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-4 06:54 , Processed in 0.109375 second(s), 29 queries , Gzip On.

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

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

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