Corrected overlapping register detection in TDF validation script

This commit is contained in:
Nav
2025-01-18 18:28:14 +00:00
parent d1d01327ae
commit 4478150995
3 changed files with 32 additions and 13 deletions

View File

@@ -488,19 +488,6 @@ class ValidationService
$failures[] = 'Duplicate register key ("' . $register->key . '") detected';
}
if ($register->alternative !== true) {
foreach ($registerGroup->registers as $registerOther) {
if ($register->key === $registerOther->key || $registerOther->alternative === true) {
continue;
}
if ($register->intersectsWith($registerOther)) {
$failures[] = 'Register "' . $register->key . '" overlaps with register "'
. $registerOther->key . '"';
}
}
}
$processedChildKeys[] = $register->key;
}
@@ -1118,6 +1105,22 @@ class ValidationService
. implode(',', $segmentKeys) . ')';
continue;
}
$registerAddressRange = $register->addressRange($addressSpace->unitSize);
if ($register->alternative !== true) {
foreach ($registerGroup->registers as $registerOther) {
if ($register->key === $registerOther->key || $registerOther->alternative === true) {
continue;
}
$registerOtherAddressRange = $registerOther->addressRange($addressSpace->unitSize);
if ($registerAddressRange->intersectsWith($registerOtherAddressRange)) {
$failures[] = 'Register "' . $register->key . '" overlaps with register "'
. $registerOther->key . '"';
}
}
}
}
}

View File

@@ -412,6 +412,7 @@ class TargetDescriptionFile
$register->initialValue,
$register->description,
$register->access,
$register->alternative,
array_map(
fn (BitField $bitField): TargetRegisterBitField => $this->targetRegisterBitFieldFromBitField($bitField),
$register->bitFields