Commit 6551ec4c authored by ISIP CS/NCTU's avatar ISIP CS/NCTU

isip turbo decoder thread parallel according to code segment

parent ae0494b0
......@@ -29,6 +29,18 @@
* \note
* \warning
*/
/*! \function isip_ulsch_decoding_data
* \brief Implementation of turbo decoder paralleling
* \author YT Liao (Yuan-Te), TY Hsu, TH Wang(Judy)
* \date 2019
* \version 0.1
* \company ISIP@NCTU and Eurecom
* \email: ytliao.cs97g@nctu.edu.tw, tyhsu@cs.nctu.edu.tw, Tsu-Han.Wang@eurecom.fr
* \note
* \warning
*/
#ifndef __LTE_TRANSPORT_PROTO__H__
#define __LTE_TRANSPORT_PROTO__H__
#include "PHY/defs.h"
......@@ -1903,6 +1915,12 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB,
int harq_pid,
int llr8_flag);
int isip_ulsch_decoding_data(PHY_VARS_eNB *eNB,
int UE_id,
int harq_pid,
int llr8_flag,
int current_thread_num);
uint32_t ulsch_decoding_emul(PHY_VARS_eNB *phy_vars_eNB,
eNB_rxtx_proc_t *proc,
uint8_t UE_index,
......
This diff is collapsed.
......@@ -29,6 +29,17 @@
\note
\warning
*/
/* \brief variable define for turbo decoder paralleling
* \author YT Liao (Yuan-Te), TY Hsu, TH Wang(Judy)
* \date 2019
* \version 0.1
* \company ISIP@NCTU and Eurecom
* \email: ytliao.cs97g@nctu.edu.tw, tyhsu@cs.nctu.edu.tw, Tsu-Han.Wang@eurecom.fr
* \note
* \warning
*/
#ifndef __PHY_DEFS__H__
#define __PHY_DEFS__H__
......@@ -76,6 +87,7 @@
#define RX_NB_TH_MAX 2
#define RX_NB_TH 2
#define ISIP_TURBO_THREAD_NUM 13
//#ifdef SHRLIBDEV
//extern int rxrescale;
......@@ -457,6 +469,24 @@ typedef struct {
UE_rxtx_proc_t proc_rxtx[RX_NB_TH];
} UE_proc_t;
// ISIP TURBO THREAD
typedef struct
{
struct PHY_VARS_eNB_s *eNB;
int thread_id;
volatile int flag_wait;
volatile int flag_done;
pthread_t pthread_rx;
pthread_cond_t cond_rx;
pthread_mutex_t mutex_rx;
pthread_attr_t attr_turbo;
int UE_id;
int harq_pid;
int llr8_flag;
int ret;
//int current_cnt;
} isip_turbo;
/// Top-level PHY Data Structure for eNB
typedef struct PHY_VARS_eNB_s {
/// Module ID indicator for this instance
......@@ -653,13 +683,23 @@ typedef struct PHY_VARS_eNB_s {
time_stats_t ulsch_deinterleaving_stats;
time_stats_t ulsch_demultiplexing_stats;
time_stats_t ulsch_llr_stats;
time_stats_t ulsch_tc_init_stats;
time_stats_t ulsch_tc_alpha_stats;
time_stats_t ulsch_tc_beta_stats;
time_stats_t ulsch_tc_gamma_stats;
time_stats_t ulsch_tc_ext_stats;
time_stats_t ulsch_tc_intl1_stats;
time_stats_t ulsch_tc_intl2_stats;
// time_stats_t ulsch_tc_init_stats;
// time_stats_t ulsch_tc_alpha_stats;
// time_stats_t ulsch_tc_beta_stats;
// time_stats_t ulsch_tc_gamma_stats;
// time_stats_t ulsch_tc_ext_stats;
// time_stats_t ulsch_tc_intl1_stats;
// time_stats_t ulsch_tc_intl2_stats;
time_stats_t ulsch_tc_init_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_alpha_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_beta_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_gamma_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_ext_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_intl1_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t ulsch_tc_intl2_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t isip_turbo_stats;
time_stats_t isip_ulsch_turbo_decoding_stats[ISIP_TURBO_THREAD_NUM];
time_stats_t isip_wait_loop;
#ifdef LOCALIZATION
/// time state for localization
......@@ -683,6 +723,9 @@ typedef struct PHY_VARS_eNB_s {
/// Pointer for ifdevice buffer struct
if_buffer_t ifbuffer;
//isip turbo thread
isip_turbo isip_turbo_thread[ISIP_TURBO_THREAD_NUM];
} PHY_VARS_eNB;
#define debug_msg if (((mac_xface->frame%100) == 0) || (mac_xface->frame < 50)) msg
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -187,7 +187,7 @@ const char* eurecomVariablesNames[] = {
"ue0_trx_write_ns_missing",
};
const char* eurecomFunctionsNames[] = {
const char *eurecomFunctionsNames[] = {
/* softmodem signals */
"rt_sleep",
"trx_read",
......@@ -293,6 +293,33 @@ const char* eurecomFunctionsNames[] = {
"phy_ue_generate_prach",
"phy_ue_ulsch_modulation",
"phy_ue_ulsch_encoding",
"isip_thread0",
"isip_thread1",
"isip_thread2",
"isip_thread3",
"isip_thread4",
"isip_thread5",
"isip_thread6",
"isip_thread7",
"isip_thread8",
"isip_thread9",
"isip_thread10",
"isip_thread11",
"isip_thread12",
"isip_thread_test0",
"isip_thread_test1",
"isip_thread_test2",
"isip_thread_test3",
"isip_thread_test4",
"isip_thread_test5",
"isip_thread_test6",
"isip_thread_test7",
"isip_thread_test8",
"isip_thread_test9",
"isip_thread_test10",
"isip_thread_test11",
"isip_thread_test12",
#if 1 // add for debugging losing PDSCH immediately before and after reporting CQI
"phy_ue_ulsch_encoding_fill_cqi",
#endif
......
......@@ -160,9 +160,10 @@ typedef enum {
VCD_SIGNAL_DUMPER_VARIABLES_END
} vcd_signal_dump_variables;
typedef enum {
typedef enum
{
/* softmodem signals */
VCD_SIGNAL_DUMPER_FUNCTIONS_RT_SLEEP=0,
VCD_SIGNAL_DUMPER_FUNCTIONS_RT_SLEEP = 0,
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ,
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE,
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF,
......@@ -266,6 +267,32 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_MODULATION,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD0,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD1,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD2,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD3,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD4,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD5,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD6,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD7,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD8,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD9,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD10,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD11,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ISIP_THREAD12,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST0,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST1,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST2,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST3,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST4,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST5,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST6,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST7,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST8,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST9,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST10,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST11,
VCD_SIGNAL_DUMPER_FUNCTIONS_ISIP_THREAD_TEST12,
#if 1 // add for debugging losing PDSCH immediately before and after reporting CQI
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING_FILL_CQI,
#endif
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment