Sionna
Quickstart
Installation
Installation using pip
Docker-based Installation
Installation from source
“Hello, world!”
Discover Sionna
Load Required Packages
Sionna Data-flow and Design Paradigms
Let’s Get Started - The First Layers (
Eager Mode
)
Batches and Multi-dimensional Tensors
First Link-level Simulation
Setting up the End-to-end Model
Run some Throughput Tests (Graph Mode)
Bit-Error Rate (BER) Monte-Carlo Simulations
Conclusion
Tutorials
For Beginners
Part 1: Getting Started with Sionna
Imports & Basics
Sionna Data-flow and Design Paradigms
Hello, Sionna!
Communication Systems as Keras Models
Forward Error Correction (FEC)
Eager vs Graph Mode
Exercise
Part 2: Differentiable Communication Systems
Imports
Gradient Computation Through End-to-end Systems
Creating Custom Layers
Setting up Training Loops
Part 3: Advanced Link-level Simulations
Imports
OFDM Resource Grid and Stream Management
Stream Management
OFDM Resource Grid
Antenna Arrays
Channel Model
Uplink Transmission in the Frequency Domain
Part 4: Toward Learned Receivers
Imports
Simulation Parameters
Implemention of an Advanced Neural Receiver
Training the Neural Receiver
Benchmarking the Neural Receiver
Conclusion
References
Basic MIMO Simulations
Table of Contents
GPU Configuration and Imports
Simple uncoded transmission
Adding spatial correlation
Extension to channel coding
BER simulations using a Keras model
Pulse-shaping Basics
Table of Contents
GPU Configuration and Imports
Pulse-shaping of a sequence of QAM symbols
Recovering the QAM symbols through matched filtering and downsampling
Investigating the ACLR
Windowing
Optical Channel with Lumped Amplification
Table of Contents
Setup
Impulse Generation
Attenuation
Amplified Spontaneous Emission Noise
Channel Configuration
Transmission
Chromatic Dispersion
Channel Configuration
Transmission
Kerr Nonlinearity
Channel configuration
Transmission
Split-Step Fourier Method
Channel Configuration
Transmission
References
For Experts
5G Channel Coding and Rate-Matching: Polar vs. LDPC Codes
Table of Contents
GPU Configuration and Imports
BER Performance of 5G Coding Schemes
Performance under Optimal Decoding
Performance of Longer LDPC Codes
A Deeper Look into the Polar Code Module
Rate-Matching and Rate-Recovery
Throughput and Decoding Complexity
References
5G NR PUSCH Tutorial
Table of Contents
GPU Configuration and Imports
A Hello World Example
Carrier Configuration
Understanding the DMRS Configuration
Configuring Multiple Layers
Controlling the Number of DMRS Symbols in a Slot
How to control the number of available DMRS ports?
Transport Blocks and MCS
Looking into the PUSCHTransmitter
Components of the PUSCHReceiver
End-to-end PUSCH Simulations
Bit-Interleaved Coded Modulation (BICM)
Table of Contents
System Block Diagram
GPU Configuration and Imports
A Simple BICM System
Constellations and Bit-Channels
Simple BER Simulations
All-zero Codeword Simulations
Remove Encoder: Simulate QPSK with All-zero Codeword Transmission
Remove (De-)Mapping: Approximate the LLR Distribution of the All-zero Codeword (and BPSK/QPSK)
The Role of the Scrambler
EXIT Charts
Mismatched Demapping and the Advantages of Min-sum Decoding
References
MIMO OFDM Transmissions over the CDL Channel Model
Table of Contents
GPU Configuration and Imports
System Setup
Stream Management
OFDM Resource Grid & Pilot Pattern
Antenna Arrays
CDL Channel Model
Other Physical Layer Components
Simulations
Uplink Transmission in the Frequency Domain
Uplink Transmission in the Time Domain
Downlink Transmission in the Frequency Domain
Understand the Difference Between the CDL Models
Create an End-to-End Keras Model
Compare Uplink Performance Over the Different CDL Models
Compare Downlink Performance Over the Different CDL Models
Evaluate the Impact of Mobility
Evaluate the Impact of Insufficient Cyclic Prefix Length
Neural Receiver for OFDM SIMO Systems
GPU Configuration and Imports
Simulation Parameters
Neural Receiver
End-to-end System
End-to-end System as a Keras Model
Evaluation of the Baselines
Training the Neural Receiver
Evaluation of the Neural Receiver
Pre-computed Results
References
Realistic Multiuser MIMO OFDM Simulations
Table of Contents
GPU Configuration and Imports
System Setup
Uplink Transmissions in the Frequency Domain
Compare Estimated and Actual Frequency Responses
Understand the Difference Between the Channel Models
Setup a Keras Model for BER simulations
OFDM MIMO Channel Estimation and Detection
Table of Contents
GPU Configuration and Imports
Simulation parameters
Estimation of the channel time, frequency, and spatial covariance matrices
Loading the channel covariance matrices
Comparison of OFDM estimators
End-to-end model
Comparison of MIMO detectors
End-to-end model
Introduction to Iterative Detection and Decoding
Iterative Detection and Decoding
Table of contents
GPU Configuration and Imports
Simulation Parameters
Setting-up the Keras Models
Non-IDD versus IDD Benchmarks
Discussion-Optimizing IDD with Machine Learning
Comments
List of References
End-to-end Learning with Autoencoders
GPU Configuration and Imports
Simulation Parameters
Neural Demapper
Trainable End-to-end System: Conventional Training
Trainable End-to-end System: RL-based Training
Evaluation
Visualizing the Learned Constellations
References
Weighted Belief Propagation Decoding
Table of Contents
GPU Configuration and Imports
Weighted BP for BCH Codes
Weights
before
Training and Simulation of BER
Training
Results
Further Experiments
Damped BP
Learning the 5G LDPC Code
References
Channel Models from Datasets
GPU Configuration and Imports
Simulation Parameters
Creating a Simple Dataset
Generators
Use the Channel Model for OFDM Transmissions
Using the DeepMIMO Dataset with Sionna
Table of Contents
GPU Configuration and Imports
Configuration of DeepMIMO
Visualization of the dataset
Using DeepMIMO with Sionna
Random Sampling of Multi-User Channels
Link-level Simulations using Sionna and DeepMIMO
DeepMIMO License and Citation
Ray Tracing
Introduction to Sionna RT
Table of Contents
Background Information
GPU Configuration and Imports
Loading Scenes
Ray Tracing for Radio Propagation
From Paths to Channel Impulse Responses
BER Evaluation
Runtime vs Depth
Coverage Map
Site-specifc Link-Level Simulations
Conclusion and Outlook
Tutorial on Diffraction
Table of Contents
Background Information
GPU Configuration and Imports
Experiments with a Simple Wedge
Coverage Maps with Diffraction
References
Tutorial on Scattering
Table of Contents
GPU Configuration and Imports
Scattering Basics
Scattering Patterns
Validation Against the “Far”-Wall Approximation
Coverage Maps With Scattering
Impact on Channel Impulse Response
Summary
References
“Made with Sionna”
List of Projects
Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling
DUIDD: Deep-Unfolded Interleaved Detection and Decoding for MIMO Wireless Systems
Bit Error and Block Error Rate Training for ML-Assisted Communication
GNNs for Channel Decoding
DL-based Synchronization of NB-IoT
Primer on Electromagnetics
Coordinate system, rotations, and vector fields
Planar Time-Harmonic Waves
Far Field of a Transmitting Antenna
Modelling of a Receiving Antenna
General Propagation Path
Frequency & Impulse Response
Reflection and Refraction
Diffraction
Scattering
API Documentation
Forward Error Correction (FEC)
Linear Codes
Encoder
LinearEncoder
AllZeroEncoder
Decoder
OSDecoder
Low-Density Parity-Check (LDPC)
LDPC Encoder
LDPC5GEncoder
LDPC Decoder
LDPCBPDecoder
LDPC5GDecoder
Polar Codes
Polar Encoding
Polar5GEncoder
PolarEncoder
Polar Decoding
Polar5GDecoder
PolarSCDecoder
PolarSCLDecoder
PolarBPDecoder
Polar Utility Functions
generate_5g_ranking
generate_polar_transform_mat
generate_rm_code
generate_dense_polar
Convolutional Codes
Convolutional Encoding
Viterbi Decoding
BCJR Decoding
Convolutional Code Utility Functions
Trellis
polynomial_selector
Turbo Codes
Turbo Encoding
Turbo Decoding
Turbo Utility Functions
TurboTermination
polynomial_selector
puncture_pattern
Cyclic Redundancy Check (CRC)
CRCEncoder
CRCDecoder
Interleaving
Interleaver
RowColumnInterleaver
RandomInterleaver
Turbo3GPPInterleaver
Deinterleaver
Scrambling
Scrambler
TB5GScrambler
Descrambler
Utility Functions
(Binary) Linear Codes
load_parity_check_examples
alist2mat
load_alist
generate_reg_ldpc
make_systematic
gm2pcm
pcm2gm
verify_gm_pcm
EXIT Analysis
plot_exit_chart
get_exit_analytic
plot_trajectory
Miscellaneous
GaussianPriorSource
bin2int
int2bin
bin2int_tf
int2bin_tf
int_mod_2
llr2mi
j_fun
j_fun_inv
j_fun_tf
j_fun_inv_tf
Mapping
Constellations
Constellation
qam
pam
pam_gray
Mapper
Demapping
Demapper
DemapperWithPrior
SymbolDemapper
SymbolDemapperWithPrior
Utility Functions
SymbolLogits2LLRs
LLRs2SymbolLogits
SymbolLogits2LLRsWithPrior
SymbolLogits2Moments
SymbolInds2Bits
PAM2QAM
QAM2PAM
Channel
Wireless
AWGN
Flat-fading channel
FlatFadingChannel
GenerateFlatFadingChannel
ApplyFlatFadingChannel
SpatialCorrelation
KroneckerModel
PerColumnModel
Channel model interface
Time domain channel
TimeChannel
GenerateTimeChannel
ApplyTimeChannel
cir_to_time_channel
time_to_ofdm_channel
Channel with OFDM waveform
OFDMChannel
GenerateOFDMChannel
ApplyOFDMChannel
cir_to_ofdm_channel
Rayleigh block fading
3GPP 38.901 channel models
PanelArray
Antenna
AntennaArray
Tapped delay line (TDL)
Clustered delay line (CDL)
Urban microcell (UMi)
Urban macrocell (UMa)
Rural macrocell (RMa)
External datasets
Utility functions
subcarrier_frequencies
time_lag_discrete_time_channel
deg_2_rad
rad_2_deg
wrap_angle_0_360
drop_uts_in_sector
relocate_uts
set_3gpp_scenario_parameters
gen_single_sector_topology
gen_single_sector_topology_interferers
exp_corr_mat
one_ring_corr_mat
Optical
Split-step Fourier method
Erbium-doped fiber amplifier
Utility functions
time_frequency_vector
Discrete
BinaryMemorylessChannel
BinarySymmetricChannel
BinaryErasureChannel
BinaryZChannel
Orthogonal Frequency-Division Multiplexing (OFDM)
Resource Grid
ResourceGrid
ResourceGridMapper
ResourceGridDemapper
RemoveNulledSubcarriers
Modulation & Demodulation
OFDMModulator
OFDMDemodulator
Pilot Pattern
PilotPattern
EmptyPilotPattern
KroneckerPilotPattern
Channel Estimation
BaseChannelEstimator
BaseChannelInterpolator
LSChannelEstimator
LinearInterpolator
LMMSEInterpolator
NearestNeighborInterpolator
tdl_time_cov_mat
tdl_freq_cov_mat
Precoding
ZFPrecoder
Equalization
OFDMEqualizer
LMMSEEqualizer
MFEqualizer
ZFEqualizer
Detection
OFDMDetector
OFDMDetectorWithPrior
EPDetector
KBestDetector
LinearDetector
MaximumLikelihoodDetector
MaximumLikelihoodDetectorWithPrior
MMSEPICDetector
Multiple-Input Multiple-Output (MIMO)
Stream Management
Precoding
zero_forcing_precoder
Equalization
lmmse_equalizer
mf_equalizer
zf_equalizer
Detection
EPDetector
KBestDetector
LinearDetector
MaximumLikelihoodDetector
MaximumLikelihoodDetectorWithPrior
MMSE-PIC
Utility Functions
List2LLR
List2LLRSimple
complex2real_vector
real2complex_vector
complex2real_matrix
real2complex_matrix
complex2real_covariance
real2complex_covariance
complex2real_channel
real2complex_channel
whiten_channel
5G NR
Carrier
CarrierConfig
Layer Mapping
LayerMapper
LayerDemapper
PUSCH
PUSCHConfig
PUSCHDMRSConfig
PUSCHLSChannelEstimator
PUSCHPilotPattern
PUSCHPrecoder
PUSCHReceiver
PUSCHTransmitter
Transport Block
TBConfig
TBEncoder
TBDecoder
Utils
calculate_tb_size
generate_prng_seq
select_mcs
Ray Tracing
Scene
Scene
compute_paths
coverage_map
load_scene
preview
render
render_to_file
Example Scenes
floor_wall
simple_street_canyon
etoile
munich
simple_wedge
simple_reflector
double_reflector
triple_reflector
Box
Paths
Paths
Coverage Maps
CoverageMap
as_tensor
sample_positions
show
Cameras
Camera
Scene Objects
SceneObject
Radio Materials
RadioMaterial
ScatteringPattern
Radio Devices
Transmitter
Receiver
Antenna Arrays
AntennaArray
PlanarArray
Antennas
Antenna
compute_gain
visualize
dipole_pattern
hw_dipole_pattern
iso_pattern
tr38901_pattern
polarization_model_1
polarization_model_2
Utility Functions
cross
dot
normalize
phi_hat
rotate
rotation_matrix
rot_mat_from_unit_vecs
r_hat
sample_points_on_hemisphere
theta_hat
theta_phi_from_unit_vec
Signal
Filters
SincFilter
RaisedCosineFilter
RootRaisedCosineFilter
CustomFilter
Filter
Window functions
HannWindow
HammingWindow
BlackmanWindow
CustomWindow
Window
Utility Functions
convolve
fft
ifft
Upsampling
Downsampling
empirical_psd
empirical_aclr
Utility Functions
Metrics
BitErrorRate
BitwiseMutualInformation
compute_ber
compute_bler
compute_ser
count_errors
count_block_errors
Tensors
expand_to_rank
flatten_dims
flatten_last_dims
insert_dims
split_dims
matrix_sqrt
matrix_sqrt_inv
matrix_inv
matrix_pinv
Miscellaneous
BinarySource
SymbolSource
QAMSource
PAMSource
PlotBER
sim_ber
ebnodb2no
hard_decisions
plot_ber
complex_normal
log2
log10
Configuration
Discussions
Report an Issue
Sionna
»
API Documentation
API Documentation
Forward Error Correction (FEC)
Linear Codes
Encoder
LinearEncoder
AllZeroEncoder
Decoder
OSDecoder
Low-Density Parity-Check (LDPC)
LDPC Encoder
LDPC5GEncoder
LDPC Decoder
LDPCBPDecoder
LDPC5GDecoder
Polar Codes
Polar Encoding
Polar5GEncoder
PolarEncoder
Polar Decoding
Polar5GDecoder
PolarSCDecoder
PolarSCLDecoder
PolarBPDecoder
Polar Utility Functions
generate_5g_ranking
generate_polar_transform_mat
generate_rm_code
generate_dense_polar
Convolutional Codes
Convolutional Encoding
Viterbi Decoding
BCJR Decoding
Convolutional Code Utility Functions
Trellis
polynomial_selector
Turbo Codes
Turbo Encoding
Turbo Decoding
Turbo Utility Functions
TurboTermination
polynomial_selector
puncture_pattern
Cyclic Redundancy Check (CRC)
CRCEncoder
CRCDecoder
Interleaving
Interleaver
RowColumnInterleaver
RandomInterleaver
Turbo3GPPInterleaver
Deinterleaver
Scrambling
Scrambler
TB5GScrambler
Descrambler
Utility Functions
(Binary) Linear Codes
load_parity_check_examples
alist2mat
load_alist
generate_reg_ldpc
make_systematic
gm2pcm
pcm2gm
verify_gm_pcm
EXIT Analysis
plot_exit_chart
get_exit_analytic
plot_trajectory
Miscellaneous
GaussianPriorSource
bin2int
int2bin
bin2int_tf
int2bin_tf
int_mod_2
llr2mi
j_fun
j_fun_inv
j_fun_tf
j_fun_inv_tf
Mapping
Constellations
Constellation
qam
pam
pam_gray
Mapper
Demapping
Demapper
DemapperWithPrior
SymbolDemapper
SymbolDemapperWithPrior
Utility Functions
SymbolLogits2LLRs
LLRs2SymbolLogits
SymbolLogits2LLRsWithPrior
SymbolLogits2Moments
SymbolInds2Bits
PAM2QAM
QAM2PAM
Channel
Wireless
AWGN
Flat-fading channel
FlatFadingChannel
GenerateFlatFadingChannel
ApplyFlatFadingChannel
SpatialCorrelation
KroneckerModel
PerColumnModel
Channel model interface
Time domain channel
TimeChannel
GenerateTimeChannel
ApplyTimeChannel
cir_to_time_channel
time_to_ofdm_channel
Channel with OFDM waveform
OFDMChannel
GenerateOFDMChannel
ApplyOFDMChannel
cir_to_ofdm_channel
Rayleigh block fading
3GPP 38.901 channel models
PanelArray
Antenna
AntennaArray
Tapped delay line (TDL)
Clustered delay line (CDL)
Urban microcell (UMi)
Urban macrocell (UMa)
Rural macrocell (RMa)
External datasets
Utility functions
subcarrier_frequencies
time_lag_discrete_time_channel
deg_2_rad
rad_2_deg
wrap_angle_0_360
drop_uts_in_sector
relocate_uts
set_3gpp_scenario_parameters
gen_single_sector_topology
gen_single_sector_topology_interferers
exp_corr_mat
one_ring_corr_mat
Optical
Split-step Fourier method
Erbium-doped fiber amplifier
Utility functions
time_frequency_vector
Discrete
BinaryMemorylessChannel
BinarySymmetricChannel
BinaryErasureChannel
BinaryZChannel
Orthogonal Frequency-Division Multiplexing (OFDM)
Resource Grid
ResourceGrid
ResourceGridMapper
ResourceGridDemapper
RemoveNulledSubcarriers
Modulation & Demodulation
OFDMModulator
OFDMDemodulator
Pilot Pattern
PilotPattern
EmptyPilotPattern
KroneckerPilotPattern
Channel Estimation
BaseChannelEstimator
BaseChannelInterpolator
LSChannelEstimator
LinearInterpolator
LMMSEInterpolator
NearestNeighborInterpolator
tdl_time_cov_mat
tdl_freq_cov_mat
Precoding
ZFPrecoder
Equalization
OFDMEqualizer
LMMSEEqualizer
MFEqualizer
ZFEqualizer
Detection
OFDMDetector
OFDMDetectorWithPrior
EPDetector
KBestDetector
LinearDetector
MaximumLikelihoodDetector
MaximumLikelihoodDetectorWithPrior
MMSEPICDetector
Multiple-Input Multiple-Output (MIMO)
Stream Management
Precoding
zero_forcing_precoder
Equalization
lmmse_equalizer
mf_equalizer
zf_equalizer
Detection
EPDetector
KBestDetector
LinearDetector
MaximumLikelihoodDetector
MaximumLikelihoodDetectorWithPrior
MMSE-PIC
Utility Functions
List2LLR
List2LLRSimple
complex2real_vector
real2complex_vector
complex2real_matrix
real2complex_matrix
complex2real_covariance
real2complex_covariance
complex2real_channel
real2complex_channel
whiten_channel
5G NR
Carrier
CarrierConfig
Layer Mapping
LayerMapper
LayerDemapper
PUSCH
PUSCHConfig
PUSCHDMRSConfig
PUSCHLSChannelEstimator
PUSCHPilotPattern
PUSCHPrecoder
PUSCHReceiver
PUSCHTransmitter
Transport Block
TBConfig
TBEncoder
TBDecoder
Utils
calculate_tb_size
generate_prng_seq
select_mcs
Ray Tracing
Scene
Scene
compute_paths
coverage_map
load_scene
preview
render
render_to_file
Example Scenes
floor_wall
simple_street_canyon
etoile
munich
simple_wedge
simple_reflector
double_reflector
triple_reflector
Box
Paths
Paths
Coverage Maps
CoverageMap
as_tensor
sample_positions
show
Cameras
Camera
Scene Objects
SceneObject
Radio Materials
RadioMaterial
ScatteringPattern
Radio Devices
Transmitter
Receiver
Antenna Arrays
AntennaArray
PlanarArray
Antennas
Antenna
compute_gain
visualize
dipole_pattern
hw_dipole_pattern
iso_pattern
tr38901_pattern
polarization_model_1
polarization_model_2
Utility Functions
cross
dot
normalize
phi_hat
rotate
rotation_matrix
rot_mat_from_unit_vecs
r_hat
sample_points_on_hemisphere
theta_hat
theta_phi_from_unit_vec
Signal
Filters
SincFilter
RaisedCosineFilter
RootRaisedCosineFilter
CustomFilter
Filter
Window functions
HannWindow
HammingWindow
BlackmanWindow
CustomWindow
Window
Utility Functions
convolve
fft
ifft
Upsampling
Downsampling
empirical_psd
empirical_aclr
Utility Functions
Metrics
BitErrorRate
BitwiseMutualInformation
compute_ber
compute_bler
compute_ser
count_errors
count_block_errors
Tensors
expand_to_rank
flatten_dims
flatten_last_dims
insert_dims
split_dims
matrix_sqrt
matrix_sqrt_inv
matrix_inv
matrix_pinv
Miscellaneous
BinarySource
SymbolSource
QAMSource
PAMSource
PlotBER
sim_ber
ebnodb2no
hard_decisions
plot_ber
complex_normal
log2
log10
Configuration