Final Report College
Final Report College
(OFDM) is a type of digital transmission and a method of • There are two different type of Cyclic Prefix. One is
encoding digital data on multiple carrier frequencies. OFDM normal Cyclic Prefix and the other is ’Extended Cyclic
has developed into a popular scheme for wideband digital com- Prefix’ which is longer than the Normal Cyclic Prefix.
munication, used in applications such as digital television and • The normal cyclic prefix, each symbol is preceded by a
audio broadcasting, DSL internet access, wireless networks, cyclic prefix that is usually 144 Ts (4.7 microsecond)
power line networks, and 4G/5G mobile communications. fig long. The first cyclic prefix has a longer duration of
2. 160 Ts (5.2 microsecond), to tidy up the unevenness that
results from fitting seven symbols into a slot. Fig 4.
Fig. 13. Contention Based RACH Procedure Fig. 15. LTE-Physical Broadcast channel
H. Physical Downlink channels in LTE 2) PCFICH channel -Physical Control Format Indicator
Channel:
• These Channels carries information between different
• Physical Control Format Indicator Channel (PCFICH) is
protocol layers. Segregation of data allow data to trans-
used at the starting of each 1ms subframe. It provides
port across different transport layer.
information about number of symbols used for PDCCH
• They also provide interfaces to each layer in LTE stack,
transmission. The signalling values for PCFICH depends
thus providing an orderly flow of data in each layer. Fig
upon channel bandwidth.
14.
• LTE PCFICH channel occupies 16 REs(Resource Ele-
• Channels in both in UL and DL direction, (i) Logi- ments) in first OFDMA symbol of each 1ms subframe.
cal Channel: W hat type of information, (ii) Transport PCFICH uses QPSK modulation and hence 16 REs will
channel: How this information is transported and (iii) occupy 32 bits. The exact position of which in first
Physical layer: W here to send this information. OFDMA symbol depends on Channel BW and Physical
1) PBCH Channel-LTE Physical Broadcast Channel: layer cell identity.
• It is used to broadcast MIB using BCH as transport • CFI(Control format indicator): it tells how many OFDM
and BCCH as logical channel. PBCH is downlink only symbols are used for carrying control channels(eg. PD-
channel. The PBCH broadcasts a limited number of CCH and PHICH) at each subframe, (i) CFI = 1: one
parameters essential for initial access of the cell such as symbol is used for PDCCH allocation, (ii) CFI = 2: first
downlink system bandwidth, the Physical Hybrid ARQ two symbols are used for PDCCH allocation.
Indicator Channel structure, and the most significant
eight-bits of the System Frame Number.
3) PDCCH channel -Physical Control Format Indicator • Decode PHICH channel (PHICH is also at the first
Channel: symbol of the first slot.)
• Physical Control Format Indicator Channel (PCFICH) is • Based on this, UE will calculate CCE index for PDCCH.
used at the starting of each 1ms subframe. It provides • Decode PDCCH and find DCI (DCI1 or DCI1A) which
information about number of symbols used for PDCCH is destined to the UE.
transmission. The signalling values for PCFICH depends • From the DCI, figure out the locations for PDSCH which
upon channel bandwidth. is allocated for the UE.
• LTE PCFICH channel occupies 16 REs(Resource Ele- • Decode PDSCH. Fig 16.
ments) in first OFDMA symbol of each 1ms subframe. I. Advantages of LTE
PCFICH uses QPSK modulation and hence 16 REs will
occupy 32 bits. The exact position of which in first 1) High throughput: High data rates can be achieved in
OFDMA symbol depends on Channel BW and Physical both downlink as well as uplink. This causes high throughput.
layer cell identity. 2) Low latency: Time required to connect to the network
• CFI(Control format indicator): it tells how many OFDM
is in range of a few hundred milliseconds and power saving
symbols are used for carrying control channels(eg. PD- states can now be entered and exited very quickly.
CCH and PHICH) at each subframe, (i) CFI = 1: one 3) FDD and TDD in the same platform: Frequency Divi-
symbol is used for PDCCH allocation, (ii) CFI = 2: first sion Duplex (FDD) and Time Division Duplex (TDD), both
two symbols are used for PDCCH allocation. schemes can be used on same platform.
4) Seamless Connection: LTE will also support seamless
connection to existing networks such as GSM, CDMA and
WCDMA.
5) Plug and play: The user does not have to manually
install drivers for the device. Instead, system automatically
recognizes the device, loads new drivers for the hardware if
needed and begins to work with the newly connected device.
III. P ROBLEM D EFINITION AND F ORMULATION
A. Google C++ Testing Framework helps you write better
C++ tests. No matter whether you work on Linux, Windows,
or a Mac, if you write C++ code, Google Test can help you.
So what makes a good test, and how does Google C++ Testing
Framework fit in? We believe:
• Tests should be independent and repeatable. It’s a pain
Fig. 16. LTE-Physical Broadcast channel
to debug a test that succeeds or fails as a result of other
4) Decoding of PDCCH: tests. Google C++ Testing Framework isolates the tests
by running each of them on a different object. When a
• One PDCCH carries one DCI message with one of the
test fails, Google C++ Testing Framework allows you to
formats. run it in isolation for quick debugging.
• Each scheduling message is transmitted on a separate
• Tests should be well organized and reflect the structure of
PDCCH, and consequently there are typically multiple the tested code. Google C++ Testing Framework groups
simultaneous PDCCH transmissions within each cell. related tests into test cases that can share data and
• The UE is only informed of the number of OFDM
subroutines. This common pattern is easy to recognize
symbols within the control region of a subframe and is not and makes tests easy to maintain. Such consistency is
provided with the location of its corresponding PDCCH. especially helpful when people switch projects and start
The UE finds its PDCCH by monitoring a set of PDCCH to work on a new code base.
candidates in every subframe. • Tests should be portable and reusable. The open-source
• The UE de-mask each control candidate’s CRC using
community has a lot of code that is platform-neutral,
its Radio Network Temporary Identifier (RNTI). If no its tests should also be platform-neutral. Google C++
CRC error is detected, the UE considers it as a successful Testing Framework works on different OSes, with differ-
decoding attempt and reads the control information within ent compilers (gcc, MSVC, and others), with or without
the successful candidate. Fig 16. exceptions, so Google C++ Testing Framework tests can
5) Decoding of PDSCH: easily work with a variety of configurations.
• Process the first OFDM symbol of the first slot within a • When tests fail, they should provide as much information
subframe. about the problem as possible. Google C++ Testing
• Detect PCFICH channel and figure out howw many Framework doesn’t stop at the first test failure. Instead,
symbols are used for PDCCH. it only stops the current test and continues with the next.
You can also set up tests that report non-fatal failures after
which the current test continues. Thus, you can detect and
fix multiple bugs in a single run-edit-compile cycle.
• The testing framework should liberate test writers from
housekeeping chores and let them focus on the test
content. Google C++ Testing Framework automatically Fig. 17. Checking Two string equalisation
keeps track of all tests defined, and doesn’t require the
user to enumerate them in order to run them.
returns from the current function, while ASSERT * yields a
• Tests should be fast. With Google C++ Testing Frame-
nonfatal failure, allowing the function to continue running. In
work, you can reuse shared resources across tests and pay
either case, an assertion failure means its containing test fails.
for the set-up/tear-down only once, without making tests
Availability: Linux, Windows, Mac. Fig. 18.
depend on each other.
B. Basic Concepts
When using Google Test, you start by writing assertions,
which are statements that check whether a condition is true.
An assertion’s result can be success, nonfatal failure, or fatal
failure. If a fatal failure occurs, it aborts the current function; Fig. 18. Basic Assertions
otherwise the program continues normally. Tests use assertions
to verify the tested code’s behavior. If a test crashes or has a
E. Binary Comparison
failed assertion, then it fails; otherwise it succeeds. A test case
contains one or many tests. You should group your tests into This section describes assertions that compare two values.
test cases that reflect the structure of the tested code. When In the event of a failure, Google Test prints both val1 and val2.
multiple tests in a test case need to share common objects Value arguments must be comparable by the assertion‘s com-
and subroutines, you can put them into a test fixture class. A parison operator or you’ll get a compiler error. ASSERT EQ()
test program can contain multiple test cases. We’ll now explain does pointer equality on pointers. If used on two C strings, it
how to write a test program, starting at the individual assertion tests if they are in the same memory location, not if they have
level and building up to tests and test cases. Fig 21. the same value. Fig. 19.
C. Assertions
Google Test assertions are macros that resemble function
calls. You test a class or function by making assertions about
its behavior. When an assertion fails, Google Test prints the
assertion‘s source file and line number location, along with
a failure message. You may also supply a custom failure
message which will be appended to Google Test’s message.
The assertions come in pairs that test the same thing but have
different effects on the current function. ASSERT * versions
generate fatal failures when they fail, and abort the cur- Fig. 19. Binary Comparison
rent function. ASSERT * versions generate nonfatal failures,
which don‘t abort the current function. Usually ASSERT * are
F. String Comparison
preferred, as they allow more than one failures to be reported
in a test. However, you should use ASSERT * if it does not The assertions in this group compare two C strings. If
make sense to continue when the assertion in question fails. you want to compare two string objects, use EXPECT EQ,
Since a failed ASSERT * returns from the current function EXPECT NE, and etc instead. Fig. 20.
immediately, possibly skipping clean-up code that comes after
it, it may cause a space leak. Depending on the nature of the
leak, it may or may not be worth fixing - so keep this in mind
if you get a heap checker error in addition to assertion errors.
To provide a custom failure message, simply stream it into
the macro using the left shift operator, or a sequence of such Fig. 20. String Comparison
operators. Fig. 17.
D. Basic Assertions
These assertions do basic true/false condition testing. Re-
member, when they fail, ASSERT * yields a fatal failure and
WCDMA, LTE) there is a specific signal that perform the
same function.
• Analysis part: This issue will be observed in two per-
spectives. One is with scheduling request and the other
is in terms of RA RNTI.
• Scheduling Request process:
• (i). First step is to check whether C-RNTI is enabled or
not.
• (ii). Next Step is to check whether UL grant is received
from the network when C-RNTI is enabled. Fig 23.
IV. O BJECTIVE
• To verify and check MUT (Module/Modem Test Cases)
of a targeted main code written in C++ language under
Google Test framework.
• To handle the issues related to the performance, any
new updation or coding error on the basis of code and
specification study.
• A CASE:
• RA-RNTI process:
• Physical layer request for cell search to RRC layer so that
• First step is to check whether RA-RNTI is enabled or
it can camp on to a cell, RRC layer performs the follow-
not.
ing functions such as broadcast of system information,
• Next is to check whether RAR grant is received from the
paging, establishment/release of an RRC connection.
network when RA-RNTI is enabled.
• The setup request confirmation comes from higher layer
• Once after RAR grant is received, then have to check
comes to various modules in order to perform events like
whether T-CRNTI is enabled or not.
cell search, power scan and specific cell search etc.
• At last, when T-CRNTI is enabled, one must check for
• After cell camp on, Controller and driver will perform
the MSG4(RRC Connection setup).
various data calculations will configuration the DSP,
• After the UE sends the preamble, it monitors the physical
where data analysis is done at very lower level.
dedicated control channel (PDCCH) and waits for a
V. W ORK D ONE SO FAR AND R ESULTS random access response within a random access response
window.
A. Issue Analysis • If the UE receives a response containing an RA-preamble
1) Performance Related issues: identifier which is the same as the identifier contained
in the transmitted random access preamble, the response
• For performance related issues, some regions will be
is successful. The UE then transmits uplink scheduling
mentioned from the other teams where actually the issue
information.
is happening.
• If the UE does not receive a response within the random
• Once after we got to know about the regions, we must
access window or fails to verify the response, the re-
use Log tool for analysis through the log.
sponse fails. In this case, if the number of random access
• RACH Failure: This is the first message from UE to eNB
attempts is smaller than the upper limit, the UE retries
when you power it on. Even though they use a little bit
random access. Otherwise, random access fails. Fig 24.
different name, in all cellular technology (CDMA, GSM,
C. Simple Tests:
• Use the TEST() macro to define and name a test function,
These are ordinary C++ functions that don’t return a
value.
• In this function, along with any valid C++ statements you
want to include, use the various Google Test assertions
to check values.
• The test’s result is determined by the assertions; if any
assertion in the test fails (either fatally or non-fatally),
or if the test crashes, the entire test fails. Otherwise, it
Fig. 24. RACH Failure
succeeds. Fig 26.
R EFERENCES
Fig. 32. Final Results with all Test case pass [1] ”Physical Layer,” in LTE and the Evolution to 4G Wireless: De-
sign and Measurement Challenges , Wiley, 2013, pp.91-157, doi:
10.1002/9781118799475.ch3.
[2] E. Hajlaoui, A. Khlifi, A. Zaier, J. Ghodhbane, M. Ben Hamed and
• All Test Modules TEST cases Coverage, Function and L. Sbita, ”Performance Evaluation of LTE Physical Layer,” 2019
line Coverage. Fig 33 and 34. International Conference on Internet of Things, Embedded Systems
and Communications (IINTEC), 2019, pp. 106-111, doi: 10.1109/IIN-
TEC48298.2019.9112117.
[3] Sung-won Kim and Kun-yong Kim, ”Physical layer verification for
3GPP LTE (FDD),” 2009 11th International Conference on Advanced
Communication Technology, 2009, pp. 1095-1100.
[4] https://www.rfwireless-world.com/Tutorials/LTE-Physical-layer.html
[5] https://devopedia.org/mock-testing
[6] google/googletest/+/refs/tags/release-1.8.0/googlemock/docs/For Dum-
mies.md
[7] L. Bhaskar, R. B. Natak and R. Ranjith, ”Unit Testing for USB Module
Using Google Test Framework,” 2020 11th International Conference on
Computing, Communication and Networking Technologies (ICCCNT),
2020, pp. 1-3, doi: 10.1109/ICCCNT49239.2020.9225528.
[8] A. Arcuri, G. Fraser and R. Just, ”Private API Access and Functional
Mocking in Automated Unit Test Generation,” 2017 IEEE International
Conference on Software Testing, Verification and Validation (ICST),
2017, pp. 126-137, doi: 10.1109/ICST.2017.19.
Fig. 33. First Test Case Simulation [9] https://www.telecomhall.net/t/rach-failure-in-lte/7958/2
[10] https://www.researchgate.net/figure/OFDM-system-transceiver-block-
diagram
[11] https://www.sharetechnote.com/html/FrameStructure
[12] Mediatek related content idea by Manager.