Commit 292ab3f1 authored by Kirill Smelkov's avatar Kirill Smelkov

software/ors-amarisoft: ru/lopcomm: Simplify and clarify cu_config.jinja2.xml

We can use mathematical relation in between ports, channels and tx/rx endpoints
to bring structure and clarity in RU setup.

Also, while on it, document how tx/rx data flow are organized as it was not
clear just from reading ORAN specs and I had to deduce it.

/cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
/reviewed-by @lu.xu
/reviewed-on nexedi/slapos!1468
parent 77c7da90
...@@ -136,7 +136,7 @@ md5sum = e435990eb0a0d4be41efa9bd16dce09b ...@@ -136,7 +136,7 @@ md5sum = e435990eb0a0d4be41efa9bd16dce09b
[ru_lopcomm_cu_config.jinja2.xml] [ru_lopcomm_cu_config.jinja2.xml]
_update_hash_filename_ = ru/lopcomm/cu_config.jinja2.xml _update_hash_filename_ = ru/lopcomm/cu_config.jinja2.xml
md5sum = d10b063ad4edc760e154f7a8d63bea47 md5sum = 09123ad68c6d8e7e4e201bcc2ab331c6
[software.cfg.html] [software.cfg.html]
_update_hash_filename_ = gadget/software.cfg.html _update_hash_filename_ = gadget/software.cfg.html
......
<xc:config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0"> <xc:config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
{%- set n_antenna_dl = slapparameter_dict.get('n_antenna_dl', int(slap_configuration['configuration.default_n_antenna_dl'])) %}
{%- set n_antenna_ul = slapparameter_dict.get('n_antenna_ul', int(slap_configuration['configuration.default_n_antenna_ul'])) %}
<user-plane-configuration xc:operation="replace" xmlns="urn:o-ran:uplane-conf-option8:1.0"> <user-plane-configuration xc:operation="replace" xmlns="urn:o-ran:uplane-conf-option8:1.0">
<!-- low-level-t[r]x-links --> <!-- TX path: eaxcid → TxEndpoint
<tx-links>
<name>TXA0P00C00</name> mod → static TxEndpoint → TxArray
<processing-element>PE0</processing-element>
<tx-array-carrier>TXA0CC00</tx-array-carrier> TxCarrier
<tx-endpoint>TXA0P00C00</tx-endpoint>
</tx-links> (static TxEndpoint, TxArray and their association are defined by RU itself)
{% if slapparameter_dict.get('n_antenna_dl') == 4 %} -->
<tx-links> {%- set TxCarrier = 'TXA0CC00' %}
<name>TXA0P01C00</name> {%- for ant in range(n_antenna_dl) %}
<processing-element>PE0</processing-element> {%- set port = ant // 2 %}
<tx-array-carrier>TXA0CC00</tx-array-carrier> {%- set chan = ant % 2 %}
<tx-endpoint>TXA0P01C00</tx-endpoint> {%- set txep = 'TXA0P%02dC%02d' % (port, chan) %}
</tx-links>
{% endif %} <!-- TxAntenna{{ ant }} -->
<tx-links>
<name>TXA0P00C01</name>
<processing-element>PE0</processing-element>
<tx-array-carrier>TXA0CC00</tx-array-carrier>
<tx-endpoint>TXA0P00C01</tx-endpoint>
</tx-links>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %}
<tx-links>
<name>TXA0P01C01</name>
<processing-element>PE0</processing-element>
<tx-array-carrier>TXA0CC00</tx-array-carrier>
<tx-endpoint>TXA0P01C01</tx-endpoint>
</tx-links>
{% endif %}
<rx-links>
<name>RXA0P00C00</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>RXA0P00C00</rx-endpoint>
</rx-links>
<rx-links>
<name>PRACH0P00C00</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>PRACH0P00C00</rx-endpoint>
</rx-links>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %}
<rx-links>
<name>RXA0P01C00</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>RXA0P01C00</rx-endpoint>
</rx-links>
<rx-links>
<name>PRACH0P01C00</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>PRACH0P01C00</rx-endpoint>
</rx-links>
{% endif %}
<rx-links>
<name>RXA0P00C01</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>RXA0P00C01</rx-endpoint>
</rx-links>
<rx-links>
<name>PRACH0P00C01</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>PRACH0P00C01</rx-endpoint>
</rx-links>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %}
<rx-links>
<name>RXA0P01C01</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>RXA0P01C01</rx-endpoint>
</rx-links>
<rx-links>
<name>PRACH0P01C01</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>RXA0CC00</rx-array-carrier>
<rx-endpoint>PRACH0P01C01</rx-endpoint>
</rx-links>
{% endif %}
<tx-endpoints> <tx-endpoints>
<name>TXA0P00C00</name> <name>{{ txep }}</name>
<e-axcid> <e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask> <o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask> <band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask> <ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask> <ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>0</eaxc-id> <eaxc-id>{{ ant }}</eaxc-id>
</e-axcid> </e-axcid>
</tx-endpoints> </tx-endpoints>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %} <tx-links>
<tx-endpoints> <name>{{ txep }}</name>
<name>TXA0P01C00</name> <processing-element>PE0</processing-element>
<e-axcid> <tx-array-carrier>{{ TxCarrier }}</tx-array-carrier>
<o-du-port-bitmask>61440</o-du-port-bitmask> <tx-endpoint>{{ txep }}</tx-endpoint>
<band-sector-bitmask>3968</band-sector-bitmask> </tx-links>
<ccid-bitmask>112</ccid-bitmask> {%- endfor %}
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>2</eaxc-id>
</e-axcid> <!--
</tx-endpoints> RX path: eaxcid ← RxEndpoint
{% endif %} (data ∪ prach)
<tx-endpoints>
<name>TXA0P00C01</name> demod ← static RxEndpoint ← RxArray
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask> RxCarrier
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask> (static RxEndpoint, RxArray and their association are defined by RU itself)
<ru-port-bitmask>15</ru-port-bitmask> -->
<eaxc-id>1</eaxc-id> {%- set RxCarrier = 'RXA0CC00' %}
</e-axcid> {%- for ant in range(n_antenna_ul) %}
</tx-endpoints> {%- set port = ant // 2 %}
{% if slapparameter_dict.get('n_antenna_dl') == 4 %} {%- set chan = ant % 2 %}
<tx-endpoints> {%- set rxep = 'RXA0P%02dC%02d' % (port, chan) %}
<name>TXA0P01C01</name> {%- set prachep = 'PRACH0P%02dC%02d' % (port, chan) %}
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask> <!-- RxAntenna{{ ant }} -->
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>3</eaxc-id>
</e-axcid>
</tx-endpoints>
{% endif %}
<rx-endpoints>
<name>RXA0P00C00</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>0</eaxc-id>
</e-axcid>
</rx-endpoints>
<rx-endpoints>
<name>PRACH0P00C00</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>8</eaxc-id>
</e-axcid>
</rx-endpoints>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %}
<rx-endpoints>
<name>RXA0P01C00</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>2</eaxc-id>
</e-axcid>
</rx-endpoints>
<rx-endpoints>
<name>PRACH0P01C00</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>9</eaxc-id>
</e-axcid>
</rx-endpoints>
{% endif %}
<rx-endpoints>
<name>RXA0P00C01</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>1</eaxc-id>
</e-axcid>
</rx-endpoints>
<rx-endpoints>
<name>PRACH0P00C01</name>
<e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>24</eaxc-id>
</e-axcid>
</rx-endpoints>
{% if slapparameter_dict.get('n_antenna_dl') == 4 %}
<rx-endpoints> <rx-endpoints>
<name>RXA0P01C01</name> <name>{{ rxep }}</name>
<e-axcid> <e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask> <o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask> <band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask> <ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask> <ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>3</eaxc-id> <eaxc-id>{{ ant }}</eaxc-id>
</e-axcid> </e-axcid>
</rx-endpoints> </rx-endpoints>
<rx-endpoints> <rx-endpoints>
<name>PRACH0P01C01</name> <name>{{ prachep }}</name>
<e-axcid> <e-axcid>
<o-du-port-bitmask>61440</o-du-port-bitmask> <o-du-port-bitmask>61440</o-du-port-bitmask>
<band-sector-bitmask>3968</band-sector-bitmask> <band-sector-bitmask>3968</band-sector-bitmask>
<ccid-bitmask>112</ccid-bitmask> <ccid-bitmask>112</ccid-bitmask>
<ru-port-bitmask>15</ru-port-bitmask> <ru-port-bitmask>15</ru-port-bitmask>
<eaxc-id>25</eaxc-id> <eaxc-id>{{ 16*chan + 8 + port }}</eaxc-id>
</e-axcid> </e-axcid>
</rx-endpoints> </rx-endpoints>
{% endif %} <rx-links>
<name>{{ rxep }}</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>{{ RxCarrier }}</rx-array-carrier>
<rx-endpoint>{{ rxep }}</rx-endpoint>
</rx-links>
<rx-links>
<name>{{ prachep }}</name>
<processing-element>PE0</processing-element>
<rx-array-carrier>{{ RxCarrier }}</rx-array-carrier>
<rx-endpoint>{{ prachep }}</rx-endpoint>
</rx-links>
{%- endfor %}
<!-- TX/RX carriers -->
<tx-array-carriers> <tx-array-carriers>
<name>TXA0CC00</name> <name>{{ TxCarrier }}</name>
<absolute-frequency-center>{{ slapparameter_dict.get('dl_earfcn', 300) }}</absolute-frequency-center> <absolute-frequency-center>{{ slapparameter_dict.get('dl_earfcn', 300) }}</absolute-frequency-center>
<center-of-channel-bandwidth>{{ 1000000*slapparameter_dict.get('txa0cc00_center_frequency', 2140) }}</center-of-channel-bandwidth> <center-of-channel-bandwidth>{{ 1000000*slapparameter_dict.get('txa0cc00_center_frequency', 2140) }}</center-of-channel-bandwidth>
<channel-bandwidth>{{ {'1.4 MHz': 1400000, '3 MHz': 3000000, '5 MHz': 5000000, '10 MHz': 10000000, '15 MHz': 15000000, '20 MHz': 20000000}.get(slapparameter_dict.get('bandwidth'), '20 MHz') }}</channel-bandwidth> <channel-bandwidth>{{ {'1.4 MHz': 1400000, '3 MHz': 3000000, '5 MHz': 5000000, '10 MHz': 10000000, '15 MHz': 15000000, '20 MHz': 20000000}.get(slapparameter_dict.get('bandwidth'), '20 MHz') }}</channel-bandwidth>
...@@ -222,7 +103,7 @@ ...@@ -222,7 +103,7 @@
<downlink-sfn-offset>0</downlink-sfn-offset> <downlink-sfn-offset>0</downlink-sfn-offset>
</tx-array-carriers> </tx-array-carriers>
<rx-array-carriers> <rx-array-carriers>
<name>RXA0CC00</name> <name>{{ RxCarrier }}</name>
<absolute-frequency-center>{{ slapparameter_dict.get('rxa0cc00_center_frequency_earfcn', 18300) }}</absolute-frequency-center> <absolute-frequency-center>{{ slapparameter_dict.get('rxa0cc00_center_frequency_earfcn', 18300) }}</absolute-frequency-center>
<center-of-channel-bandwidth>{{ 1000000*slapparameter_dict.get('rxa0cc00_center_frequency', 1950) }}</center-of-channel-bandwidth> <center-of-channel-bandwidth>{{ 1000000*slapparameter_dict.get('rxa0cc00_center_frequency', 1950) }}</center-of-channel-bandwidth>
<channel-bandwidth>{{ {'1.4 MHz': 1400000, '3 MHz': 3000000, '5 MHz': 5000000, '10 MHz': 10000000, '15 MHz': 15000000, '20 MHz': 20000000}.get(slapparameter_dict.get('bandwidth'), '20 MHz') }}</channel-bandwidth> <channel-bandwidth>{{ {'1.4 MHz': 1400000, '3 MHz': 3000000, '5 MHz': 5000000, '10 MHz': 10000000, '15 MHz': 15000000, '20 MHz': 20000000}.get(slapparameter_dict.get('bandwidth'), '20 MHz') }}</channel-bandwidth>
......
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