-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Feature Request: Realistic Waveform Generation with UI-based Processing
Is your feature request related to a problem? Please describe.
Yes. The current waveform generation in the codebase produces signals that are significantly different from real oscilloscope-captured waveforms. Specifically:
-
Bit-level sampling vs. realistic waveforms: The current implementation generates waveforms at the bit/sample level, which results in ideal rectangular signals without realistic signal characteristics.
-
Missing signal transitions: Real oscilloscope waveforms exhibit finite rise and fall times due to physical limitations of transmitters, channels, and receivers. The current code generates instantaneous transitions that don't reflect real-world behavior.
-
Lack of CDR (Clock Data Recovery) processing: Real SerDes systems require CDR to recover the clock and properly sample the data. The current implementation doesn't include CDR functionality, which is essential for accurate signal analysis.
-
Incorrect processing units for FFE: The current FFE (Feed-Forward Equalizer) implementation processes signals sample-by-sample, but real hardware FFE operates on UI (Unit Interval) boundaries. This fundamental mismatch means the equalization behavior doesn't match actual hardware implementations.
-
Missing CTLE convolution: While CTLE (Continuous-Time Linear Equalizer) can be applied via convolution, the current codebase doesn't provide this functionality in a clear, accessible manner.
These limitations make it difficult to:
- Validate equalization algorithms against real hardware behavior
- Perform accurate signal integrity analysis
- Simulate realistic channel effects
- Test CDR performance and timing recovery
Describe the solution you'd like
I would like to see the following enhancements implemented:
-
Realistic waveform generation with rise/fall times:
- Add configurable rise time and fall time parameters to signal generation
- Implement smooth transitions using appropriate models (e.g., exponential, linear, or RC-based)
- Support different transition models for different signal types (NRZ, PAM4)
-
CDR (Clock Data Recovery) module:
- Implement a CDR block that can recover clock from the data signal
- Support different CDR algorithms (e.g., bang-bang CDR, linear CDR)
- Provide clock recovery and data sampling functionality
- Allow configurable CDR parameters (loop bandwidth, jitter tolerance, etc.)
-
UI-based FFE processing:
- Refactor FFE implementation to operate on UI boundaries rather than sample-by-sample
- Ensure FFE taps are aligned to UI intervals (multiples of samples_per_UI)
- Match the behavior of real hardware FFE implementations
- Maintain backward compatibility or provide clear migration path
-
CTLE convolution support:
- Provide clear API for applying CTLE via convolution
- Support frequency-domain and time-domain CTLE implementations
- Allow configurable CTLE parameters (DC gain, pole/zero locations, bandwidth)
-
Comprehensive waveform processing pipeline:
- Create a unified workflow: Signal Generation → Channel Effects → CTLE → FFE (UI-based) → CDR → Analysis
- Ensure all processing stages work together seamlessly
- Provide examples demonstrating the complete pipeline
Describe alternatives you've considered
-
Using external tools: Considered using commercial EDA tools (e.g., Cadence, Synopsys) or specialized SerDes simulation tools, but these are expensive and don't integrate well with the existing Python-based validation framework.
-
Post-processing existing waveforms: Attempted to add rise/fall times and CDR processing as post-processing steps, but this doesn't address the fundamental issue of UI-based FFE processing and doesn't match the natural signal generation flow.
-
Sample-based FFE with UI alignment: Considered keeping sample-based FFE but adding UI alignment logic, but this still doesn't match hardware behavior where FFE taps are inherently UI-aligned.
-
Separate modules: Thought about creating separate modules for each feature, but a unified, integrated approach would be more maintainable and user-friendly.
Additional context
Current Implementation Issues:
data_analysis_example.pygenerates ideal rectangular waveforms without rise/fall timesAdaptiveEqualizer.apply_equalization()processes signals sample-by-sample (not UI-aligned)- No CDR functionality exists in the codebase
- CTLE application is not clearly demonstrated or accessible
Expected Behavior:
- Waveforms should show realistic transitions with configurable rise/fall times (e.g., 10-20% of UI)
- FFE should process signals with taps aligned to UI boundaries (e.g., pre-cursor at -1 UI, cursor at 0 UI, post-cursor at +1 UI)
- CDR should recover clock and provide properly sampled data
- CTLE should be easily applicable via convolution or frequency-domain filtering
Use Cases:
- Validating equalization algorithms against hardware measurements
- Simulating channel effects and equalization performance
- Testing signal integrity under various conditions
- Educational purposes to understand SerDes signal processing
Technical Notes:
- Sample rate: 100 GSa/s (current implementation)
- Symbol rate: 32 Gbps (current implementation)
- Samples per UI: ~3.125 samples/UI (current implementation)
- For UI-based FFE, taps should be spaced at integer multiples of samples_per_UI
Related Files:
examples/data_analysis_example.py- Current waveform generationsrc/serdes_validation_framework/protocols/pcie/equalization.py- Current FFE implementationsrc/serdes_validation_framework/protocols/pcie/tx_waveform_generator.py- Waveform generation utilities