diff --git a/alu.dig b/alu.dig
index 0df437c..fd4922f 100644
--- a/alu.dig
+++ b/alu.dig
@@ -86,7 +86,7 @@
multiply-add.dig
-
+
In
@@ -100,7 +100,7 @@
32
-
+
Neg
@@ -158,12 +158,7 @@
XOr
-
-
- wideShape
- true
-
-
+
@@ -236,7 +231,7 @@
32
-
+
Out
@@ -330,12 +325,7 @@
And
-
-
- wideShape
- true
-
-
+
@@ -345,21 +335,12 @@
rotation
-
- wideShape
- true
-
And
-
-
- wideShape
- true
-
-
+
@@ -386,8 +367,8 @@
0000 -> ADD
0001 -> SUB
-0010 -> MAD
-0011 -> MADS
+0010 -> MADUU
+0011 -> MADSS
0100 -> AND
0101 -> OR
0110 -> XOR
@@ -399,7 +380,7 @@
1100 -> ROL
1101 -> ROR
1110 -> ASR
-1111 -> NOP
+1111 -> MADSU
@@ -432,23 +413,6 @@
-
- And
-
-
- inverterConfig
-
- In_1
- In_2
-
-
-
- Inputs
- 4
-
-
-
-
Tunnel
@@ -457,21 +421,7 @@
mad_s
-
-
-
- Splitter
-
-
- Input Splitting
- 1*3
-
-
- Output Splitting
- 3
-
-
-
+
Tunnel
@@ -481,7 +431,7 @@
shift_op
-
+
Tunnel
@@ -509,24 +459,7 @@
mad_s
-
-
-
- And
-
-
- inverterConfig
-
- In_1
- In_2
-
-
-
- Inputs
- 3
-
-
-
+
Tunnel
@@ -536,7 +469,7 @@
long_z
-
+
Multiplexer
@@ -554,164 +487,126 @@
- And
-
-
+ Tunnel
+
+
+ NetName
+ sel
+
+
+
- And
+ XOr
-
+
- Or
+ Out
- Inputs
- 3
+ Label
+ S
-
+
- Splitter
+ LookUpTable
- Input Splitting
- 1*3
+ Bits
+ 3
- Output Splitting
- 3
+ Inputs
+ 4
+
+
+ Data
+ 0,1,2,2,3,4,5,6,7*7,2
-
+
- And
-
-
-
-
- And
+ LookUpTable
- inverterConfig
-
- In_2
- In_3
-
-
-
- Inputs
+ Bits
3
-
-
-
-
- And
-
- inverterConfig
-
- In_1
- In_2
-
+ Data
+ 9*0,1,2,3,4,5,6
Inputs
- 3
+ 4
-
+
- Or
+ LookUpTable
Inputs
4
+
+ Data
+ 0,0,1,1,11*0,1
+
-
+
- And
+ Splitter
- inverterConfig
-
- In_1
- In_2
-
+ Input Splitting
+ 2
- Inputs
- 3
+ Output Splitting
+ 1,1
-
+
- And
+ LookUpTable
- inverterConfig
-
- In_1
- In_3
-
+ Bits
+ 2
- Inputs
- 3
+ Data
+ 0,0,0,3,11*0,2
-
-
-
-
- Or
-
Inputs
- 3
-
-
-
-
-
- Tunnel
-
-
- NetName
- sel
+ 4
-
+
-
-
+
+
-
-
-
-
-
-
-
-
@@ -721,20 +616,20 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -749,12 +644,8 @@
-
-
-
-
-
-
+
+
@@ -765,44 +656,28 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -817,15 +692,15 @@
-
-
+
+
-
-
+
+
-
+
@@ -854,52 +729,32 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
+
+
-
-
+
+
-
-
-
-
@@ -913,20 +768,20 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -941,48 +796,44 @@
-
+
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -997,20 +848,16 @@
-
-
-
-
-
-
+
+
-
-
+
+
@@ -1032,61 +879,45 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -1108,25 +939,21 @@
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
@@ -1156,10 +983,6 @@
-
-
-
-
@@ -1169,48 +992,40 @@
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -1225,20 +1040,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -1249,12 +1052,12 @@
-
-
+
+
-
-
+
+
@@ -1268,10 +1071,6 @@
-
-
-
-
@@ -1285,15 +1084,15 @@
-
+
-
+
-
+
@@ -1309,72 +1108,76 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
@@ -1389,17 +1192,13 @@
-
+
-
-
-
-
@@ -1422,7 +1221,7 @@
-
+
@@ -1437,7 +1236,7 @@
-
+
@@ -1453,52 +1252,40 @@
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
@@ -1526,7 +1313,7 @@
-
+
@@ -1553,45 +1340,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1613,36 +1368,24 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -1653,33 +1396,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.dig b/main.dig
index d6c1323..b3d21fe 100644
--- a/main.dig
+++ b/main.dig
@@ -31,7 +31,7 @@
decode.dig
-
+
RAMSinglePort
@@ -98,6 +98,10 @@
+
+
+
+
diff --git a/multiply-add.dig b/multiply-add.dig
index df728f6..f60b80f 100644
--- a/multiply-add.dig
+++ b/multiply-add.dig
@@ -8,10 +8,10 @@
Label
- S
+ S_a
-
+
In
@@ -25,7 +25,7 @@
32
-
+
In
@@ -39,7 +39,7 @@
32
-
+
Splitter
@@ -53,7 +53,7 @@
32,32
-
+
Out
@@ -67,7 +67,7 @@
32
-
+
Out
@@ -81,7 +81,7 @@
32
-
+
Add
@@ -91,7 +91,7 @@
64
-
+
In
@@ -105,7 +105,7 @@
32
-
+
BitExtender
@@ -119,7 +119,7 @@
64
-
+
In
@@ -129,7 +129,7 @@
C_i
-
+
Out
@@ -139,114 +139,128 @@
C_o
-
+
signed_mul.dig
+
+ In
+
+
+ Label
+ S_b
+
+
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
diff --git a/signed_mul.dig b/signed_mul.dig
index 4709ca4..7b4d881 100644
--- a/signed_mul.dig
+++ b/signed_mul.dig
@@ -18,10 +18,10 @@
Label
- S
+ S_a
-
+
In
@@ -147,7 +147,7 @@
true
-
+
And
@@ -157,7 +157,7 @@
true
-
+
Neg
@@ -218,6 +218,26 @@
+
+ In
+
+
+ Label
+ S_b
+
+
+
+
+
+ Or
+
+
+ wideShape
+ true
+
+
+
+
@@ -241,8 +261,12 @@
-
-
+
+
+
+
+
+
@@ -252,25 +276,25 @@
+
+
+
+
-
-
-
-
-
-
+
+
-
-
+
+
@@ -282,16 +306,12 @@
-
+
-
-
-
-
@@ -302,10 +322,10 @@
-
+
-
+
@@ -325,13 +345,17 @@
-
+
+
+
+
+
@@ -345,8 +369,8 @@
-
-
+
+
@@ -378,7 +402,11 @@
-
+
+
+
+
+
@@ -388,6 +416,10 @@
+
+
+
+
@@ -404,6 +436,10 @@
+
+
+
+
@@ -412,10 +448,6 @@
-
-
-
-
@@ -432,18 +464,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -452,6 +472,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sreg.dig b/sreg.dig
index 4254b39..405e4dd 100644
--- a/sreg.dig
+++ b/sreg.dig
@@ -155,6 +155,42 @@
+
+ In
+
+
+ Label
+ S_i
+
+
+
+
+
+ Out
+
+
+ Label
+ S_o
+
+
+
+
+
+ Text
+
+
+ Description
+ Status Register
+
+Z : Zero flag
+C : Carry flag
+N : Negative flag (bit 31)
+V : Two's Complement Overflow flag
+S : True Sign (V xor N)
+
+
+
+
@@ -185,6 +221,10 @@
+
+
+
+
@@ -257,10 +297,6 @@
-
-
-
-
@@ -269,6 +305,10 @@
+
+
+
+
@@ -317,6 +357,10 @@
+
+
+
+
@@ -329,6 +373,10 @@
+
+
+
+
@@ -358,8 +406,8 @@
-
-
+
+
@@ -409,10 +457,6 @@
-
-
-
-
@@ -481,6 +525,14 @@
+
+
+
+
+
+
+
+