Skip to content

Commit fba70f4

Browse files
committed
[parameters] Remove the generator enabled param
1 parent 13e6bbc commit fba70f4

File tree

10 files changed

+39
-145
lines changed

10 files changed

+39
-145
lines changed

README.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,25 @@ DMA can be paused and resumed at any time using `stopDma()` and `startDma()`
105105

106106
### Data Source
107107

108-
In order to set the data source for the CRU, the generator & loopback parameters for the CRU DMA Channel should now be used as follows:
108+
#### CRU
109+
110+
The loopback parameter for the CRU DMA Channel should be used as follows:
111+
112+
| `GeneratorLoopback` | Data Source |
113+
| ------------------- | ----------- |
114+
| `None` | FEE (GBT) |
115+
| `Ddg` | DDG (GBT) |
116+
| `Internal` | DG |
117+
118+
#### CRORC
119+
120+
| `GeneratorLoopback` | Data Source |
121+
| ------------------- | ----------- |
122+
| `None` | FEE (GBT) |
123+
| `SIU` | SIU |
124+
| `DIU` | DIU |
125+
| `INTERNAL` | DG |
109126

110-
| `GeneratorEnabled` | `GeneratorLoopback` | Data Source |
111-
| ------------------ | ------------------- | ----------- |
112-
| `false` | `None` | FEE (GBT) |
113-
| `true` | `Ddg` | DDG (GBT) |
114-
| `true` | `Internal` | DG |
115127

116128
Card Configurator
117129
-------------------

include/ReadoutCard/Parameters.h

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,9 @@ class Parameters
7373
/// Type for the DMA page size parameter
7474
using DmaPageSizeType = size_t;
7575

76-
/// Type for the generator enabled parameter
77-
using GeneratorEnabledType = bool;
78-
79-
/// Type for the generator data size parameter
80-
using GeneratorDataSizeType = size_t;
81-
8276
/// Type for the LoopbackMode parameter
8377
using GeneratorLoopbackType = LoopbackMode::type;
8478

85-
/// Type for the generator data size parameter
86-
using GeneratorRandomSizeEnabledType = bool;
87-
8879
/// Type for the link mask parameter
8980
using LinkMaskType = std::set<uint32_t>;
9081

@@ -164,16 +155,6 @@ class Parameters
164155
/// \return Reference to this object for chaining calls
165156
auto setDmaPageSize(DmaPageSizeType value) -> Parameters&;
166157

167-
/// Sets the GeneratorEnabled parameter
168-
///
169-
/// If enabled, the card will generate data internally.
170-
/// The format and content of this data is controlled by the other generator parameters.
171-
/// 'None' loopback mode is not allowed in conjunction with the data generator (see setGeneratorLoopback()).
172-
///
173-
/// \param value The value to set
174-
/// \return Reference to this object for chaining calls
175-
auto setGeneratorEnabled(GeneratorEnabledType value) -> Parameters&;
176-
177158
/// Sets the LinkLoopbackEnabled parameter
178159
///
179160
/// If enabled the link is on loopback mode enabling the use of the DDG.
@@ -196,20 +177,6 @@ class Parameters
196177
/// \return Reference to this object for chaining calls
197178
auto setOnuAddress(OnuAddressType value) -> Parameters&;
198179

199-
/// Sets the GeneratorDataSize parameter
200-
///
201-
/// It controls the size in bytes of the generated data per DMA page.
202-
///
203-
/// Supported values:
204-
/// * C-RORC: multiples of 4 bytes, up to 2097152 bytes.
205-
/// * CRU: multiples of 32 bytes, minimum 64 bytes, up to 8 KiB.
206-
///
207-
/// If not set, the driver will default to the DMA page size, i.e. the pages will be filled completely.
208-
///
209-
/// \param value The value to set
210-
/// \return Reference to this object for chaining calls
211-
auto setGeneratorDataSize(GeneratorDataSizeType value) -> Parameters&;
212-
213180
/// Sets the GeneratorLoopback parameter
214181
///
215182
/// Controls the routing of the generated data.
@@ -223,16 +190,6 @@ class Parameters
223190
/// \return Reference to this object for chaining calls
224191
auto setGeneratorLoopback(GeneratorLoopbackType value) -> Parameters&;
225192

