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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;- P9 c5 }; X2 F2 w  _2 D
    问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。3 M1 J8 A( R; `- \

    $ x! ]" N/ k3 D) \4 }; Z7 f0 S) Q. w  m
    ( K. B/ F& J! [5 g
    有没有大神可以指导一二,非常感谢!* y! p+ C  m( v" c* h# q) p8 L
    , v: b% l( T  L! ^% `- I

    0 n) b6 G- d& L

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:7 f3 Y. \- T% @  Q
    1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测" }$ S: ?. H& P0 L* j  {4 M/ u
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G2 w* v$ c& q7 K& Z( _
    3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3, n7 `; Y: z( Z6 r+ x0 ^
    4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话186218735729 g+ @6 I3 v  n! I( w" R

    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:479 A( m$ ~3 H0 M+ J! |
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?
    $ u5 L& _% ^7 X7 t以及Downstream的Device是什麼 ...

    + b- F, s8 Q/ ]谢谢你的回答,以下是你提到的补充信息:$ ?9 Q% Z1 J7 H. E1 D. G, W
    % A# u/ g) U# j% S+ l* P
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;6 f1 b* T! B" \1 K0 Y2 O
    2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;
    6 Y) d: [  m& B. H* m4 W3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;9 O" Y3 i$ }: ^8 k# b
    4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;. t" X* u9 _4 {4 w" `9 `
    8 z# `6 ]7 }. s0 s, I! \" v( {
    如果怀疑reset信号的话,有2点说不通吧:$ [! v0 A5 ~; ~; m' J
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?
    ; f$ K  O$ l- d3 \; w' f! t4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?
    - Z( E: y$ a5 ]- \) [2 z; D  O5 c5 e  m' K  {
    0 d! d, N$ I$ V6 U

    4 p$ g& G* f5 N0 Y+ p

    点评

    你的上行端口是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 编辑
    0 L' u" Q/ M' o* H) j
    Nick.song 发表于 2018-7-20 10:10
    8 H5 J5 [1 n9 g- Q" g) u( Q初期我應該會做幾件事情.
    - Q( h4 |( Q3 `/ b/ N5 n1.更換其他Device確認不是單一Device造成., s% q4 V! k9 C( F  j0 }
    2.量測Downstream PCIe 訊號.

    ) M, @+ z( \2 y: m9 k. Y3 P/ \谢谢你的建议* E8 G( ^. T2 J: x1 s  b8 j2 K! e
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
      T1 n7 [2 Y0 `! p+ \/ X" _2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······
    : i# E1 ?( O9 K# C3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;
    * P! I2 Z  d! ~/ r
    + @3 R/ G$ Q: e: j% E! b8 H) O6 E
    3 F7 `; a- g% q/ t( K! j6 `【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。* h6 }$ ?9 L8 t( Q5 \

    ; {9 d, E% h7 R1 {

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?# Q9 g. r" \* e* n( `8 {- Y
    以及Downstream的Device是什麼裝置?
    ' c/ m. G4 [& B4 [: J, |Reset給PEX8724與PCIe device 是同一個source嗎?
    4 _4 a7 s4 E% q/ I: I/ RClock給PEX8724與PCIe device 是同一個source嗎?
    8 \9 B7 d1 p9 m* [7 Q可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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

    5#
     楼主| 发表于 2018-7-19 18:13 | 只看该作者
    Jujianjun 发表于 2018-7-18 13:43$ m2 R5 \( j$ k2 N
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    4 N5 l8 _4 P; f) T" x+ P
    谢谢你的回答。
    6 O$ J8 E1 G! S$ {  M: F" ?1 R
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。
    $ r* S; ~. k) R/ E: \
    . A  f/ ^9 p' C! s0 `7 C+ i
    3 a; M0 ?$ Z. h- u8 |
    ( A" b6 w8 ]9 M请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?1 ]5 A' U( h( {/ [7 b% |1 O7 k8 f# B$ h

    该用户从未签到

    7#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.8 j9 a4 \& G- A+ O. g/ a- u
    1.更換其他Device確認不是單一Device造成.
    7 I9 [) r6 ^1 J3 l. I2.量測Downstream PCIe 訊號.
    2 D4 }" @5 t# Q3.透過PLX SDK確認register是否有error訊息.
    4 P9 S7 ~% k  j1 H1 J
    6 k; u$ v1 i; E- S9 ~+ @- T+ o9 D給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,: `8 w* S% @7 |; b7 N& H
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    8 t+ z% [/ W( f7 \) _! p3 Q" m: _. d- C
    2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    . z. v1 I! I5 n, z3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    ! Y( N* b! w0 ^SDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.7 x3 V! ^) @. y! Z. U% T3 _& P" D

    9 k* |8 o5 Y( O" D, E4 e更正這一個敘述,
    % y) a1 d4 g* j是不是進入睡眠後你們的driver沒有再去修改Regiset,: C5 R8 j5 F4 G% M. {$ h
    只有開機時才有去修改.
    1 j% U( p: ~/ j/ P6 l. y" h( {

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 ' W# e( x0 ^9 p4 d8 h; W
    . t) l6 [  C3 E0 I, e0 |7 s& G
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。
    1 @. s1 V" v7 B+ T. x' H$ k

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    $ o5 R' D. ?1 z; v; O3 _谢谢你的建议7 K" _$ A, }& s* v6 H9 W+ `- @
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...
    6 ~/ s6 T7 v1 @/ c. @; [9 i
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    + t& t/ U# t$ v1 O4 ~; O9 t1 v3 r- X( [' l) J8 B4 v! h  s

    4 ?" c9 R9 N7 w8 h; [根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? $ w. k7 `& F; J* g

    9 g& E9 _- t9 ?( Y2 k% I
    0 H2 Y" c1 }: t  ?
    另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程3 W5 Q' o  V$ }1 H( k3 ]

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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* b( a, a7 b4 f0 y
    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    6 H1 B  s" ?3 J) \
    谢谢你的回答。3 \9 k' A2 i/ p5 l' ~/ S, ], l6 |
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    7 L5 [3 E2 q) @& D5 O3 t+ Y# H1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了& V& Q# K9 \- ]
    2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    : m5 t: ]& c, `1 t- P

    点评

    链路训练最开始是工作在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
    ! ^; Z$ k: |* q0 u- m谢谢你的回答。
    / `# X& k% S; I7 k* G6 S现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...
    . Q- P9 @" v4 c# Y# K% D3 ]5 G, v1 R
    同意,根据现象看,应该不像是channel信号质量的问题:' W3 C* c2 C+ n- z% `

    # x5 |/ N& W/ W/ P, {提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。5 v. i8 `) y' M3 i* ^7 I- R( r, p' Z1 o

    1 I. P- i9 _5 t谢谢
    * b# h: B( }1 z! X/ f  |

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-12-12 06:48 , Processed in 0.234375 second(s), 40 queries , Gzip On.

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

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

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