Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-RAN
Commits
c3d863a6
Commit
c3d863a6
authored
2 years ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
configurable max nb of rounds in dlsim
parent
4c21c2d1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
38 deletions
+46
-38
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+46
-38
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
c3d863a6
...
@@ -379,13 +379,6 @@ int main(int argc, char **argv)
...
@@ -379,13 +379,6 @@ int main(int argc, char **argv)
int
i
,
aa
;
//,l;
int
i
,
aa
;
//,l;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
uint8_t
snr1set
=
0
;
uint8_t
snr1set
=
0
;
uint32_t
errors_scrambling
[
4
][
100
]
=
{{
0
}};
int
n_errors
[
4
][
100
]
=
{{
0
}};
int
round_trials
[
4
][
100
]
=
{{
0
}};
double
roundStats
[
100
]
=
{
0
};
double
blerStats
[
4
][
100
]
=
{{
0
}};
double
berStats
[
4
][
100
]
=
{{
0
}};
double
snrStats
[
100
]
=
{
0
};
float
effRate
;
float
effRate
;
//float psnr;
//float psnr;
float
eff_tp_check
=
0
.
7
;
float
eff_tp_check
=
0
.
7
;
...
@@ -471,7 +464,7 @@ int main(int argc, char **argv)
...
@@ -471,7 +464,7 @@ int main(int argc, char **argv)
FILE
*
scg_fd
=
NULL
;
FILE
*
scg_fd
=
NULL
;
while
((
c
=
getopt
(
argc
,
argv
,
"f:hA:pf:g:i:n:s:S:t:x:y:z:M:N:F:GR:d:PI:L:Ea:b:e:m:w:T:U:q:X:Y"
))
!=
-
1
)
{
while
((
c
=
getopt
(
argc
,
argv
,
"f:hA:pf:g:i:n:s:S:t:
v:
x:y:z:M:N:F:GR:d:PI:L:Ea:b:e:m:w:T:U:q:X:Y"
))
!=
-
1
)
{
switch
(
c
)
{
switch
(
c
)
{
case
'f'
:
case
'f'
:
scg_fd
=
fopen
(
optarg
,
"r"
);
scg_fd
=
fopen
(
optarg
,
"r"
);
...
@@ -577,6 +570,16 @@ int main(int argc, char **argv)
...
@@ -577,6 +570,16 @@ int main(int argc, char **argv)
break
;
break
;
case
'v'
:
num_rounds
=
atoi
(
optarg
);
if
(
num_rounds
<
1
)
{
printf
(
"Unsupported number of rounds %d
\n
"
,
num_rounds
);
exit
(
-
1
);
}
break
;
case
'y'
:
case
'y'
:
n_tx
=
atoi
(
optarg
);
n_tx
=
atoi
(
optarg
);
...
@@ -723,6 +726,7 @@ int main(int argc, char **argv)
...
@@ -723,6 +726,7 @@ int main(int argc, char **argv)
printf
(
"-T Enable PTRS, arguments list L_PTRS{0,1,2} K_PTRS{2,4}, e.g. -T 2 0 2
\n
"
);
printf
(
"-T Enable PTRS, arguments list L_PTRS{0,1,2} K_PTRS{2,4}, e.g. -T 2 0 2
\n
"
);
printf
(
"-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2} DMRS ConfType{1:2}, e.g. -U 3 0 2 1
\n
"
);
printf
(
"-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2} DMRS ConfType{1:2}, e.g. -U 3 0 2 1
\n
"
);
printf
(
"-P Print DLSCH performances
\n
"
);
printf
(
"-P Print DLSCH performances
\n
"
);
printf
(
"-v Maximum number of rounds
\n
"
);
printf
(
"-w Write txdata to binary file (one frame)
\n
"
);
printf
(
"-w Write txdata to binary file (one frame)
\n
"
);
printf
(
"-d number of dlsch threads, 0: no dlsch parallelization
\n
"
);
printf
(
"-d number of dlsch threads, 0: no dlsch parallelization
\n
"
);
printf
(
"-X gNB thread pool configuration, n => no threads
\n
"
);
printf
(
"-X gNB thread pool configuration, n => no threads
\n
"
);
...
@@ -732,6 +736,21 @@ int main(int argc, char **argv)
...
@@ -732,6 +736,21 @@ int main(int argc, char **argv)
}
}
}
}
uint32_t
errors_scrambling
[
num_rounds
][
100
];
int
n_errors
[
num_rounds
][
100
];
int
round_trials
[
num_rounds
][
100
];
double
roundStats
[
100
];
double
blerStats
[
num_rounds
][
100
];
double
berStats
[
num_rounds
][
100
];
double
snrStats
[
100
];
memset
(
errors_scrambling
,
0
,
sizeof
(
uint32_t
)
*
num_rounds
*
100
);
memset
(
n_errors
,
0
,
sizeof
(
int
)
*
num_rounds
*
100
);
memset
(
round_trials
,
0
,
sizeof
(
int
)
*
num_rounds
*
100
);
memset
(
blerStats
,
0
,
sizeof
(
double
)
*
num_rounds
*
100
);
memset
(
berStats
,
0
,
sizeof
(
double
)
*
num_rounds
*
100
);
memset
(
snrStats
,
0
,
sizeof
(
double
)
*
100
);
memset
(
roundStats
,
0
,
sizeof
(
double
)
*
100
);
logInit
();
logInit
();
set_glog
(
loglvl
);
set_glog
(
loglvl
);
T_stdout
=
1
;
T_stdout
=
1
;
...
@@ -1330,41 +1349,30 @@ int main(int argc, char **argv)
...
@@ -1330,41 +1349,30 @@ int main(int argc, char **argv)
roundStats
[
snrRun
]
/=
((
float
)
n_trials
);
roundStats
[
snrRun
]
/=
((
float
)
n_trials
);
blerStats
[
0
][
snrRun
]
=
(
double
)
n_errors
[
0
][
snrRun
]
/
round_trials
[
0
][
snrRun
];
for
(
int
r
=
0
;
r
<
num_rounds
;
r
++
)
{
blerStats
[
1
][
snrRun
]
=
(
double
)
n_errors
[
1
][
snrRun
]
/
round_trials
[
1
][
snrRun
];
blerStats
[
r
][
snrRun
]
=
(
double
)
n_errors
[
r
][
snrRun
]
/
round_trials
[
r
][
snrRun
];
blerStats
[
2
][
snrRun
]
=
(
double
)
n_errors
[
2
][
snrRun
]
/
round_trials
[
2
][
snrRun
];
berStats
[
r
][
snrRun
]
=
(
double
)
errors_scrambling
[
r
][
snrRun
]
/
available_bits
/
round_trials
[
r
][
snrRun
];
blerStats
[
3
][
snrRun
]
=
(
double
)
n_errors
[
3
][
snrRun
]
/
round_trials
[
3
][
snrRun
];
}
berStats
[
0
][
snrRun
]
=
(
double
)
errors_scrambling
[
0
][
snrRun
]
/
available_bits
/
round_trials
[
0
][
snrRun
];
berStats
[
1
][
snrRun
]
=
(
double
)
errors_scrambling
[
1
][
snrRun
]
/
available_bits
/
round_trials
[
1
][
snrRun
];
berStats
[
2
][
snrRun
]
=
(
double
)
errors_scrambling
[
2
][
snrRun
]
/
available_bits
/
round_trials
[
2
][
snrRun
];
berStats
[
3
][
snrRun
]
=
(
double
)
errors_scrambling
[
3
][
snrRun
]
/
available_bits
/
round_trials
[
3
][
snrRun
];
effRate
/=
n_trials
;
effRate
/=
n_trials
;
printf
(
"*****************************************
\n
"
);
printf
(
"*****************************************
\n
"
);
printf
(
"SNR %f: n_errors (%d/%d,%d/%d,%d/%d,%d/%d) (negative CRC), false_positive %d/%d, errors_scrambling (%u/%u,%u/%u,%u/%u,%u/%u
\n
"
,
printf
(
"SNR %f: n_errors (%d/%d"
,
SNR
,
n_errors
[
0
][
snrRun
],
round_trials
[
0
][
snrRun
]);
SNR
,
for
(
int
r
=
1
;
r
<
num_rounds
;
r
++
)
n_errors
[
0
][
snrRun
],
round_trials
[
0
][
snrRun
],
printf
(
",%d/%d"
,
n_errors
[
r
][
snrRun
],
round_trials
[
r
][
snrRun
]);
n_errors
[
1
][
snrRun
],
round_trials
[
1
][
snrRun
],
printf
(
") (negative CRC), false_positive %d/%d, errors_scrambling (%u/%u"
,
n_errors
[
2
][
snrRun
],
round_trials
[
2
][
snrRun
],
n_errors
[
3
][
snrRun
],
round_trials
[
3
][
snrRun
],
n_false_positive
,
n_trials
,
n_false_positive
,
n_trials
,
errors_scrambling
[
0
][
snrRun
],
available_bits
*
round_trials
[
0
][
snrRun
],
errors_scrambling
[
0
][
snrRun
],
available_bits
*
round_trials
[
0
][
snrRun
]);
errors_scrambling
[
1
][
snrRun
],
available_bits
*
round_trials
[
1
][
snrRun
],
for
(
int
r
=
1
;
r
<
num_rounds
;
r
++
)
errors_scrambling
[
2
][
snrRun
],
available_bits
*
round_trials
[
2
][
snrRun
],
printf
(
",%u/%u"
,
errors_scrambling
[
r
][
snrRun
],
available_bits
*
round_trials
[
r
][
snrRun
]);
errors_scrambling
[
3
][
snrRun
],
available_bits
*
round_trials
[
3
][
snrRun
]);
printf
(
")
\n\n
"
);
printf
(
"
\n
"
);
dump_pdsch_stats
(
stdout
,
gNB
);
dump_pdsch_stats
(
stdout
,
gNB
);
printf
(
"SNR %f: Channel BLER (%e,%e,%e,%e), Channel BER (%e,%e,%e,%e) Avg round %.2f, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %u bits/slot
\n
"
,
printf
(
"SNR %f: Channel BLER (%e"
,
SNR
,
blerStats
[
0
][
snrRun
]);
SNR
,
for
(
int
r
=
1
;
r
<
num_rounds
;
r
++
)
blerStats
[
0
][
snrRun
],
printf
(
",%e"
,
blerStats
[
r
][
snrRun
]);
blerStats
[
1
][
snrRun
],
printf
(
"), Channel BER (%e"
,
berStats
[
0
][
snrRun
]);
blerStats
[
2
][
snrRun
],
for
(
int
r
=
1
;
r
<
num_rounds
;
r
++
)
blerStats
[
3
][
snrRun
],
printf
(
",%e"
,
berStats
[
r
][
snrRun
]);
berStats
[
0
][
snrRun
],
printf
(
") Avg round %.2f, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %u bits/slot
\n
"
,
berStats
[
1
][
snrRun
],
berStats
[
2
][
snrRun
],
berStats
[
3
][
snrRun
],
roundStats
[
snrRun
],
roundStats
[
snrRun
],
effRate
,
effRate
,
effRate
/
TBS
*
100
,
effRate
/
TBS
*
100
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment