22
33# 🚀 SerDes Validation Framework
44
5- ![ serdes-validation-framework Version] ( https://img.shields.io/badge/version-1.4.0 -blue )
5+ ![ serdes-validation-framework Version] ( https://img.shields.io/badge/version-1.4.1 -blue )
66![ Production Ready] ( https://img.shields.io/badge/status-production%20ready-brightgreen )
77[ ![ CI] ( https://github.com/muditbhargava66/serdes-validation-framework/actions/workflows/ci.yml/badge.svg?branch=main )] ( https://github.com/muditbhargava66/serdes-validation-framework/actions/workflows/ci.yml )
88[ ![ Lint] ( https://github.com/muditbhargava66/serdes-validation-framework/actions/workflows/lint.yml/badge.svg?branch=main )] ( https://github.com/muditbhargava66/serdes-validation-framework/actions/workflows/lint.yml )
3232- 🎛️ ** Universal Instrument Control:** GPIB/USB interface for multi-vendor support
3333- 📋 ** Flexible Test Sequences:** Customizable, reusable test automation
3434
35- ### 🆕 Latest Features in v1.4.0
35+ ### 🆕 Latest Features in v1.4.1
36+ - 🌐 ** REST API Framework:** Complete web API for remote access and integration
37+ - ** FastAPI-based REST API:** Modern, async API with automatic OpenAPI documentation
38+ - ** Eye Diagram Analysis:** Remote eye diagram analysis with mask compliance checking
39+ - ** Waveform Analysis:** Signal quality assessment via HTTP endpoints
40+ - ** Stress Testing API:** Asynchronous stress test execution with real-time monitoring
41+ - ** Test Fixture Control:** Remote control of test equipment and environmental monitoring
42+ - ** CLI Client:** Command-line interface for API interaction
43+ - ** Interactive Documentation:** Swagger UI at ` /docs ` for API exploration
44+
45+ - 🔄 ** Dual Stress Testing Systems:** Comprehensive stress testing with two complementary approaches
46+ - ** Loopback Stress Testing:** General-purpose TX → RX → TX simulation with progressive degradation tracking
47+ - Multi-cycle testing (1000+ cycles) with real-time monitoring
48+ - Signal quality tracking over time (eye height, jitter, SNR, BER)
49+ - CSV data export and interactive plots
50+ - Multi-protocol support (USB4, PCIe, Ethernet)
51+ - ** USB4-Specific Stress Testing:** Protocol-aware stress scenarios for USB4/Thunderbolt
52+ - Thermal stress testing with temperature monitoring
53+ - Error injection and recovery testing
54+ - Power cycling and bandwidth saturation stress
55+ - Multi-device stress testing scenarios
56+
57+ - 📊 ** Jupyter Dashboard System:** Interactive eye diagram visualization in Jupyter notebooks
58+ - ** Captured Waveform Analysis:** Direct integration with SVF analyzers
59+ - ** Eye Diagram Dashboards:** Professional-grade eye diagram visualization
60+ - ** Pass/Fail Annotations:** Automatic measurement annotations from SVF
61+ - ** Interactive Controls:** Real-time parameter adjustment with widgets
62+ - ** Multi-Protocol Support:** USB4, PCIe, Ethernet dashboard templates
63+ - ** Export Capabilities:** Save results and plots in multiple formats
64+
65+ ### 🔥 Major Features in v1.4.0
3666- 🔌 ** Complete USB4/Thunderbolt 4 Support:** Full 40 Gbps dual-lane validation with tunneling protocols
3767- 🔒 ** Thunderbolt 4 Certification Suite:** Intel-compliant certification with security validation and DMA protection
3868- 🌐 ** Multi-Protocol Tunneling:** PCIe, DisplayPort, and USB 3.2 tunneling validation with integrity checking
@@ -382,6 +412,29 @@ bandwidth_result = viz.plot_tunnel_bandwidth(
382412)
383413```
384414
415+ #### Loopback Stress Testing (NEW in v1.4.1)
416+ ``` python
417+ from serdes_validation_framework.stress_testing import LoopbackStressTest, create_stress_test_config
418+
419+ # Create stress test configuration
420+ config = create_stress_test_config(
421+ protocol = " USB4" ,
422+ num_cycles = 1000 ,
423+ output_dir = " usb4_stress_results"
424+ )
425+
426+ # Run stress test
427+ stress_test = LoopbackStressTest(config)
428+ results = stress_test.run_stress_test()
429+
430+ # Analyze results
431+ print (f " Success Rate: { results.success_rate:.1% } " )
432+ print (f " Max Degradation: { results.max_degradation:.1f } % " )
433+ print (f " Final Eye Height: { results.final_eye_height:.4f } V " )
434+
435+ # Results automatically saved to CSV and plots generated
436+ ```
437+
385438#### Traditional Test Sequencer
386439``` python
387440from serdes_validation_framework.test_sequence import PCIeTestSequencer
@@ -406,6 +459,66 @@ results = sequencer.run_sequence([
406459print (f " Test completed: { results[' status' ]} " )
407460```
408461
462+ #### REST API Usage (NEW in v1.4.1)
463+ ``` python
464+ # Start the API server
465+ from serdes_validation_framework.api import create_app
466+ import uvicorn
467+
468+ app = create_app()
469+ uvicorn.run(app, host = " 0.0.0.0" , port = 8000 )
470+
471+ # Or use the CLI
472+ # python -m serdes_validation_framework.api.cli server --host 0.0.0.0 --port 8000
473+ ```
474+
475+ ``` python
476+ # Use the API client
477+ import requests
478+ import numpy as np
479+
480+ # Analyze eye diagram via API
481+ signal_data = np.random.randn(1000 ) * 0.4
482+ response = requests.post(" http://localhost:8000/api/v1/eye-diagram/analyze" , json = {
483+ " signal_data" : signal_data.tolist(),
484+ " sample_rate" : 40e9 ,
485+ " protocol" : " USB4" ,
486+ " show_mask" : True
487+ })
488+
489+ result = response.json()
490+ print (f " Eye Height: { result[' eye_height' ]:.4f } V " )
491+ print (f " Q-Factor: { result[' q_factor' ]:.2f } " )
492+ print (f " Mask Compliance: { result[' mask_analysis' ][' compliance_level' ]} " )
493+
494+ # Start stress test asynchronously
495+ stress_response = requests.post(" http://localhost:8000/api/v1/stress-test/start" , json = {
496+ " protocol" : " USB4" ,
497+ " num_cycles" : 100 ,
498+ " cycle_duration" : 1.0
499+ })
500+
501+ test_id = stress_response.json()[" test_id" ]
502+
503+ # Monitor test progress
504+ status_response = requests.get(f " http://localhost:8000/api/v1/test/ { test_id} /status " )
505+ print (f " Test Status: { status_response.json()[' status' ]} " )
506+ ```
507+
508+ ``` bash
509+ # Use the CLI client
510+ python -m serdes_validation_framework.api.cli analyze-eye \
511+ --signal-file signal_data.csv \
512+ --protocol USB4 \
513+ --sample-rate 40e9 \
514+ --output results.json
515+
516+ python -m serdes_validation_framework.api.cli start-stress-test \
517+ --protocol PCIe \
518+ --cycles 500 \
519+ --duration 2.0
520+ ```
521+
409522## 📁 Examples & Scripts
410523
411524### 🎯 Interactive Examples
0 commit comments