226-
/// Sets the GeneratorRandomSizeEnabled parameter.
227-
///
228-
/// If enabled, the content of the DMA pages will have a random size.
229-
/// * C-RORC: currently unsupported
230-
/// * CRU: Size varies between 32 bytes and the DMA page size
231-
///
232-
/// \param value The value to set
233-
/// \return Reference to this object for chaining calls
234-
auto setGeneratorRandomSizeEnabled(GeneratorRandomSizeEnabledType value) -> Parameters&;
235-
236193
/// Sets the BufferParameters parameter
237194
///
238195
/// Registers a memory (with BufferParameters::Memory) or file (with BufferParameters::File) buffer with the
@@ -366,10 +323,6 @@ class Parameters
366323
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
367324
auto getDmaPageSize() const -> boost::optional<DmaPageSizeType>;
368325

369-
/// Gets the GeneratorEnabled parameter
370-
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
371-
auto getGeneratorEnabled() const -> boost::optional<GeneratorEnabledType>;
372-
373326
/// Gets the LinkLoopbackEnabled parameter
374327
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
375328
auto getLinkLoopbackEnabled() const -> boost::optional<LinkLoopbackEnabledType>;
@@ -382,18 +335,9 @@ class Parameters
382335
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
383336
auto getOnuAddress() const -> boost::optional<OnuAddressType>;
384337

385-
/// Gets the GeneratorDataSize parameter
386-
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
387-
auto getGeneratorDataSize() const -> boost::optional<GeneratorDataSizeType>;
388-
389-
/// Gets the GeneratorLoopback parameter
390338
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
391339
auto getGeneratorLoopback() const -> boost::optional<GeneratorLoopbackType>;
392340

393-
/// Gets the GeneratorRandomSizeEnabled parameter
394-
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
395-
auto getGeneratorRandomSizeEnabled() const -> boost::optional<GeneratorRandomSizeEnabledType>;
396-
397341
/// Gets the BufferParameters parameter
398342
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not
399343
auto getBufferParameters() const -> boost::optional<BufferParametersType>;
@@ -452,11 +396,6 @@ class Parameters
452396
/// \return The value
453397
auto getDmaPageSizeRequired() const -> DmaPageSizeType;
454398

455-
/// Gets the GeneratorEnabled parameter
456-
/// \exception ParameterException The parameter was not present
457-
/// \return The value
458-
auto getGeneratorEnabledRequired() const -> GeneratorEnabledType;
459-
460399
/// Gets the LinkLoopbackEnabled parameter
461400
/// \exception ParameterException The parameter was not present
462401
/// \return The value
@@ -472,21 +411,11 @@ class Parameters
472411
/// \return The value
473412
auto getOnuAddressRequired() const -> OnuAddressType;
474413

475-
/// Gets the GeneratorDataSize parameter
476-
/// \exception ParameterException The parameter was not present
477-
/// \return The value
478-
auto getGeneratorDataSizeRequired() const -> GeneratorDataSizeType;
479-
480414
/// Gets the GeneratorLoopback parameter
481415
/// \exception ParameterException The parameter was not present
482416
/// \return The value
483417
auto getGeneratorLoopbackRequired() const -> GeneratorLoopbackType;
484418

485-
/// Gets the GeneratorRandomSizeEnabled parameter
486-
/// \exception ParameterException The parameter was not present
487-
/// \return The value
488-
auto getGeneratorRandomSizeEnabledRequired() const -> GeneratorRandomSizeEnabledType;
489-
490419
/// Gets the BufferParameters parameter
491420
/// \exception ParameterException The parameter was not present
492421
/// \return The value

