aboutsummaryrefslogtreecommitdiffstats
path: root/src/simul/simul-vhdl_elab.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/simul/simul-vhdl_elab.ads')
-rw-r--r--src/simul/simul-vhdl_elab.ads10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/simul/simul-vhdl_elab.ads b/src/simul/simul-vhdl_elab.ads
index 795df7245..ed58ca0d6 100644
--- a/src/simul/simul-vhdl_elab.ads
+++ b/src/simul/simul-vhdl_elab.ads
@@ -190,6 +190,8 @@ package Simul.Vhdl_Elab is
Val : Memory_Ptr;
-- Index in the scalar table.
Idx : Scalar_Quantity_Index;
+ -- For across quantity, we need the terminals to compute the value
+ -- For a through quantity, we need the terminals to compute the contrib
end record;
package Quantity_Table is new Tables
@@ -198,12 +200,20 @@ package Simul.Vhdl_Elab is
Table_Low_Bound => No_Quantity_Index + 1,
Table_Initial => 128);
+ type Scalar_Terminal_Index is new Uns32;
+ No_Scalar_Terminal : constant Scalar_Terminal_Index := 0;
+
type Terminal_Entry is record
Decl : Iir;
Inst : Synth_Instance_Acc;
Across_Typ : Type_Acc;
Through_Typ : Type_Acc;
+ -- The reference value.
Ref_Val : Memory_Ptr;
+ -- Index in the scalar quantity table for the reference value.
+ Ref_Idx : Scalar_Quantity_Index;
+ -- Index in the scalar terminal table for the contribution.
+ Term_Idx : Scalar_Terminal_Index;
end record;
package Terminal_Table is new Tables