Shannon Model MCS Table

25 views
Skip to first unread message

Alan Birchler

unread,
Dec 3, 2025, 8:57:35 AMDec 3
to 5G-LENA-users
Hello everyone,

From reading up on the documentation, is my assumption correct that the MCS table that 5G-LENA uses to map MCS indexes to modulation orders changes depending on what error model is selected? If so, what is the table used when the error model is set to shannon model?

Best regards,


Alan Birchler De Allende

Tom Henderson

unread,
Dec 3, 2025, 10:34:05 AMDec 3
to Alan Birchler, 5G-LENA-users

I don't believe there is any table in that case.  The SINR is used to calculate the Shannon-Hartley limit, which yields a maximum spectral efficiency that can be supported, and then the code selects the highest MCS that does not exceed that spectral efficiency.   I briefly looked at the implementation (nr-amc.cc) and that is what it appears to me to be doing.

The other error model available is based on link simulations, as described in this paper: https://arxiv.org/abs/2001.10309

--
You received this message because you are subscribed to the Google Groups "5G-LENA-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 5g-lena-user...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/5g-lena-users/13f7496e-a34f-4977-8b87-dddd50b3e1f2n%40googlegroups.com.

Alan Birchler

unread,
Dec 3, 2025, 11:18:16 AMDec 3
to 5G-LENA-users
Hi Tom,

Thanks for getting back to me.

I'm still a bit confused to be honest on the aspect of how 5G-LENA maps MCS values to modulation orders. Let's assume that in my simulation the SH model computes that the channel quality is high enough to select an MCS index of 15 for a given period of time. From there, how does it then map this index to a modulation order? Does it follow Table 5.1.3.1-1 in TS 38214 and thus selects modulation order 4 for this period?

Best regards,


Alan Birchler De Allende

Tom Henderson

unread,
Dec 3, 2025, 1:26:53 PMDec 3
to Alan Birchler, 5G-LENA-users

I believe that it does; see line 17501 of nr-eesm-t1.cc, or line 893 of nr-lte-mi-error-model.cc.  Both of these map MCS index 15 to a modulation order of 4.  As for which one gets called during simulation using the shannon model, I'm not sure since I haven't run simulations using that model, but perhaps you can inspect further from here.

- Tom

sandra.lagen

unread,
Dec 3, 2025, 5:17:42 PMDec 3
to 5G-LENA-users
Hi Alan, Tom,

Thanks for the questions and answers. I try to add some additional information.

1) Yes, the MCS table that 5G-LENA uses to map MCS indexes to modulation orders (MO) changes depending on the error model that is configured. In particular, 5G-LENA NR supports two tables from TS 38.214, i.e. Table 5.1.3.1-1 (which uses up to 64QAM, and so up to MO=6) and Table  5.1.3.1-2 (which uses up to 256QAM, and so up to MO=8 ). Depending on the table, the mapping of MCS index to modulation order changes, as each MCS index is mapped to a specific modulation order and target code rate and spectral efficiency. In the 5G-LENA code, this is specified by the error model type: ns3::NrEesmIrT1 and ns3::NrEesmCcT1 use MCS Table 1 (Table  5.1.3.1-1), while ns3::NrEesmIrT2 and ns3::NrEesmCcT2 use  MCS Table 2 (Table 5.1.3.1-2). You can see the supported error models in various examples (e.g. cttc-nr-mimo-demo.cc example) and how to configure this through the NrHelper:

    cmd.AddValue("errorModel", "Error model: ns3::NrEesmCcT1, ns3::NrEesmCcT2, ns3::NrEesmIrT1, ns3::NrEesmIrT2, ns3::NrLteMiErrorModel", errorModel);

    nrHelper->SetDlErrorModel(errorModel);

    nrHelper->SetUlErrorModel(errorModel);

The SINR-BLER mapping depends on the MCS and CB size, and as Tom said, we used link-level simulators to obtain the such SINR-BLER look-up tables, for specific MCSs. We did that for MCS table 1 and MCS table 2 from NR (i.e.,  5.1.3.1-1/2  from TS 38.214-j10), and not for MCS table 3 (intended for urllc), nor the latest MCS table 4 that includes up to MO=10. It is important to note that the  ns3::NrLteMiErrorModel however uses the MCS table that was available for LTE.

2) You can see the mentioned Tables (5.1.3.1-1/2), and how each MCS index is mapped to the MO, code rate and SE, in the respective files: https://cttc-lena.gitlab.io/nr/html/nr-eesm-t1_8cc_source.html and https://cttc-lena.gitlab.io/nr/html/nr-eesm-t2_8cc_source.html -->  McsEcrTable,  McsMTable1,  SpectralEfficiencyForMcs1...

3) The error model is used to determine the probability of successfully decoding a packet, at the receiver node. However, it can also be used for link adaptation, i.e. Adaptive Modulation and Coding (AMC) in NrAmc. In 5G-LENA, we support two methods for AMC: the ShannonModel and the ErrorModel. The objective is to select the MCS index for a given SINR and a given MCS table configured. In case of ShannonModel, the MCS is selected as Tom said. In case of the ErrorModel, the error model is also used for link adaptation, and the highest MCS is selected so that the resulting TBLER is below a 10%. THis can be configured also through the NrHelper, e.g.

nrHelper->SetGnbDlAmcAttribute("AmcModel", EnumValue(NrAmc::ErrorModel));
nrHelper->SetGnbUlAmcAttribute("AmcModel", EnumValue(NrAmc::ErrorModel));

Hope it helps!

BR,
Sandra


Reply all
Reply to author
Forward
0 new messages