summaryrefslogtreecommitdiff
path: root/simulate/elaboration.adb
diff options
context:
space:
mode:
Diffstat (limited to 'simulate/elaboration.adb')
-rw-r--r--simulate/elaboration.adb22
1 files changed, 12 insertions, 10 deletions
diff --git a/simulate/elaboration.adb b/simulate/elaboration.adb
index 0abe811..dd405ec 100644
--- a/simulate/elaboration.adb
+++ b/simulate/elaboration.adb
@@ -1864,16 +1864,18 @@ package body Elaboration is
(Item, Sub_Instances (Ind + I - 1));
end loop;
when Iir_Kind_Indexed_Name =>
- Expr := Execute_Expression
- (Instance, Get_First_Element (Get_Index_List (Spec)));
- Ind := Instance_Slot_Type
- (Get_Index_Offset (Expr, Bounds, Spec));
- Sub_Conf (Ind) := True;
- Elaborate_Block_Configuration (Item, Sub_Instances (Ind));
- when Iir_Kind_Selected_Name =>
- -- Must be the only default block configuration
- pragma Assert (Default_Item = Null_Iir);
- Default_Item := Item;
+ if Get_Index_List (Spec) = Iir_List_Others then
+ -- Must be the only default block configuration
+ pragma Assert (Default_Item = Null_Iir);
+ Default_Item := Item;
+ else
+ Expr := Execute_Expression
+ (Instance, Get_First_Element (Get_Index_List (Spec)));
+ Ind := Instance_Slot_Type
+ (Get_Index_Offset (Expr, Bounds, Spec));
+ Sub_Conf (Ind) := True;
+ Elaborate_Block_Configuration (Item, Sub_Instances (Ind));
+ end if;
when Iir_Kind_Generate_Statement =>
-- Must be the only block configuration
pragma Assert (Item = Conf_Chain);