UCI stands for Uplink Control Information. It is carried by PUCCH or PUSCH. It may remind you of DCI which is carried by PDCCH. Yes, UCI is the counter part of DCI, but the information/role of UCI is very small comparing to DCI ( I think).
The information carried by UCI is mainly following three
UE transmit a certain combination of these three information depending on situation. Sometimes it carries only SR, sometimes SR and HARQ ACK/NACK together etc.
There are two channels that can carry the UCI. Sometimes PUCCH carries UCI and sometimes PUSCH carries it.
Then when PUSCH carries UCI and when PUCCH carries it ?
36.213 section 10.1 UE procedure for determining physical uplink control channel assignment describe it as follows :
Uplink control information (UCI) in subframe n shall be transmitted
- on PUCCH using format 1/1a/1b or 2/2a/2b if the UE is not transmitting on PUSCH in subframe n
- on PUSCH if the UE is transmitting on PUSCH in subframe n unless the PUSCH transmission corresponds to a
Random Access Response Grant or a retransmission of the same transport block as part of the contention based
random access procedure, in which case UCI is not transmitted
Simply put, when UE transmit the user data and it has to use PUSCH. In this case PUCCH is not allowed to be transmitted, in this case PUSCH carries UCI. When there is no user data to be transmitted, PUCCH is transmitted carrying UCI in it.