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

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

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

    [LV.4]偶尔看看III

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

    EDA365欢迎您登录!

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

    x
    我们系统的PCIe链路示意图如下图所示;
    1 t1 S; c% I+ L5 E3 b3 H问题:每次开机或者重启后,通过工具可以看到CPU和PEX8724之间的PCIe链路是工作在Gen3的状态,但是PEX8724与下游的PCIe设备之间是工作在Gen1的,通过工具强制让PCIe链路重新训练(retrain)之后,PEX8724与下游的设备之间的链路才能工作在Gen3。
    - x4 O. I& e+ i4 |6 A; g* n  K8 G1 c% _6 q2 @  {

    % z$ u4 C$ \0 x
    6 |( B8 _" Z* M; V& ]0 f3 l/ O# f, f有没有大神可以指导一二,非常感谢!
    . `) l9 D2 ^' r) x' H; p5 ^2 x+ l# n  Q% G/ B/ U" N( T+ p# w
    6 `+ W  h" q" A+ `' u" a6 ?  `

    该用户从未签到

    推荐
    发表于 2018-7-16 12:56 | 只看该作者
    PCIE的启动顺序是这样的:
    - c0 W/ \# K. p" J1. PCIE 的root complex上电后,会先由LTSSM状态机开始检测# w! W% H7 V" H6 p7 s. E
    2. 分别detect -> polling -> Config -> L0,这时候都是工作在2.5G
    . a7 q. Q' l9 f# c3. 进入L0后, 会进入recovery状态, 协商进入GEN2或者GEN3
    + x. a- l3 m/ A! h* C! @1 W4. 具体的状态图附图所示, 这部分比较抽象, 如有不明白的可以call我电话18621873572; `- c* p+ s: C7 m6 j: k0 I' R

    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:478 x7 M6 p/ v( w  T9 s& |' B
    請問"通过工具强制让PCIe链路重新训练(retrain)"這段敘述是透過什麼工具?! F! l7 u5 b. q( F4 N' R
    以及Downstream的Device是什麼 ...
    0 f* y$ j2 V6 [! y4 K3 F
    谢谢你的回答,以下是你提到的补充信息:
    * M, z9 x) N1 U5 [1 ?" l% n0 j1 i
    1、用类似于PCIScope的工具,PCIe switch有一个“Retrain Link”的寄存器位,这个位默认是0,强制改成1让链路重新训练;
      s: |# ~- m- i2、Downstream的PCIe device,是M.2接口的SSD,PCIe带宽是x4的;$ I) }, ?+ I+ `/ l3 }& A
    3、给到PEX8724和4个PCIe device插槽的是同一个source,都是从同一个Clock buffer出来的;
    / [6 }, r$ ^' x8 v% V& S  l4、Reset信号不是同一个source,以下是Reset信号以及PCIe信号的连接示意,Reset信号算是同源吧,因为FPGA接收到Reset信号后会立刻给PEX8724以及4个Device信号输出reset;0 Z: U, j" c, ?& z' v3 w; q) g

    ( F$ r" F+ m* L, e$ I6 ]如果怀疑reset信号的话,有2点说不通吧:8 z6 |+ ?8 p4 `4 _
    4.1、CPU和PEX8724之间每次都能正常工作到Gen3的,无论是开机还是重启,无需retrain,为何PEX8724和down device之间都需要retrain呢?8 h8 X( F2 C( p: b$ p# y" ~7 q
    4.2、把强制retrain的操作通过driver(驱动)装到系统上,开机之后强制retrain,都能工作到Gen3,但是如果此时将系统重启(重启时系统不会掉电,包括FPGA,此时FPGA将reset in直连到out、o1、o2、o3、o4管脚的),重启之后,PEX8724与down device之间又掉到Gen1了,为什么呢?+ \4 H; R7 I: N4 g/ ?

    0 [/ C  D+ O( r" z) j  V; k - Q' A' |" p9 V0 [

    4 H9 |% [4 {, G" {4 d( O

    点评

    你的上行端口是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 编辑 4 c4 J( R- S1 b( x, o
    Nick.song 发表于 2018-7-20 10:10+ O: W) e, i3 }# X8 y& f; l/ s
    初期我應該會做幾件事情.
    ; B1 l, v1 \6 C% G. f: L% Z9 X1.更換其他Device確認不是單一Device造成.
    ; r: i( ]# ]/ d3 k2.量測Downstream PCIe 訊號.
    # B7 g# P7 h+ ?# ?/ I
    谢谢你的建议
    " b3 M! f0 e0 |' i1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号连到板卡上的FPGA,FPGA是支持PCIe 3.0的,这应该也算是了吧;
    ! |; O+ ^. I; c2、你说的量测Downstream PCIe信号是什么意思?通过设备直接量测接收端的PCIe信号吗?你是怀疑PCIe信号loss太大或者是信号质量不好吗?不过我们也没有设备可量测PCIe信号,小公司·······8 ~& P; x/ b5 z: ~5 s
    3、我刚查了你说的PLX SDK,我第一次听说,是一个PLX官方的纯粹的软件吗?需要购买吗?需要搭配什么硬件才能用吗?能不能麻烦再稍微介绍一下你说的这个办法呢?4、刚刚试了,关掉ASPM没有用;0 l4 B7 E+ o8 y' Z5 v$ w0 W

    . i* G! F- p% J; K9 r# U; ?
    / h2 U* ]- E$ X% x( V$ B1 ~  K【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,重启后也没问题,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。
    & z/ Z. b. z# s* v$ F  M
    ; F6 |  G" j9 E1 u/ T6 l2 ]

    点评

    【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器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)"這段敘述是透過什麼工具?
    1 w& r6 I3 F' b6 G3 l9 C以及Downstream的Device是什麼裝置?
    # c7 e: i  v  [. [# ^Reset給PEX8724與PCIe device 是同一個source嗎?
    8 x' ]& b7 o5 X0 y9 KClock給PEX8724與PCIe device 是同一個source嗎?
    * O/ Q3 \9 {4 k9 o" @) j% P可以再補充些資訊嗎?

    点评

    谢谢你的回答,以下是你提到的补充信息: 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 c5 @% B# l9 ^( v; }' y, e
    是不是有什么寄存器或者芯片的strap pin,在上电时把端口强制为Gen1 ?
    & l( X3 D5 X3 M8 x: B7 X* B4 m
    谢谢你的回答。
    : j1 w* b  ?$ k& R+ x2 U1 L* R: I7 x% \( T4 E6 N0 l5 }
    PCIe switch的strap pin我确认过了,是强制为Gen3的,根据DATASHEET,直连到1.8V。
    ) R" z1 K4 Y; y' b6 y, {
    $ f1 P& k- S3 `7 L8 G6 Y7 D% Q
    : U6 k* o8 ]9 g9 v" i5 J7 R  b. k& x; C8 {. ~) E, {- F+ M
    请问一下,有没有什么类似于日志文件的,能记录PCIe链路training的过程、结果?
    5 v* w4 w" m' ^- \8 ^5 V0 N

    该用户从未签到

    8#
    发表于 2018-7-20 10:10 | 只看该作者
    初期我應該會做幾件事情.
    ; G# M$ t4 o9 z' Q1.更換其他Device確認不是單一Device造成.
    4 E$ G0 A' l, J3 F2.量測Downstream PCIe 訊號.4 Z4 J4 t9 v$ C. ?/ P
    3.透過PLX SDK確認register是否有error訊息.5 o  l/ q9 M5 ^% p& n: T* ~
    + Y9 F. N, X5 \2 p0 v# v
    給你參考.

    点评

    谢谢你的建议 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 | 只看该作者
    再補充一個,) v) ^7 Z0 {8 A/ w" e4 o
    可以關掉ASPM試看看.

    该用户从未签到

    10#
    发表于 2018-7-20 14:52 | 只看该作者
    本帖最后由 Nick.song 于 2018-7-20 15:01 编辑
    . x' H/ u! C' D6 J& Y9 u- a
    / T2 U: h$ b, ^& F0 N2. Yes,確認是不是訊號品質太Margin導致降速,排除訊號品質的問題.如果沒有儀器只能先計算一下Total Channel loss看一下是多少dB.
    8 P2 w6 r& C, G3. 請參考 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kit
    2 x' b4 ^$ e" q" nSDK可以在系統端直接透過in-band去access PLX chipset,但這需要license,請與FAE洽詢.4 h5 P4 I( q% e: z2 r& N, e; }

    6 U- j8 m( b5 t) d更正這一個敘述,
    4 V2 Z6 j. c/ V  ^% H) {, ^" J是不是進入睡眠後你們的driver沒有再去修改Regiset,+ [5 |* U' K' S
    只有開機時才有去修改.5 S4 J6 A# l9 a# e, Y/ s) E- ^

    该用户从未签到

    11#
    发表于 2018-7-20 17:05 | 只看该作者
    本帖最后由 ykwym 于 2018-7-20 17:08 编辑 - ]1 N: X' [6 Y
    4 d& D( o$ _. c5 P  n
    去改serdes的参数吧,PLX的serdes并没有那么的好。PLX有个文档讲怎么调serdes的,不过那文档不是人看的。。。。# Y7 O# Q, R$ g7 w! }  `, Y. P

    该用户从未签到

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

    该用户从未签到

    13#
    发表于 2018-7-28 16:14 | 只看该作者
    gavinhuang 发表于 2018-7-20 11:18
    9 Y+ R; e; h# j  y7 T" {6 w- \谢谢你的建议7 F" b2 N4 e3 b- ^( _
    1、更换过其它Device,至少两块不同的M.2 接口的SSD,还更换过我们自己做的板卡,PCIe信号 ...

    ! m" i1 S' C% y4 L# K6 s【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到系统上,开机后能正常工作到Gen3,
    重启后也没问题
    ,但是如果系统进入睡眠状态,再重新唤醒的话会掉到Gen1。! r/ U8 |3 Z( K1 f: z

    2 ?2 c# B+ o) [1 l+ O5 N

    & P6 h9 l/ @4 C" i! G4 g根据上面这段描述, 很大的可能还是因为上电时,switch工作在了gen1, 因为进入睡眠状态后,是不是在eletrical idle的情况下, switch又回到了上电时的状态 ? % B' ]1 o5 W. k% f) n
    : {) @+ |: I1 \6 ]" n8 q) i5 o

    ( d- R4 H3 e7 \& L& s6 ]* L+ s. e另外LTSSM链路训练时,是没有日志文件的,除非用PCIE 协议分析仪, 来监控分析整个训练的过程
    ; Z1 O% X% i9 Y! Y3 y

    点评

    谢谢你的回答。 现在就是不知道为什么上电的时候会工作在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
      j; V: X/ D; S- `' B, J$ n【更正】昨天我说的有一个现象说错了,现在更正一下,我们将强行改寄存器retrain的办法,通过driver装到 ...
    3 S8 ]: W$ v  M/ A9 f( D3 x0 C
    谢谢你的回答。
    ! }: ?/ Z5 z+ W5 J6 M( A现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训练过程;
    % a/ }9 d5 e* a4 E1、电源的时序测量过了,CPU发出reset信号之前,PCIe switch的几路电源早早就准备好了
    3 u( P: I" G  P2 `& r2、更不可能是链路通道的信号质量问题,如果说是链路的Loss太大,为什么让链路重新训练(retrain)之后却又正常了呢?而且,训练时,因为链路loss降低速率应该是降到Gen2,能够降到Gen1,链路要差到什么程度了。
    # c' B  d% u* K  V

    点评

    链路训练最开始是工作在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  O3 J# ?, V' E0 A* f
    谢谢你的回答。$ G2 z# j4 G$ S
    现在就是不知道为什么上电的时候会工作在Gen1,我们没有协议分析仪,无法监控分析整个训 ...

    9 E5 c: C! S0 E8 G$ y同意,根据现象看,应该不像是channel信号质量的问题:# w1 I$ M4 ], U+ e5 [4 C2 t( B
    , \: n/ h8 F8 _( l
    提个建议:通过软件能把LTSSM开始训练的时间往后Delay一下吗? 我不是很肯定训练状态机是否可以manual control,会不会时钟锁定有关联? ^_^, 我瞎猜的。
    7 R2 t! o; j$ d; M9 _- _2 J" F8 j& d/ m' w/ x+ j5 q: b
    谢谢
    : G2 `! J8 M3 N- T: p# Q; ]

    点评

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-18 05:14 , Processed in 0.156250 second(s), 29 queries , Gzip On.

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

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

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