CsrBlock constructor
- required CsrBlockConfig config,
- required Logic clk,
- required Logic reset,
- required DataPortInterface? frontWrite,
- required DataPortInterface? frontRead,
- bool allowLargerRegisters = false,
- int logicalRegisterIncrement = 1,
- bool reserveName = false,
- bool reserveDefinitionName = false,
- String? definitionName,
Constructor for a CSR block.
Implementation
CsrBlock({
required CsrBlockConfig super.config,
required super.clk,
required super.reset,
required super.frontWrite,
required super.frontRead,
super.allowLargerRegisters,
this.logicalRegisterIncrement = 1,
super.reserveName,
super.reserveDefinitionName,
String? definitionName,
}) : csrs = List.unmodifiable(config.registers.map(Csr.new)),
super(
definitionName: definitionName ?? 'CsrBlock_${config.name}_block') {
_validate();
for (var i = 0; i < csrs.length; i++) {
if (csrs[i].config.backdoorAccessible) {
_backdoorInterfaces.add(CsrBackdoorInterface(config: csrs[i].config));
backdoorInterfaces.add(CsrBackdoorInterface(config: csrs[i].config));
_backdoorInterfaces.last.connectIO(this, backdoorInterfaces.last,
outputTags: {CsrBackdoorPortGroup.read},
inputTags: {CsrBackdoorPortGroup.write},
uniquify: (original) =>
'${name}_${csrs[i].config.name}_backdoor_$original');
_backdoorIndexMap[i] = _backdoorInterfaces.length - 1;
}
}
_buildLogic();
}