aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/netlists-gates.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/synth/netlists-gates.ads')
-rw-r--r--src/synth/netlists-gates.ads60
1 files changed, 34 insertions, 26 deletions
diff --git a/src/synth/netlists-gates.ads b/src/synth/netlists-gates.ads
index e1de55289..e9c153c97 100644
--- a/src/synth/netlists-gates.ads
+++ b/src/synth/netlists-gates.ads
@@ -39,61 +39,69 @@ package Netlists.Gates is
subtype Dyadic_Module_Id is Module_Id range Id_And .. Id_Smul;
-- Logical and arithmetic shifts.
+ -- FIXME: clarify right operand: width, large values
Id_Lsl : constant Module_Id := 13;
Id_Lsr : constant Module_Id := 14;
Id_Asr : constant Module_Id := 15;
subtype Shift_Module_Id is Module_Id range Id_Lsl .. Id_Asr;
- Id_Buf : constant Module_Id := 16;
- Id_Not : constant Module_Id := 17;
+ -- Rotations.
+ -- FIXME: clarify right operand.
+ Id_Rol : constant Module_Id := 16;
+ Id_Ror : constant Module_Id := 17;
- Id_Neg : constant Module_Id := 18;
+ subtype Rotate_Module_Id is Module_Id range Id_Lsl .. Id_Asr;
- subtype Monadic_Module_Id is Module_Id range Id_Buf .. Id_Neg;
+ subtype Shift_Rotate_Module_Id is Module_Id range Id_Lsl .. Id_Ror;
- Id_Eq : constant Module_Id := 20;
- Id_Ne : constant Module_Id := 21;
- Id_Ule : constant Module_Id := 22;
- Id_Sle : constant Module_Id := 23;
- Id_Ult : constant Module_Id := 24;
- Id_Slt : constant Module_Id := 25;
- Id_Uge : constant Module_Id := 26;
- Id_Sge : constant Module_Id := 27;
- Id_Ugt : constant Module_Id := 28;
- Id_Sgt : constant Module_Id := 29;
+ Id_Not : constant Module_Id := 18;
+ Id_Neg : constant Module_Id := 19;
+
+ subtype Monadic_Module_Id is Module_Id range Id_Not .. Id_Neg;
+
+ Id_Eq : constant Module_Id := 21;
+ Id_Ne : constant Module_Id := 22;
+ Id_Ule : constant Module_Id := 23;
+ Id_Sle : constant Module_Id := 24;
+ Id_Ult : constant Module_Id := 25;
+ Id_Slt : constant Module_Id := 26;
+ Id_Uge : constant Module_Id := 27;
+ Id_Sge : constant Module_Id := 28;
+ Id_Ugt : constant Module_Id := 29;
+ Id_Sgt : constant Module_Id := 30;
subtype Compare_Module_Id is Module_Id range Id_Eq .. Id_Sgt;
- Id_Red_And : constant Module_Id := 30;
- Id_Red_Or : constant Module_Id := 31;
+ Id_Red_And : constant Module_Id := 31;
+ Id_Red_Or : constant Module_Id := 32;
subtype Reduce_Module_Id is Module_Id range Id_Red_And .. Id_Red_Or;
- Id_Concat2 : constant Module_Id := 32;
- Id_Concat3 : constant Module_Id := 33;
- Id_Concat4 : constant Module_Id := 34;
+ Id_Concat2 : constant Module_Id := 40;
+ Id_Concat3 : constant Module_Id := 41;
+ Id_Concat4 : constant Module_Id := 42;
subtype Concat_Module_Id is Module_Id range Id_Concat2 .. Id_Concat4;
-- Concatenation with N inputs.
- Id_Concatn : constant Module_Id := 35;
+ Id_Concatn : constant Module_Id := 43;
-- Inputs: s, i0, i1
-- Output: o
- Id_Mux2 : constant Module_Id := 36;
+ Id_Mux2 : constant Module_Id := 44;
-- Inputs: s, i0, i1, s2, s3
-- Output: o
- Id_Mux4 : constant Module_Id := 37;
+ Id_Mux4 : constant Module_Id := 45;
subtype Mux_Module_Id is Module_Id range Id_Mux2 .. Id_Mux4;
-- Like a wire: the output is equal to the input, but could be elimited
-- at any time. Isignal has an initial value.
- Id_Signal : constant Module_Id := 38;
- Id_Isignal : constant Module_Id := 39;
- Id_Output : constant Module_Id := 40;
- Id_Port : constant Module_Id := 41;
+ Id_Signal : constant Module_Id := 46;
+ Id_Isignal : constant Module_Id := 47;
+ Id_Output : constant Module_Id := 48;
+ Id_Port : constant Module_Id := 49;
-- Note: initial values must be constant nets.
--