src/CommandLineUtilities/ProgramDmaBench.cxx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ class ProgramDmaBench : public Program
150150
options.add_options()("fast-check",
151151
po::bool_switch(&mOptions.fastCheckEnabled),
152152
"Enable fast error checking");
153-
options.add_options()("generator",
154-
po::value<bool>(&mOptions.generatorEnabled)->default_value(true),
155-
"Enable data generator");
156153
Options::addOptionCardId(options);
157154
options.add_options()("links",
158155
po::value<std::string>(&mOptions.links)->default_value("0"),
@@ -227,13 +224,9 @@ class ProgramDmaBench : public Program
227224
auto cardId = Options::getOptionCardId(map);
228225
auto params = Parameters::makeParameters(cardId, mOptions.dmaChannel);
229226
params.setDmaPageSize(mOptions.dmaPageSize);
230-
params.setGeneratorEnabled(mOptions.generatorEnabled);
231-
if (!mOptions.generatorEnabled) { // if generator is not enabled, force loopbackMode=NONE
232-
params.setGeneratorLoopback(LoopbackMode::None);
233-
} else {
234-
params.setGeneratorLoopback(LoopbackMode::fromString(mOptions.loopbackModeString));
235-
}
236-
mLoopback = params.getGeneratorLoopback().get_value_or(LoopbackMode::None);
227+
params.setGeneratorLoopback(LoopbackMode::fromString(mOptions.loopbackModeString));
228+
229+
mLoopback = params.getGeneratorLoopbackRequired();
237230

238231
params.setStbrdEnabled(mOptions.stbrd); //Set STBRD for the CRORC
239232

@@ -1083,7 +1076,6 @@ class ProgramDmaBench : public Program
10831076
std::string fileOutputPathBin;
10841077
std::string fileOutputPathAscii;
10851078
std::string links;
1086-
bool generatorEnabled = false;
10871079
bool bufferFullCheck = false;
10881080
size_t dmaPageSize;
10891081
std::string loopbackModeString;

src/Crorc/CrorcDmaChannel.cxx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,12 @@ namespace roc
4040
{
4141

4242
CrorcDmaChannel::CrorcDmaChannel(const Parameters& parameters)
43-
: DmaChannelPdaBase(parameters, allowedChannels()), //
44-
mPageSize(parameters.getDmaPageSize().get_value_or(DMA_PAGE_SIZE)), // 8 kB default for uniformity with CRU
45-
mInitialResetLevel(ResetLevel::Internal), // It's good to reset at least the card channel in general
46-
mSTBRD(parameters.getStbrdEnabled().get_value_or(false)), //TODO: Set as a parameter
47-
mUseFeeAddress(false), // Not sure
48-
mLoopbackMode(parameters.getGeneratorLoopback().get_value_or(LoopbackMode::Internal)), // Internal loopback by default
49-
mGeneratorEnabled(parameters.getGeneratorEnabled().get_value_or(true)) // Use data generator by default
43+
: DmaChannelPdaBase(parameters, allowedChannels()), //
44+
mPageSize(parameters.getDmaPageSize().get_value_or(DMA_PAGE_SIZE)), // 8 kB default for uniformity with CRU
45+
mInitialResetLevel(ResetLevel::Internal), // It's good to reset at least the card channel in general
46+
mSTBRD(parameters.getStbrdEnabled().get_value_or(false)), //TODO: Set as a parameter
47+
mUseFeeAddress(false), // Not sure
48+
mLoopbackMode(parameters.getGeneratorLoopback().get_value_or(LoopbackMode::Internal)) // Internal loopback by default
5049
{
5150
// Check that the DMA page is valid
5251
if (mPageSize != DMA_PAGE_SIZE) {
@@ -60,6 +59,8 @@ CrorcDmaChannel::CrorcDmaChannel(const Parameters& parameters)
6059
<< ErrorInfo::LoopbackMode(mLoopbackMode));
6160
}
6261

62+
mGeneratorEnabled = (mLoopbackMode == LoopbackMode::None) ? false : true;
63+
6364
// Set mRDYRX if generator is disabled and mSTBRD is false
6465
if (!mGeneratorEnabled) {
6566
mRDYRX = mSTBRD ? false : true;

src/Crorc/CrorcDmaChannel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ class CrorcDmaChannel final : public DmaChannelPdaBase
198198
const LoopbackMode::type mLoopbackMode;
199199

200200
/// Enables the data generator
201-
const bool mGeneratorEnabled;
201+
bool mGeneratorEnabled;
202202

203203
Crorc::Crorc::DiuConfig mDiuConfig;
204204
};

src/Cru/CruDmaChannel.cxx

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ CruDmaChannel::CruDmaChannel(const Parameters& parameters)
3232
: DmaChannelPdaBase(parameters, allowedChannels()), //
3333
mInitialResetLevel(ResetLevel::Internal), // It's good to reset at least the card channel in general
3434
mLoopbackMode(parameters.getGeneratorLoopback().get_value_or(LoopbackMode::Internal)), // DG loopback mode by default
35-
mGeneratorEnabled(parameters.getGeneratorEnabled().get_value_or(true)), // Use data generator by default
3635
mDmaPageSize(parameters.getDmaPageSize().get_value_or(Cru::DMA_PAGE_SIZE))
3736
{
3837

@@ -86,10 +85,6 @@ CruDmaChannel::CruDmaChannel(const Parameters& parameters)
8685
}
8786
log(stream.str());
8887
}
89-
90-
std::stringstream stream;
91-
stream << "Generator enabled: " << mGeneratorEnabled << " | Loopback mode: " << LoopbackMode::toString(mLoopbackMode);
92-
log(stream.str());
9388
}
9489

