草庐IT

PCIe_TX/RX测试步骤

槐 三 2023-04-08 原文

TX测试

一:  GEN1、2、3采用自动化测试:

1. 点击infinum软件中Analyze->Automated Test Apps->D9050PCIC PCIExpress Gen5 Test App,进入自动化测试界面;

 

2. Set Up窗口:PCIE5.0->CEM-End Point Tests->Device Definition->勾选5G的-3.5dB&-6dB->选择8G的P0

3. Select Test界面将Device Definition设置的测试项全部勾选:

4. Run界面,点击Run按钮;注意示波器屏幕弹窗提醒,确认对应的速率,按CEM板卡上按键使测试的码型和实际速率保持一致。

5. GEN3_P01~P10同样用自动化测试,将第2步的Device Definition中仅选择P01~P10,点击Run,按CEM板卡上按键使测试的码型和实际速率保持一致。

6.测试自动结束,导出Report PDF版本。

二:  GEN4_P01~P10采用手动测试

  1. CEM板卡上Lanexx_P接示波器通道1,N接通道3;点示波器的autotest
  2. 点击Set up,设置Channel1+3差模有效,共模无效;设置带宽25G;
  3. 设置采样率80G,采样深度,采样时间;
  4. 通过第3步将200w个波形刚好呈现在屏幕中,保存成bin文件;
  5. 打开sigtest软件,导入bin文件,生成Report。

RX测试:

硬件环境:

误码仪M9070的TX->ISI pair24(选择哪个pair是经过校准后得到的)->CEM RX->add in card(1BF) ->CEM TX->误码仪的RX; 1BF板卡启动模式为XIP,可以PCIe启动并接CVD进行寄存器修改;

打开软件->setup->点击break+testart->当软件界面误码一栏的灯不亮+误码仪TX P9码型和1BF TX的P5码型均显示True时,表示1BF板卡成功连上了。

点击measurement->error ratio test进行为时1min的测试,误码≤1表示测试通过。

还可进行自动化测试,可测RX3项:compliace  LEQ compliance  LEQ Jitter Tolerance

2022.10.27是德科技实验室RX测试手记--

PCIe双芯板:1、上电码型为Gen1; 2、去掉一根RX的P或N就可以/电阻位加100或50Ω也可以测试通过;

更换为PCIe5的夹具板后1 2 问题不再复现。

对单芯板进行PWJ测试:码型上 抓第2个sine波,示波器关键步骤:25G->1+3channel->80M->14us时域长度->勾选off sinewave

RX的Gen3/4/5夹具各不相同,因为损耗不同,Gen4/5夹具板的板材不同

M8040误码仪:

软件:Station Config~,配置软件

原始信号autoscale调好以后再改差模会准确,减小失真(适用平时示波器进行AC Timing分析)

误码仪RX测试环境的搭建:

 双芯板RX进不到loopback,软件显示2.5G信号时有时无,去掉ISI上cable线(为了降低损耗)仍fail,再测可以进入loopback;但RX test可以进入loopback不能表示信号OK,还要看误码率指标E12≤1。

单芯板lane15没加ISI损耗 出报告(lane15的走线最短,Lane0 最长)BER:10的-9次方

关掉共模后误码率测试pass

打开共模,调节Voltage:300mV pass;400mV是临界值,开始有误码。

结论:单芯板lane15的共模降到400mV以下 RX Test就pass

误码仪以及其他信号源无静电防护设施,使用时先关掉Global output,再换输出端子;单芯板lane0有时可以进到loopback(进入到loopback后才可以测到RX的test case),表现为Data1

->4 OK。

双芯板lane0 RX Test:

步骤:1.M8070B 软件初始化3min;

2.可以进到loopback(无ISI,P5码型),近端会选P5,信号最好;

3.加ISI:Pair23,每次更改要将软件初始化 ,远端trace变长,选P9;进不到loopback,误码较多;

4.尝试改共模:降到200mV,误码明显减少;100mV无误码,pass(跑了3次也有1~5个误码但很少)

软件中共模标定值520mV,误码仪会将此共模信号加进RX路径中。

单芯板lane15(走线最短)加ISI pair23测RX: 测试过程记录----

修改CMD FW寄存器

1.进不去loopback

2.换成双芯lane15后可以进到loopback(环境与1一致),返回1的环境

3.单芯板lane15(加ISI)RX出报告->进不去loopback(training阶段)->关掉Training的共模->进不去loopback->修改寄存器->可以进到loopback->加回ISI pair23->在training中下调共模,找到的码型是P5(不是P9)->再试1次是P9,还是会跳出loopback->软件重新training后解决,不再跳出loopback; 但TX信号不好,但可以测试了(进入loopback后才可开始测试)

(环境:关掉共模,有噪声源(差模sj rj)给到RX时,误码率为0(2min内),打开共模200mV->Margin有误码->继续测试,修改CMD,不减小共模(保持540mV),进行RX test:1次fail,2次进到loopback,但进到P6)->再测双芯lane0+ISI+共模520mV:信号很差误码多;去掉共模pass。

熟读《PCIe_5.0_PHY_Test_Spec_Ver1.0》文档

有关PCIe_TX/RX测试步骤的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  8. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  9. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  10. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

随机推荐