9590
auto CruDmaChannel::allowedChannels() -> AllowedChannels
@@ -114,23 +109,12 @@ void CruDmaChannel::deviceStartDma()
114109
{
115110
// Set data source
116111
uint32_t dataSourceSelection = 0x0;
117-
if (mGeneratorEnabled) {
118-
if (mLoopbackMode == LoopbackMode::Internal) {
119-
enableDebugMode();
120-
dataSourceSelection = Cru::Registers::DATA_SOURCE_SELECT_INTERNAL;
121-
} else if (mLoopbackMode == LoopbackMode::Ddg) {
122-
dataSourceSelection = Cru::Registers::DATA_SOURCE_SELECT_GBT;
123-
} else {
124-
BOOST_THROW_EXCEPTION(CruException()
125-
<< ErrorInfo::Message("CRU only support 'Internal' or 'Ddg' for data generator"));
126-
}
127-
} else {
128-
if (mLoopbackMode == LoopbackMode::None) {
129-
dataSourceSelection = Cru::Registers::DATA_SOURCE_SELECT_GBT;
130-
} else {
131-
BOOST_THROW_EXCEPTION(CruException()
132-
<< ErrorInfo::Message("CRU only supports 'None' loopback mode when operating without a data generator"));
133-
}
112+
113+
if (mLoopbackMode == LoopbackMode::Internal) {
114+
enableDebugMode();
115+
dataSourceSelection = Cru::Registers::DATA_SOURCE_SELECT_INTERNAL;
116+
} else { // loopback mode == NONE or DDG
117+
dataSourceSelection = Cru::Registers::DATA_SOURCE_SELECT_GBT;
134118
}
135119

136120
if (mFeatures.dataSelection) {
@@ -362,7 +346,7 @@ int32_t CruDmaChannel::getDroppedPackets()
362346

363347
bool CruDmaChannel::injectError()
364348
{
365-
if (mGeneratorEnabled) {
349+
if (!mLoopbackMode == LoopbackMode::None) {
366350
getBar()->dataGeneratorInjectError();
367351
return true;
368352
} else {

src/Cru/CruDmaChannel.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,6 @@ class CruDmaChannel final : public DmaChannelPdaBase
149149
/// Gives the type of loopback
150150
const LoopbackMode::type mLoopbackMode;
151151

152-
/// Enables the data generator
153-
const bool mGeneratorEnabled;
154-
155152
/// Flag to know if we should reset the debug register after we fiddle with it
156153
bool mDebugRegisterReset = false;
157154

src/DmaChannelBase.cxx

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,8 @@ void DmaChannelBase::checkChannelNumber(const AllowedChannels& allowedChannels)
4343
}
4444
}
4545

46-
void DmaChannelBase::checkParameters(Parameters& parameters)
46+
void DmaChannelBase::checkParameters(Parameters& /*parameters*/) //TODO: Possible use case?
4747
{
48-
// Generator enabled is not allowed in conjunction with none loopback mode: default to Internal
49-
auto enabled = parameters.getGeneratorEnabled();
50-
auto loopback = parameters.getGeneratorLoopback();
51-
if (enabled && loopback && (*enabled && (*loopback == LoopbackMode::None))) {
52-
log("Generator enabled, defaulting to LoopbackMode = Internal", InfoLogger::InfoLogger::Warning);
53-
parameters.setGeneratorLoopback(LoopbackMode::Internal);
54-
}
55-
56-
// Generator disabled. Loopback mode should be set to None
57-
if (enabled && loopback && (!*enabled && (*loopback != LoopbackMode::None))) {
58-
log("Generator disabled, defaulting to LoopbackMode = None", InfoLogger::InfoLogger::Warning);
59-
parameters.setGeneratorLoopback(LoopbackMode::None);
60-
}
6148
}
6249

6350
void DmaChannelBase::freeUnusedChannelBuffer()
@@ -118,7 +105,7 @@ DmaChannelBase::DmaChannelBase(CardDescriptor cardDescriptor, Parameters& parame
118105
checkChannelNumber(allowedChannels);
119106

120107
// Do some basic Parameters validity checks
121-
checkParameters(parameters);
108+
//checkParameters(parameters);
122109

123110
//try to acquire lock
124111
log("Acquiring DMA channel lock", InfoLogger::InfoLogger::Debug);

src/Parameters.cxx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,7 @@ _PARAMETER_FUNCTIONS(BufferParameters, "buffer_parameters")
118118
_PARAMETER_FUNCTIONS(CardId, "card_id")
119119
_PARAMETER_FUNCTIONS(ChannelNumber, "channel_number")
120120
_PARAMETER_FUNCTIONS(DmaPageSize, "dma_page_size")
121-
_PARAMETER_FUNCTIONS(GeneratorEnabled, "generator_enabled")
122121
_PARAMETER_FUNCTIONS(GeneratorLoopback, "generator_loopback")
123-
_PARAMETER_FUNCTIONS(GeneratorDataSize, "generator_data_size")
124-
_PARAMETER_FUNCTIONS(GeneratorRandomSizeEnabled, "generator_random_size_enabled")
125122
_PARAMETER_FUNCTIONS(LinkMask, "link_mask")
126123
_PARAMETER_FUNCTIONS(AllowRejection, "allow_rejection")
127124
_PARAMETER_FUNCTIONS(Clock, "clock")

test/TestParameters.cxx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ constexpr auto SERIAL_NUMBER = 1;
1818
constexpr auto CHANNEL_NUMBER = 2;
1919
//constexpr auto DMA_BUFFER_SIZE = 3ul;
2020
constexpr auto DMA_PAGE_SIZE = 4ul;
21-
constexpr auto GENERATOR_ENABLED = true;
2221
constexpr auto GENERATOR_LOOPBACK_MODE = LoopbackMode::Internal;
2322

2423
BOOST_AUTO_TEST_CASE(ParametersConstructors)
@@ -33,20 +32,17 @@ BOOST_AUTO_TEST_CASE(ParametersPutGetTest)
3332
{
3433
Parameters p = Parameters::makeParameters(SERIAL_NUMBER, CHANNEL_NUMBER)
3534
.setDmaPageSize(DMA_PAGE_SIZE)
36-
.setGeneratorEnabled(GENERATOR_ENABLED)
3735
.setGeneratorLoopback(GENERATOR_LOOPBACK_MODE)
3836
.setBufferParameters(buffer_parameters::File{ "/my/file.shm", 0 });
3937

4038
BOOST_REQUIRE(boost::get<int>(p.getCardId().get()) == SERIAL_NUMBER);
4139
BOOST_REQUIRE(p.getChannelNumber().get_value_or(0) == CHANNEL_NUMBER);
4240
BOOST_REQUIRE(p.getDmaPageSize().get_value_or(0) == DMA_PAGE_SIZE);
43-
BOOST_REQUIRE(p.getGeneratorEnabled().get_value_or(false) == GENERATOR_ENABLED);
4441
BOOST_REQUIRE(p.getGeneratorLoopback().get_value_or(LoopbackMode::None) == GENERATOR_LOOPBACK_MODE);
4542

4643
BOOST_REQUIRE(boost::get<int>(p.getCardIdRequired()) == SERIAL_NUMBER);
4744
BOOST_REQUIRE(p.getChannelNumberRequired() == CHANNEL_NUMBER);
4845
BOOST_REQUIRE(p.getDmaPageSizeRequired() == DMA_PAGE_SIZE);
49-
BOOST_REQUIRE(p.getGeneratorEnabledRequired() == GENERATOR_ENABLED);
5046
BOOST_REQUIRE(p.getGeneratorLoopbackRequired() == GENERATOR_LOOPBACK_MODE);
5147

5248
BOOST_REQUIRE(boost::get<buffer_parameters::File>(p.getBufferParametersRequired()).path == "/my/file.shm");
@@ -56,7 +52,6 @@ BOOST_AUTO_TEST_CASE(ParametersPutGetTest)
5652
BOOST_AUTO_TEST_CASE(ParametersThrowTest)
5753
{
5854
auto p = Parameters::makeParameters(SERIAL_NUMBER, CHANNEL_NUMBER);
59-
BOOST_CHECK_THROW(p.getGeneratorEnabledRequired(), ParameterException);
6055
}
6156

6257
BOOST_AUTO_TEST_CASE(ParametersLinkMaskFromString)

0 commit comments

Comments
 (0)