aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.vscode/launch.json2
-rw-r--r--digital/atk16.dig1418
-rw-r--r--digital/atk16_alu.dig1240
-rw-r--r--digital/atk16_decoder.dig402
-rw-r--r--digital/atk16_mem.dig461
-rw-r--r--digital/atk16_regbank.dig1300
-rw-r--r--high-level-lang-idea.perl36
-rwxr-xr-xsrc/assembler.py57
-rw-r--r--src/test.atk162
-rw-r--r--src/test_sum.atk163
-rwxr-xr-xsrc/ucode.py38
11 files changed, 3373 insertions, 1586 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
index e60d76b..22dd52d 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -11,7 +11,7 @@
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
- "args": ["test.atk16", "test.bin"]
+ "args": ["src/test.atk16", "out/test.bin"]
}
]
} \ No newline at end of file
diff --git a/digital/atk16.dig b/digital/atk16.dig
index 8c350c2..15912d7 100644
--- a/digital/atk16.dig
+++ b/digital/atk16.dig
@@ -1,31 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>2</version>
- <attributes/>
+ <attributes>
+ <entry>
+ <string>view1</string>
+ <transform>
+ <matrix>
+ <double>0.8446671195652201</double>
+ <double>0.0</double>
+ <double>0.0</double>
+ <double>0.8446671195652201</double>
+ <double>481.55870489058793</double>
+ <double>445.5141438507956</double>
+ </matrix>
+ </transform>
+ </entry>
+ <entry>
+ <string>view2</string>
+ <transform>
+ <matrix>
+ <double>0.8446671195652201</double>
+ <double>0.0</double>
+ <double>0.0</double>
+ <double>0.8446671195652201</double>
+ <double>481.55870489058793</double>
+ <double>445.5141438507956</double>
+ </matrix>
+ </transform>
+ </entry>
+ <entry>
+ <string>view3</string>
+ <transform>
+ <matrix>
+ <double>0.8446671195652201</double>
+ <double>0.0</double>
+ <double>0.0</double>
+ <double>0.8446671195652201</double>
+ <double>481.55870489058793</double>
+ <double>445.5141438507956</double>
+ </matrix>
+ </transform>
+ </entry>
+ </attributes>
<visualElements>
<visualElement>
- <elementName>RegisterFile</elementName>
+ <elementName>Register</elementName>
<elementAttributes>
<entry>
- <string>AddrBits</string>
- <int>3</int>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
</entry>
<entry>
<string>Label</string>
- <string>Register file</string>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- </elementAttributes>
- <pos x="-200" y="220"/>
- </visualElement>
- <visualElement>
- <elementName>Register</elementName>
- <elementAttributes>
- <entry>
- <string>Label</string>
<string>MAR</string>
</entry>
<entry>
@@ -39,33 +65,9 @@
<elementName>Register</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>IR</string>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- </elementAttributes>
- <pos x="0" y="-80"/>
- </visualElement>
- <visualElement>
- <elementName>atk16_alu.dig</elementName>
- <elementAttributes>
- <entry>
- <string>Label</string>
- <string>ALU</string>
- </entry>
- <entry>
- <string>shapeType</string>
- <shapeType>SIMPLE</shapeType>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
</entry>
- </elementAttributes>
- <pos x="40" y="280"/>
- </visualElement>
- <visualElement>
- <elementName>Register</elementName>
- <elementAttributes>
<entry>
<string>Label</string>
<string>FR</string>
@@ -138,261 +140,37 @@
</entry>
<entry>
<string>NetName</string>
- <string>IR_IE</string>
- </entry>
- </elementAttributes>
- <pos x="-20" y="-20"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR_IE</string>
+ <string>PC_IE</string>
</entry>
</elementAttributes>
<pos x="-40" y="-200"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
- <elementAttributes>
- <entry>
- <string>Input Splitting</string>
- <string>16</string>
- </entry>
- <entry>
- <string>Output Splitting</string>
- <string>3,3,3,3,4</string>
- </entry>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- </elementAttributes>
- <pos x="-100" y="20"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>OPCODE</string>
- </entry>
- </elementAttributes>
- <pos x="-140" y="-60"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR0</string>
- </entry>
- </elementAttributes>
- <pos x="-140" y="-40"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR1</string>
- </entry>
- </elementAttributes>
- <pos x="-140" y="-20"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR2</string>
- </entry>
- </elementAttributes>
- <pos x="-140" y="0"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR3</string>
- </entry>
- </elementAttributes>
- <pos x="-140" y="20"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR0</string>
- </entry>
- </elementAttributes>
- <pos x="-260" y="300"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR1</string>
- </entry>
- </elementAttributes>
- <pos x="-260" y="320"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR2</string>
- </entry>
- </elementAttributes>
- <pos x="-260" y="260"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>RW_IE</string>
- </entry>
- </elementAttributes>
- <pos x="-220" y="240"/>
- </visualElement>
- <visualElement>
- <elementName>Splitter</elementName>
- <elementAttributes>
- <entry>
- <string>Input Splitting</string>
- <string>3,1</string>
- </entry>
- <entry>
- <string>Output Splitting</string>
- <string>4</string>
- </entry>
- </elementAttributes>
- <pos x="0" y="320"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation reference="../../../../visualElement[17]/elementAttributes/entry/rotation"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR3</string>
- </entry>
- </elementAttributes>
- <pos x="-20" y="320"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>OP_PARITY</string>
- </entry>
- </elementAttributes>
- <pos x="0" y="340"/>
- </visualElement>
- <visualElement>
- <elementName>RAMAsync</elementName>
+ <elementName>EEPROM</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>MEM_RAM</string>
- </entry>
- <entry>
<string>AddrBits</string>
- <int>15</int>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- </elementAttributes>
- <pos x="640" y="-220"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>MEM_IE</string>
+ <int>8</int>
</entry>
- </elementAttributes>
- <pos x="640" y="-180"/>
- </visualElement>
- <visualElement>
- <elementName>EEPROM</elementName>
- <elementAttributes>
<entry>
<string>Label</string>
<string>UCODE</string>
</entry>
<entry>
- <string>AddrBits</string>
- <int>8</int>
- </entry>
- <entry>
<string>Bits</string>
<int>16</int>
</entry>
<entry>
- <string>isProgramMemory</string>
- <boolean>true</boolean>
+ <string>Data</string>
+ <data>c,221,3040,8000,4*0,c,221,3040,8000,4*0,c,221,3040,8000,4*0,c
+,221,3040,8000,4*0,c,221,88,60,8000,0,0,0,c,221,88,60,8000,0,0,0
+,c,221,88,110,8000,0,0,0,c,221,88,110,8000,0,0,0,c,221,440,8000
+,4*0,c,221,440,8000,4*0,c,221,82,8000,4*0,c,221,82,8000,4*0,c
+,221,8000,5*0,c,221,102,8000,4*0,c,221,8000,5*0,c,221,8000,5*0
+,c,221,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c
+,221,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c,221
+,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c,221,8000,5*0,c,221,8000
+,5*0,c,221,8000,5*0,c,221,4000,5*0,c,221,4000</data>
</entry>
</elementAttributes>
<pos x="620" y="280"/>
@@ -422,7 +200,7 @@
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation reference="../../../../visualElement[13]/elementAttributes/entry/rotation"/>
+ <rotation rotation="2"/>
</entry>
<entry>
<string>NetName</string>
@@ -456,14 +234,14 @@
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
+ <rotation rotation="2"/>
</entry>
<entry>
<string>NetName</string>
- <string>IR0</string>
+ <string>FLAG_EQ</string>
</entry>
</elementAttributes>
- <pos x="420" y="360"/>
+ <pos x="400" y="360"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
@@ -494,111 +272,17 @@
<pos x="580" y="360"/>
</visualElement>
<visualElement>
- <elementName>Counter</elementName>
- <elementAttributes>
- <entry>
- <string>Label</string>
- <string>Microsequencer</string>
- </entry>
- <entry>
- <string>Bits</string>
- <int>3</int>
- </entry>
- </elementAttributes>
- <pos x="520" y="100"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>US_RS</string>
- </entry>
- </elementAttributes>
- <pos x="360" y="160"/>
- </visualElement>
- <visualElement>
- <elementName>And</elementName>
- <elementAttributes/>
- <pos x="380" y="120"/>
- </visualElement>
- <visualElement>
- <elementName>VDD</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="1"/>
- </entry>
- </elementAttributes>
- <pos x="500" y="100"/>
- </visualElement>
- <visualElement>
- <elementName>Not</elementName>
- <elementAttributes/>
- <pos x="380" y="80"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR_L9</string>
- </entry>
- </elementAttributes>
- <pos x="-480" y="20"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>IR_L12</string>
- </entry>
- </elementAttributes>
- <pos x="-480" y="-20"/>
- </visualElement>
- <visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>16</string>
- </entry>
- <entry>
- <string>Output Splitting</string>
- <string>12,</string>
- </entry>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>mirror</string>
+ <boolean>true</boolean>
</entry>
- </elementAttributes>
- <pos x="-260" y="-20"/>
- </visualElement>
- <visualElement>
- <elementName>Splitter</elementName>
- <elementAttributes>
<entry>
<string>Input Splitting</string>
<string>16</string>
</entry>
<entry>
- <string>mirror</string>
- <boolean>true</boolean>
- </entry>
- <entry>
<string>Output Splitting</string>
<string>1*16</string>
</entry>
@@ -609,6 +293,10 @@
<elementName>CounterPreset</elementName>
<elementAttributes>
<entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
<string>Label</string>
<string>PC</string>
</entry>
@@ -638,7 +326,7 @@
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation reference="../../../../visualElement[46]/elementAttributes/entry/rotation"/>
+ <rotation reference="../../../../visualElement[19]/elementAttributes/entry/rotation"/>
</entry>
</elementAttributes>
<pos x="0" y="-180"/>
@@ -665,7 +353,7 @@
<string>PC_CO</string>
</entry>
</elementAttributes>
- <pos x="720" y="320"/>
+ <pos x="740" y="320"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -675,7 +363,7 @@
<string>PC_IE</string>
</entry>
</elementAttributes>
- <pos x="720" y="300"/>
+ <pos x="740" y="300"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -685,7 +373,7 @@
<string>PC_OE</string>
</entry>
</elementAttributes>
- <pos x="720" y="280"/>
+ <pos x="740" y="280"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -695,7 +383,7 @@
<string>MAR_IE</string>
</entry>
</elementAttributes>
- <pos x="720" y="260"/>
+ <pos x="740" y="260"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -705,7 +393,7 @@
<string>MEM_IE</string>
</entry>
</elementAttributes>
- <pos x="720" y="240"/>
+ <pos x="740" y="240"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -715,547 +403,569 @@
<string>MEM_OE</string>
</entry>
</elementAttributes>
- <pos x="720" y="220"/>
+ <pos x="740" y="220"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>RW_IE</string>
+ <string>R1_OE</string>
</entry>
</elementAttributes>
- <pos x="720" y="200"/>
+ <pos x="740" y="180"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
+ <string>NetName</string>
+ <string>R2_OE</string>
</entry>
</elementAttributes>
- <pos x="20" y="160"/>
+ <pos x="740" y="160"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- <entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>IR_IE</string>
</entry>
</elementAttributes>
- <pos x="40" y="200"/>
+ <pos x="740" y="140"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>R2_OE</string>
+ <string>JA_OE</string>
</entry>
</elementAttributes>
- <pos x="40" y="220"/>
+ <pos x="740" y="120"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>NetName</string>
+ <string>ALU_OE</string>
</entry>
</elementAttributes>
- <pos x="160" y="280"/>
+ <pos x="740" y="80"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="1"/>
- </entry>
- <entry>
<string>NetName</string>
- <string>ALU_OE</string>
+ <string>US_RS</string>
</entry>
</elementAttributes>
- <pos x="160" y="260"/>
+ <pos x="740" y="20"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>R1_OE</string>
+ <string>FR_IE</string>
</entry>
</elementAttributes>
- <pos x="720" y="180"/>
+ <pos x="740" y="60"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Clock</elementName>
<elementAttributes>
<entry>
- <string>NetName</string>
- <string>R2_OE</string>
+ <string>small</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>runRealTime</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Frequency</string>
+ <int>10</int>
</entry>
</elementAttributes>
- <pos x="720" y="160"/>
+ <pos x="-320" y="-360"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>IR_IE</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="720" y="140"/>
+ <pos x="-300" y="-360"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>R1_OE</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="40" y="180"/>
+ <pos x="400" y="-220"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>IR9_OE</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="720" y="120"/>
+ <pos x="0" y="-260"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>IR12_OE</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="720" y="100"/>
+ <pos x="280" y="300"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Probe</elementName>
<elementAttributes>
<entry>
- <string>NetName</string>
- <string>ALU_OE</string>
+ <string>Label</string>
+ <string>Bus</string>
</entry>
</elementAttributes>
- <pos x="720" y="80"/>
+ <pos x="200" y="-280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>atk16_mem.dig</elementName>
+ <elementAttributes/>
+ <pos x="580" y="-220"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>HALT</string>
+ <string>MEM_IE</string>
</entry>
</elementAttributes>
- <pos x="720" y="40"/>
+ <pos x="580" y="-180"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>US_RS</string>
+ <string>MEM_OE</string>
</entry>
</elementAttributes>
- <pos x="720" y="20"/>
+ <pos x="580" y="-160"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Break</elementName>
+ <elementAttributes/>
+ <pos x="-300" y="-400"/>
+ </visualElement>
+ <visualElement>
+ <elementName>atk16_decoder.dig</elementName>
<elementAttributes>
<entry>
- <string>NetName</string>
- <string>FR_IE</string>
+ <string>shapeType</string>
+ <shapeType>SIMPLE</shapeType>
</entry>
</elementAttributes>
- <pos x="720" y="60"/>
+ <pos x="0" y="-80"/>
</visualElement>
<visualElement>
- <elementName>BitSelector</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Selector Bits</string>
- <int>4</int>
+ <string>NetName</string>
+ <string>OPCODE</string>
</entry>
+ </elementAttributes>
+ <pos x="80" y="60"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>JA_OE</string>
</entry>
</elementAttributes>
- <pos x="120" y="-40"/>
+ <pos x="-20" y="-20"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
+ <rotation rotation="2"/>
</entry>
<entry>
<string>NetName</string>
- <string>OP_PARITY</string>
+ <string>IR_IE</string>
</entry>
</elementAttributes>
- <pos x="120" y="20"/>
+ <pos x="-20" y="-60"/>
</visualElement>
<visualElement>
- <elementName>Const</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="2"/>
</entry>
<entry>
- <string>Value</string>
- <long>15</long>
+ <string>NetName</string>
+ <string>CLK</string>
</entry>
+ </elementAttributes>
+ <pos x="0" y="-40"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
<entry>
- <string>Bits</string>
- <int>4</int>
+ <string>NetName</string>
+ <string>RW_IE</string>
</entry>
</elementAttributes>
- <pos x="140" y="-20"/>
+ <pos x="740" y="200"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="2"/>
</entry>
<entry>
- <string>Input Splitting</string>
- <string>16</string>
- </entry>
- <entry>
- <string>Output Splitting</string>
- <string>9,</string>
+ <string>NetName</string>
+ <string>RW_IE</string>
</entry>
</elementAttributes>
- <pos x="-280" y="20"/>
+ <pos x="280" y="-60"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>9,7</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>16</string>
+ <string>NetName</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="-460" y="60"/>
+ <pos x="260" y="-20"/>
</visualElement>
<visualElement>
- <elementName>Ground</elementName>
- <elementAttributes>
- <entry>
- <string>Bits</string>
- <int>7</int>
- </entry>
- </elementAttributes>
- <pos x="-460" y="100"/>
+ <elementName>atk16_regbank.dig</elementName>
+ <elementAttributes/>
+ <pos x="280" y="-80"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>atk16_alu.dig</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>12,4</string>
+ <string>shapeType</string>
+ <shapeType>SIMPLE</shapeType>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>16</string>
+ <string>Label</string>
+ <string>ALU</string>
</entry>
</elementAttributes>
- <pos x="-340" y="60"/>
+ <pos x="480" y="20"/>
</visualElement>
<visualElement>
- <elementName>Ground</elementName>
+ <elementName>Driver</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
- <int>4</int>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
</entry>
</elementAttributes>
- <pos x="-340" y="100"/>
+ <pos x="460" y="-100"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="3"/>
- </entry>
- <entry>
<string>Bits</string>
<int>16</int>
</entry>
+ <entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
+ </entry>
</elementAttributes>
- <pos x="-300" y="100"/>
+ <pos x="480" y="-60"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>IR12_OE</string>
+ <string>R2_OE</string>
</entry>
</elementAttributes>
- <pos x="-280" y="100"/>
+ <pos x="500" y="-40"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="3"/>
- </entry>
- <entry>
<string>Bits</string>
<int>16</int>
</entry>
- <entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
- </entry>
</elementAttributes>
- <pos x="-400" y="140"/>
+ <pos x="600" y="20"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
+ <rotation rotation="1"/>
</entry>
<entry>
<string>NetName</string>
- <string>IR9_OE</string>
+ <string>ALU_OE</string>
</entry>
</elementAttributes>
- <pos x="-420" y="140"/>
+ <pos x="600" y="0"/>
</visualElement>
<visualElement>
- <elementName>EEPROM</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>MEM_ROM</string>
- </entry>
- <entry>
- <string>AddrBits</string>
- <int>15</int>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- <entry>
- <string>inverterConfig</string>
- <inverterConfig>
- <string>CS</string>
- </inverterConfig>
+ <string>NetName</string>
+ <string>R1_OE</string>
</entry>
</elementAttributes>
- <pos x="640" y="-400"/>
+ <pos x="480" y="-80"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Probe</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>16</string>
- </entry>
- <entry>
- <string>Output Splitting</string>
- <string>15,1</string>
+ <string>Label</string>
+ <string>ALU</string>
</entry>
</elementAttributes>
- <pos x="480" y="-320"/>
+ <pos x="680" y="-40"/>
</visualElement>
<visualElement>
- <elementName>Demultiplexer</elementName>
+ <elementName>Counter</elementName>
<elementAttributes>
<entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>Microsequencer</string>
+ </entry>
+ <entry>
<string>Bits</string>
- <int>15</int>
+ <int>3</int>
</entry>
</elementAttributes>
- <pos x="520" y="-340"/>
+ <pos x="60" y="240"/>
</visualElement>
<visualElement>
- <elementName>Ground</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="1"/>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>US_RS</string>
</entry>
</elementAttributes>
- <pos x="620" y="-340"/>
+ <pos x="-80" y="280"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>VDD</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
+ <rotation rotation="1"/>
</entry>
</elementAttributes>
- <pos x="760" y="-160"/>
+ <pos x="40" y="240"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Not</elementName>
+ <elementAttributes/>
+ <pos x="0" y="260"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>MEM_OE</string>
+ <string>CLK</string>
</entry>
</elementAttributes>
- <pos x="800" y="-160"/>
+ <pos x="-40" y="260"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Reset</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>invertOutput</string>
+ <boolean>false</boolean>
</entry>
</elementAttributes>
- <pos x="740" y="-200"/>
+ <pos x="-60" y="320"/>
</visualElement>
<visualElement>
- <elementName>Clock</elementName>
- <elementAttributes>
- <entry>
- <string>small</string>
- <boolean>true</boolean>
- </entry>
- </elementAttributes>
- <pos x="-320" y="-360"/>
+ <elementName>Or</elementName>
+ <elementAttributes/>
+ <pos x="-20" y="280"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>NetName</string>
- <string>CLK</string>
+ <string>FLAG_EQ</string>
</entry>
</elementAttributes>
- <pos x="-300" y="-360"/>
+ <pos x="100" y="-100"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Stop</elementName>
+ <elementAttributes/>
+ <pos x="820" y="40"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Probe</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="2"/>
</entry>
<entry>
- <string>NetName</string>
- <string>CLK</string>
+ <string>Label</string>
+ <string>OPCODE</string>
+ </entry>
+ <entry>
+ <string>intFormat</string>
+ <intFormat>bin</intFormat>
</entry>
</elementAttributes>
- <pos x="0" y="-60"/>
+ <pos x="60" y="60"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Testcase</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>Sum program TODO</string>
</entry>
<entry>
- <string>NetName</string>
- <string>CLK</string>
+ <string>Testdata</string>
+ <testData>
+ <dataString>IN OUT
+
+program(0x4051, 0x40a2, 0x029b)
+
+0 x</dataString>
+ </testData>
</entry>
</elementAttributes>
- <pos x="400" y="-220"/>
+ <pos x="-340" y="-240"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Out</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>OUT</string>
</entry>
<entry>
- <string>NetName</string>
- <string>CLK</string>
+ <string>Description</string>
+ <string>Dummy output</string>
</entry>
</elementAttributes>
- <pos x="0" y="-260"/>
+ <pos x="960" y="-140"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Ground</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>CLK</string>
+ <rotation rotation="1"/>
</entry>
</elementAttributes>
- <pos x="280" y="300"/>
+ <pos x="940" y="-140"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>In</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>CLK</string>
+ <string>Label</string>
+ <string>IN</string>
</entry>
</elementAttributes>
- <pos x="-220" y="280"/>
+ <pos x="960" y="-200"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Ground</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>CLK</string>
+ <rotation reference="../../../../visualElement[74]/elementAttributes/entry/rotation"/>
</entry>
</elementAttributes>
- <pos x="360" y="80"/>
+ <pos x="980" y="-200"/>
</visualElement>
</visualElements>
<wires>
@@ -1264,136 +974,148 @@
<p2 x="300" y="320"/>
</wire>
<wire>
- <p1 x="-260" y="320"/>
- <p2 x="-200" y="320"/>
+ <p1 x="680" y="320"/>
+ <p2 x="700" y="320"/>
</wire>
<wire>
- <p1 x="20" y="320"/>
- <p2 x="40" y="320"/>
+ <p1 x="720" y="320"/>
+ <p2 x="740" y="320"/>
</wire>
<wire>
- <p1 x="-20" y="320"/>
- <p2 x="0" y="320"/>
+ <p1 x="-60" y="320"/>
+ <p2 x="-20" y="320"/>
</wire>
<wire>
- <p1 x="680" y="320"/>
- <p2 x="700" y="320"/>
+ <p1 x="60" y="0"/>
+ <p2 x="80" y="0"/>
</wire>
<wire>
- <p1 x="-140" y="0"/>
- <p2 x="-120" y="0"/>
+ <p1 x="160" y="0"/>
+ <p2 x="280" y="0"/>
</wire>
<wire>
<p1 x="0" y="-260"/>
<p2 x="20" y="-260"/>
</wire>
<wire>
- <p1 x="600" y="-260"/>
- <p2 x="740" y="-260"/>
+ <p1 x="720" y="260"/>
+ <p2 x="740" y="260"/>
+ </wire>
+ <wire>
+ <p1 x="40" y="260"/>
+ <p2 x="60" y="260"/>
</wire>
<wire>
- <p1 x="-260" y="260"/>
- <p2 x="-200" y="260"/>
+ <p1 x="-40" y="260"/>
+ <p2 x="0" y="260"/>
</wire>
<wire>
<p1 x="380" y="-200"/>
<p2 x="400" y="-200"/>
</wire>
<wire>
+ <p1 x="-40" y="-200"/>
+ <p2 x="20" y="-200"/>
+ </wire>
+ <wire>
<p1 x="480" y="-200"/>
- <p2 x="640" y="-200"/>
+ <p2 x="580" y="-200"/>
</wire>
<wire>
- <p1 x="-40" y="-200"/>
- <p2 x="20" y="-200"/>
+ <p1 x="960" y="-200"/>
+ <p2 x="980" y="-200"/>
</wire>
<wire>
- <p1 x="700" y="-200"/>
- <p2 x="720" y="-200"/>
+ <p1 x="720" y="200"/>
+ <p2 x="740" y="200"/>
</wire>
<wire>
- <p1 x="-20" y="200"/>
- <p2 x="20" y="200"/>
+ <p1 x="280" y="200"/>
+ <p2 x="580" y="200"/>
</wire>
<wire>
- <p1 x="60" y="200"/>
- <p2 x="200" y="200"/>
+ <p1 x="940" y="-140"/>
+ <p2 x="960" y="-140"/>
</wire>
<wire>
- <p1 x="-60" y="-140"/>
- <p2 x="-20" y="-140"/>
+ <p1 x="-20" y="-140"/>
+ <p2 x="200" y="-140"/>
</wire>
<wire>
<p1 x="480" y="-140"/>
- <p2 x="760" y="-140"/>
+ <p2 x="520" y="-140"/>
</wire>
<wire>
<p1 x="200" y="-140"/>
<p2 x="480" y="-140"/>
</wire>
<wire>
- <p1 x="-20" y="-140"/>
- <p2 x="200" y="-140"/>
+ <p1 x="720" y="140"/>
+ <p2 x="740" y="140"/>
+ </wire>
+ <wire>
+ <p1 x="-20" y="-80"/>
+ <p2 x="0" y="-80"/>
</wire>
<wire>
- <p1 x="440" y="140"/>
- <p2 x="520" y="140"/>
+ <p1 x="200" y="-80"/>
+ <p2 x="280" y="-80"/>
</wire>
<wire>
- <p1 x="-60" y="-80"/>
- <p2 x="0" y="-80"/>
+ <p1 x="60" y="-80"/>
+ <p2 x="180" y="-80"/>
</wire>
<wire>
- <p1 x="580" y="-400"/>
- <p2 x="640" y="-400"/>
+ <p1 x="460" y="-80"/>
+ <p2 x="480" y="-80"/>
</wire>
<wire>
- <p1 x="420" y="80"/>
- <p2 x="440" y="80"/>
+ <p1 x="340" y="-80"/>
+ <p2 x="400" y="-80"/>
</wire>
<wire>
- <p1 x="360" y="80"/>
- <p2 x="380" y="80"/>
+ <p1 x="720" y="80"/>
+ <p2 x="740" y="80"/>
</wire>
<wire>
- <p1 x="-140" y="-20"/>
- <p2 x="-120" y="-20"/>
+ <p1 x="-20" y="-20"/>
+ <p2 x="0" y="-20"/>
</wire>
<wire>
- <p1 x="-480" y="-20"/>
- <p2 x="-340" y="-20"/>
+ <p1 x="260" y="-20"/>
+ <p2 x="280" y="-20"/>
</wire>
<wire>
- <p1 x="-340" y="-20"/>
- <p2 x="-280" y="-20"/>
+ <p1 x="60" y="-20"/>
+ <p2 x="120" y="-20"/>
</wire>
<wire>
- <p1 x="560" y="-340"/>
- <p2 x="580" y="-340"/>
+ <p1 x="600" y="340"/>
+ <p2 x="620" y="340"/>
</wire>
<wire>
- <p1 x="620" y="-340"/>
- <p2 x="640" y="-340"/>
+ <p1 x="720" y="20"/>
+ <p2 x="740" y="20"/>
</wire>
<wire>
- <p1 x="-140" y="20"/>
- <p2 x="-120" y="20"/>
+ <p1 x="140" y="20"/>
+ <p2 x="280" y="20"/>
</wire>
<wire>
- <p1 x="-480" y="20"/>
- <p2 x="-460" y="20"/>
+ <p1 x="620" y="20"/>
+ <p2 x="640" y="20"/>
</wire>
<wire>
- <p1 x="-280" y="20"/>
- <p2 x="-260" y="20"/>
+ <p1 x="440" y="20"/>
+ <p2 x="480" y="20"/>
</wire>
<wire>
- <p1 x="-460" y="20"/>
- <p2 x="-300" y="20"/>
+ <p1 x="540" y="20"/>
+ <p2 x="560" y="20"/>
</wire>
<wire>
- <p1 x="600" y="340"/>
- <p2 x="620" y="340"/>
+ <p1 x="560" y="20"/>
+ <p2 x="580" y="20"/>
</wire>
<wire>
<p1 x="80" y="-280"/>
@@ -1404,35 +1126,27 @@
<p2 x="20" y="-280"/>
</wire>
<wire>
- <p1 x="540" y="-280"/>
- <p2 x="600" y="-280"/>
- </wire>
- <wire>
- <p1 x="620" y="-280"/>
- <p2 x="800" y="-280"/>
- </wire>
- <wire>
- <p1 x="180" y="280"/>
- <p2 x="200" y="280"/>
+ <p1 x="560" y="280"/>
+ <p2 x="620" y="280"/>
</wire>
<wire>
- <p1 x="0" y="280"/>
- <p2 x="40" y="280"/>
+ <p1 x="720" y="280"/>
+ <p2 x="740" y="280"/>
</wire>
<wire>
- <p1 x="-220" y="280"/>
- <p2 x="-200" y="280"/>
+ <p1 x="40" y="280"/>
+ <p2 x="60" y="280"/>
</wire>
<wire>
- <p1 x="560" y="280"/>
- <p2 x="620" y="280"/>
+ <p1 x="-80" y="280"/>
+ <p2 x="-20" y="280"/>
</wire>
<wire>
- <p1 x="100" y="280"/>
- <p2 x="140" y="280"/>
+ <p1 x="500" y="280"/>
+ <p2 x="540" y="280"/>
</wire>
<wire>
- <p1 x="220" y="280"/>
+ <p1 x="280" y="280"/>
<p2 x="300" y="280"/>
</wire>
<wire>
@@ -1441,109 +1155,85 @@
</wire>
<wire>
<p1 x="460" y="-220"/>
- <p2 x="480" y="-220"/>
- </wire>
- <wire>
- <p1 x="580" y="-220"/>
- <p2 x="640" y="-220"/>
- </wire>
- <wire>
- <p1 x="-120" y="220"/>
- <p2 x="-40" y="220"/>
- </wire>
- <wire>
- <p1 x="-260" y="220"/>
- <p2 x="-200" y="220"/>
- </wire>
- <wire>
- <p1 x="540" y="220"/>
- <p2 x="600" y="220"/>
+ <p2 x="580" y="-220"/>
</wire>
<wire>
- <p1 x="-40" y="220"/>
- <p2 x="0" y="220"/>
+ <p1 x="720" y="220"/>
+ <p2 x="740" y="220"/>
</wire>
<wire>
- <p1 x="780" y="-160"/>
- <p2 x="800" y="-160"/>
+ <p1 x="720" y="160"/>
+ <p2 x="740" y="160"/>
</wire>
<wire>
- <p1 x="360" y="160"/>
- <p2 x="380" y="160"/>
+ <p1 x="480" y="-100"/>
+ <p2 x="520" y="-100"/>
</wire>
<wire>
- <p1 x="40" y="160"/>
- <p2 x="200" y="160"/>
+ <p1 x="400" y="-100"/>
+ <p2 x="440" y="-100"/>
</wire>
<wire>
- <p1 x="-400" y="160"/>
- <p2 x="-300" y="160"/>
+ <p1 x="80" y="-100"/>
+ <p2 x="100" y="-100"/>
</wire>
<wire>
- <p1 x="-300" y="160"/>
- <p2 x="-260" y="160"/>
+ <p1 x="520" y="-100"/>
+ <p2 x="640" y="-100"/>
</wire>
<wire>
- <p1 x="-40" y="160"/>
- <p2 x="0" y="160"/>
+ <p1 x="-320" y="-360"/>
+ <p2 x="-300" y="-360"/>
</wire>
<wire>
- <p1 x="-260" y="160"/>
- <p2 x="-40" y="160"/>
+ <p1 x="180" y="-40"/>
+ <p2 x="280" y="-40"/>
</wire>
<wire>
- <p1 x="500" y="100"/>
- <p2 x="520" y="100"/>
+ <p1 x="60" y="-40"/>
+ <p2 x="140" y="-40"/>
</wire>
<wire>
- <p1 x="360" y="100"/>
- <p2 x="440" y="100"/>
+ <p1 x="560" y="-40"/>
+ <p2 x="680" y="-40"/>
</wire>
<wire>
- <p1 x="580" y="100"/>
- <p2 x="600" y="100"/>
+ <p1 x="400" y="-40"/>
+ <p2 x="440" y="-40"/>
</wire>
<wire>
- <p1 x="-140" y="-40"/>
- <p2 x="-120" y="-40"/>
+ <p1 x="480" y="-40"/>
+ <p2 x="500" y="-40"/>
</wire>
<wire>
- <p1 x="-20" y="-40"/>
- <p2 x="0" y="-40"/>
+ <p1 x="580" y="360"/>
+ <p2 x="620" y="360"/>
</wire>
<wire>
- <p1 x="700" y="-360"/>
- <p2 x="760" y="-360"/>
+ <p1 x="400" y="360"/>
+ <p2 x="420" y="360"/>
</wire>
<wire>
- <p1 x="-320" y="-360"/>
- <p2 x="-300" y="-360"/>
+ <p1 x="420" y="40"/>
+ <p2 x="480" y="40"/>
</wire>
<wire>
- <p1 x="580" y="360"/>
- <p2 x="620" y="360"/>
+ <p1 x="120" y="40"/>
+ <p2 x="180" y="40"/>
</wire>
<wire>
- <p1 x="500" y="-300"/>
- <p2 x="540" y="-300"/>
+ <p1 x="540" y="40"/>
+ <p2 x="580" y="40"/>
</wire>
<wire>
- <p1 x="560" y="-300"/>
- <p2 x="580" y="-300"/>
+ <p1 x="720" y="40"/>
+ <p2 x="820" y="40"/>
</wire>
<wire>
<p1 x="280" y="300"/>
<p2 x="300" y="300"/>
</wire>
<wire>
- <p1 x="-20" y="300"/>
- <p2 x="40" y="300"/>
- </wire>
- <wire>
- <p1 x="-260" y="300"/>
- <p2 x="-200" y="300"/>
- </wire>
- <wire>
<p1 x="600" y="300"/>
<p2 x="620" y="300"/>
</wire>
@@ -1556,268 +1246,200 @@
<p2 x="540" y="300"/>
</wire>
<wire>
- <p1 x="100" y="300"/>
- <p2 x="220" y="300"/>
+ <p1 x="720" y="300"/>
+ <p2 x="740" y="300"/>
</wire>
<wire>
<p1 x="100" y="-240"/>
<p2 x="120" y="-240"/>
</wire>
<wire>
- <p1 x="160" y="-240"/>
- <p2 x="200" y="-240"/>
- </wire>
- <wire>
<p1 x="-40" y="-240"/>
<p2 x="20" y="-240"/>
</wire>
<wire>
+ <p1 x="160" y="-240"/>
+ <p2 x="200" y="-240"/>
+ </wire>
+ <wire>
<p1 x="200" y="-240"/>
<p2 x="400" y="-240"/>
</wire>
<wire>
- <p1 x="-120" y="240"/>
- <p2 x="-20" y="240"/>
+ <p1 x="720" y="240"/>
+ <p2 x="740" y="240"/>
</wire>
<wire>
- <p1 x="-220" y="240"/>
- <p2 x="-200" y="240"/>
+ <p1 x="40" y="240"/>
+ <p2 x="60" y="240"/>
</wire>
<wire>
- <p1 x="0" y="-180"/>
- <p2 x="20" y="-180"/>
+ <p1 x="120" y="240"/>
+ <p2 x="500" y="240"/>
</wire>
<wire>
- <p1 x="20" y="180"/>
- <p2 x="40" y="180"/>
+ <p1 x="0" y="-180"/>
+ <p2 x="20" y="-180"/>
</wire>
<wire>
- <p1 x="360" y="120"/>
- <p2 x="380" y="120"/>
+ <p1 x="720" y="180"/>
+ <p2 x="740" y="180"/>
</wire>
<wire>
- <p1 x="440" y="120"/>
- <p2 x="520" y="120"/>
+ <p1 x="720" y="120"/>
+ <p2 x="740" y="120"/>
</wire>
<wire>
- <p1 x="-140" y="-60"/>
- <p2 x="-120" y="-60"/>
+ <p1 x="-20" y="-60"/>
+ <p2 x="0" y="-60"/>
</wire>
<wire>
<p1 x="60" y="-60"/>
<p2 x="80" y="-60"/>
</wire>
<wire>
- <p1 x="80" y="-60"/>
- <p2 x="120" y="-60"/>
+ <p1 x="340" y="-60"/>
+ <p2 x="420" y="-60"/>
+ </wire>
+ <wire>
+ <p1 x="500" y="-60"/>
+ <p2 x="640" y="-60"/>
</wire>
<wire>
- <p1 x="600" y="-380"/>
- <p2 x="620" y="-380"/>
+ <p1 x="420" y="-60"/>
+ <p2 x="460" y="-60"/>
</wire>
<wire>
- <p1 x="-260" y="60"/>
- <p2 x="-100" y="60"/>
+ <p1 x="80" y="-60"/>
+ <p2 x="160" y="-60"/>
</wire>
<wire>
- <p1 x="-320" y="60"/>
- <p2 x="-300" y="60"/>
+ <p1 x="720" y="60"/>
+ <p2 x="740" y="60"/>
</wire>
<wire>
- <p1 x="-440" y="60"/>
- <p2 x="-400" y="60"/>
+ <p1 x="180" y="60"/>
+ <p2 x="480" y="60"/>
</wire>
<wire>
- <p1 x="-100" y="60"/>
+ <p1 x="60" y="60"/>
<p2 x="80" y="60"/>
</wire>
<wire>
- <p1 x="500" y="-320"/>
- <p2 x="520" y="-320"/>
+ <p1 x="480" y="-200"/>
+ <p2 x="480" y="-140"/>
+ </wire>
+ <wire>
+ <p1 x="160" y="-60"/>
+ <p2 x="160" y="0"/>
</wire>
<wire>
- <p1 x="620" y="-320"/>
- <p2 x="640" y="-320"/>
+ <p1 x="640" y="-100"/>
+ <p2 x="640" y="-60"/>
</wire>
<wire>
- <p1 x="0" y="220"/>
- <p2 x="0" y="280"/>
+ <p1 x="640" y="-60"/>
+ <p2 x="640" y="20"/>
</wire>
<wire>
- <p1 x="-260" y="-20"/>
- <p2 x="-260" y="20"/>
+ <p1 x="420" y="320"/>
+ <p2 x="420" y="340"/>
</wire>
<wire>
- <p1 x="-260" y="160"/>
- <p2 x="-260" y="220"/>
+ <p1 x="420" y="-60"/>
+ <p2 x="420" y="40"/>
</wire>
<wire>
- <p1 x="-260" y="20"/>
- <p2 x="-260" y="60"/>
+ <p1 x="100" y="-280"/>
+ <p2 x="100" y="-240"/>
</wire>
<wire>
- <p1 x="580" y="-400"/>
- <p2 x="580" y="-340"/>
+ <p1 x="580" y="40"/>
+ <p2 x="580" y="200"/>
</wire>
<wire>
- <p1 x="580" y="-300"/>
- <p2 x="580" y="-220"/>
+ <p1 x="200" y="-280"/>
+ <p2 x="200" y="-240"/>
</wire>
<wire>
<p1 x="200" y="-240"/>
<p2 x="200" y="-140"/>
</wire>
<wire>
- <p1 x="200" y="200"/>
- <p2 x="200" y="280"/>
- </wire>
- <wire>
<p1 x="200" y="-140"/>
- <p2 x="200" y="160"/>
+ <p2 x="200" y="-80"/>
</wire>
<wire>
- <p1 x="200" y="160"/>
- <p2 x="200" y="200"/>
+ <p1 x="40" y="280"/>
+ <p2 x="40" y="300"/>
</wire>
<wire>
- <p1 x="-460" y="80"/>
- <p2 x="-460" y="100"/>
+ <p1 x="520" y="-140"/>
+ <p2 x="520" y="-100"/>
</wire>
<wire>
- <p1 x="-460" y="20"/>
- <p2 x="-460" y="60"/>
+ <p1 x="-300" y="-400"/>
+ <p2 x="-300" y="-360"/>
</wire>
<wire>
- <p1 x="-400" y="60"/>
- <p2 x="-400" y="120"/>
+ <p1 x="140" y="-40"/>
+ <p2 x="140" y="20"/>
</wire>
<wire>
- <p1 x="80" y="-60"/>
+ <p1 x="80" y="0"/>
<p2 x="80" y="60"/>
</wire>
<wire>
- <p1 x="-20" y="200"/>
- <p2 x="-20" y="240"/>
+ <p1 x="80" y="-100"/>
+ <p2 x="80" y="-60"/>
</wire>
<wire>
- <p1 x="-20" y="-220"/>
- <p2 x="-20" y="-140"/>
+ <p1 x="400" y="-100"/>
+ <p2 x="400" y="-80"/>
</wire>
<wire>
- <p1 x="-20" y="-40"/>
- <p2 x="-20" y="-20"/>
+ <p1 x="400" y="-80"/>
+ <p2 x="400" y="-40"/>
</wire>
<wire>
- <p1 x="-20" y="240"/>
- <p2 x="-20" y="300"/>
+ <p1 x="560" y="-40"/>
+ <p2 x="560" y="20"/>
</wire>
<wire>
- <p1 x="-340" y="80"/>
- <p2 x="-340" y="100"/>
+ <p1 x="-20" y="-220"/>
+ <p2 x="-20" y="-140"/>
</wire>
<wire>
- <p1 x="-340" y="-20"/>
- <p2 x="-340" y="60"/>
+ <p1 x="-20" y="-140"/>
+ <p2 x="-20" y="-80"/>
</wire>
<wire>
- <p1 x="600" y="100"/>
- <p2 x="600" y="220"/>
+ <p1 x="180" y="-80"/>
+ <p2 x="180" y="-40"/>
</wire>
<wire>
- <p1 x="600" y="-380"/>
- <p2 x="600" y="-280"/>
+ <p1 x="180" y="40"/>
+ <p2 x="180" y="60"/>
</wire>
<wire>
- <p1 x="600" y="-280"/>
- <p2 x="600" y="-260"/>
+ <p1 x="500" y="240"/>
+ <p2 x="500" y="280"/>
</wire>
<wire>
<p1 x="280" y="320"/>
<p2 x="280" y="340"/>
</wire>
<wire>
- <p1 x="540" y="220"/>
- <p2 x="540" y="280"/>
- </wire>
- <wire>
- <p1 x="540" y="-300"/>
- <p2 x="540" y="-280"/>
- </wire>
- <wire>
- <p1 x="220" y="280"/>
- <p2 x="220" y="300"/>
- </wire>
- <wire>
- <p1 x="480" y="-200"/>
- <p2 x="480" y="-140"/>
- </wire>
- <wire>
- <p1 x="480" y="-320"/>
- <p2 x="480" y="-220"/>
- </wire>
- <wire>
- <p1 x="800" y="-280"/>
- <p2 x="800" y="-160"/>
- </wire>
- <wire>
- <p1 x="-100" y="20"/>
- <p2 x="-100" y="60"/>
- </wire>
- <wire>
- <p1 x="420" y="320"/>
- <p2 x="420" y="340"/>
- </wire>
- <wire>
- <p1 x="100" y="-280"/>
- <p2 x="100" y="-240"/>
- </wire>
- <wire>
- <p1 x="740" y="-260"/>
- <p2 x="740" y="-220"/>
- </wire>
- <wire>
- <p1 x="-40" y="160"/>
- <p2 x="-40" y="220"/>
- </wire>
- <wire>
- <p1 x="360" y="100"/>
- <p2 x="360" y="120"/>
- </wire>
- <wire>
- <p1 x="-300" y="60"/>
- <p2 x="-300" y="80"/>
- </wire>
- <wire>
- <p1 x="-300" y="120"/>
- <p2 x="-300" y="160"/>
- </wire>
- <wire>
- <p1 x="620" y="-320"/>
- <p2 x="620" y="-280"/>
- </wire>
- <wire>
- <p1 x="120" y="0"/>
- <p2 x="120" y="20"/>
- </wire>
- <wire>
- <p1 x="120" y="-60"/>
- <p2 x="120" y="-40"/>
- </wire>
- <wire>
- <p1 x="440" y="80"/>
- <p2 x="440" y="100"/>
- </wire>
- <wire>
- <p1 x="440" y="100"/>
- <p2 x="440" y="120"/>
+ <p1 x="280" y="200"/>
+ <p2 x="280" y="280"/>
</wire>
<wire>
- <p1 x="760" y="-360"/>
- <p2 x="760" y="-180"/>
+ <p1 x="440" y="-40"/>
+ <p2 x="440" y="20"/>
</wire>
<wire>
- <p1 x="-60" y="-140"/>
- <p2 x="-60" y="-80"/>
+ <p1 x="120" y="-20"/>
+ <p2 x="120" y="40"/>
</wire>
<wire>
<p1 x="380" y="-200"/>
diff --git a/digital/atk16_alu.dig b/digital/atk16_alu.dig
index 09e0e1b..d456fee 100644
--- a/digital/atk16_alu.dig
+++ b/digital/atk16_alu.dig
@@ -333,21 +333,21 @@
<int>4</int>
</entry>
</elementAttributes>
- <pos x="-500" y="620"/>
+ <pos x="-500" y="600"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
- <string>3</string>
+ <string>4</string>
</entry>
<entry>
<string>Output Splitting</string>
- <string>1*3</string>
+ <string>1*4</string>
</entry>
</elementAttributes>
- <pos x="-260" y="600"/>
+ <pos x="-420" y="600"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
@@ -1122,60 +1122,64 @@
<pos x="960" y="720"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>BarrelShifter</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>1*16</string>
+ <string>Label</string>
+ <string>SRL</string>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>16</string>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>direction</string>
+ <direction>right</direction>
</entry>
</elementAttributes>
- <pos x="760" y="820"/>
+ <pos x="20" y="780"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Demultiplexer</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Selector Bits</string>
+ <int>3</int>
</entry>
<entry>
- <string>NetName</string>
- <string>Y0</string>
+ <string>Bits</string>
+ <int>16</int>
</entry>
</elementAttributes>
- <pos x="740" y="820"/>
+ <pos x="-220" y="780"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
+ <rotation rotation="3"/>
</entry>
<entry>
<string>NetName</string>
- <string>Y1</string>
+ <string>A</string>
</entry>
</elementAttributes>
- <pos x="740" y="840"/>
+ <pos x="-460" y="260"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
+ <rotation rotation="3"/>
</entry>
<entry>
<string>NetName</string>
- <string>Y2</string>
+ <string>B</string>
</entry>
</elementAttributes>
- <pos x="740" y="860"/>
+ <pos x="-460" y="420"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -1186,24 +1190,24 @@
</entry>
<entry>
<string>NetName</string>
- <string>Y3</string>
+ <string>A</string>
</entry>
</elementAttributes>
- <pos x="740" y="880"/>
+ <pos x="-220" y="860"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Input Splitting</string>
+ <string>16</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y4</string>
+ <string>Output Splitting</string>
+ <string>5,</string>
</entry>
</elementAttributes>
- <pos x="740" y="900"/>
+ <pos x="-200" y="1040"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -1214,262 +1218,315 @@
</entry>
<entry>
<string>NetName</string>
- <string>Y5</string>
+ <string>B</string>
</entry>
</elementAttributes>
- <pos x="740" y="920"/>
+ <pos x="-220" y="1040"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>BarrelShifter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>SRA</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y6</string>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>barrelShifterMode</string>
+ <barrelShifterMode>arithmetic</barrelShifterMode>
+ </entry>
+ <entry>
+ <string>direction</string>
+ <direction>right</direction>
</entry>
</elementAttributes>
- <pos x="740" y="940"/>
+ <pos x="140" y="940"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>BarrelShifter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>SLL</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y7</string>
+ <string>Bits</string>
+ <int>16</int>
</entry>
</elementAttributes>
- <pos x="740" y="960"/>
+ <pos x="40" y="1120"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Input Splitting</string>
+ <string>1*4</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y8</string>
+ <string>Output Splitting</string>
+ <string>4</string>
</entry>
</elementAttributes>
- <pos x="740" y="980"/>
+ <pos x="1220" y="400"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Out</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>FLAGS</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y9</string>
+ <string>Bits</string>
+ <int>4</int>
</entry>
</elementAttributes>
- <pos x="740" y="1000"/>
+ <pos x="1300" y="400"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>splitterSpreading</string>
+ <int>2</int>
</entry>
<entry>
- <string>NetName</string>
- <string>Y10</string>
+ <string>Input Splitting</string>
+ <string>16</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>8*2</string>
</entry>
</elementAttributes>
- <pos x="740" y="1020"/>
+ <pos x="960" y="820"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>BitSelector</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>4</int>
+ </entry>
+ </elementAttributes>
+ <pos x="1000" y="960"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Const</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="2"/>
+ <rotation rotation="1"/>
</entry>
<entry>
- <string>NetName</string>
- <string>Y11</string>
+ <string>Value</string>
+ <long>15</long>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>4</int>
</entry>
</elementAttributes>
- <pos x="740" y="1040"/>
+ <pos x="1020" y="980"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>splitterSpreading</string>
+ <int>2</int>
</entry>
<entry>
- <string>NetName</string>
- <string>Y12</string>
+ <string>Input Splitting</string>
+ <string>8</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>4*2</string>
</entry>
</elementAttributes>
- <pos x="740" y="1060"/>
+ <pos x="1040" y="820"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Testcase</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Label</string>
+ <string>Add test 1</string>
</entry>
<entry>
- <string>NetName</string>
- <string>Y13</string>
+ <string>Testdata</string>
+ <testData>
+ <dataString>A B S FLAGS Y
+0x1 0x2 3 0b0000 0x3
+0xff 0x1 3 0b0000 0x100
+0x1 0xffff 3 0b0101 0x0</dataString>
+ </testData>
</entry>
</elementAttributes>
- <pos x="740" y="1080"/>
+ <pos x="480" y="1260"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Or</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Bits</string>
+ <int>8</int>
</entry>
+ </elementAttributes>
+ <pos x="980" y="820"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Or</elementName>
+ <elementAttributes>
<entry>
- <string>NetName</string>
- <string>Y14</string>
+ <string>Bits</string>
+ <int>4</int>
</entry>
</elementAttributes>
- <pos x="740" y="1100"/>
+ <pos x="1060" y="820"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>splitterSpreading</string>
+ <int>2</int>
</entry>
<entry>
- <string>NetName</string>
- <string>Y15</string>
+ <string>Input Splitting</string>
+ <string>2</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>1*2</string>
</entry>
</elementAttributes>
- <pos x="740" y="1120"/>
+ <pos x="1200" y="820"/>
</visualElement>
<visualElement>
- <elementName>BarrelShifter</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>SRL</string>
+ <string>splitterSpreading</string>
+ <int>2</int>
</entry>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>Input Splitting</string>
+ <string>4</string>
</entry>
<entry>
- <string>direction</string>
- <direction>right</direction>
+ <string>Output Splitting</string>
+ <string>2*2</string>
</entry>
</elementAttributes>
- <pos x="20" y="780"/>
+ <pos x="1120" y="820"/>
</visualElement>
<visualElement>
- <elementName>Demultiplexer</elementName>
+ <elementName>Or</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
- <int>3</int>
+ <int>2</int>
</entry>
</elementAttributes>
- <pos x="-340" y="600"/>
+ <pos x="1140" y="820"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>NOr</elementName>
+ <elementAttributes/>
+ <pos x="1220" y="820"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Testcase</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>4</string>
+ <string>Label</string>
+ <string>Sub test 1</string>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>3,1</string>
+ <string>Testdata</string>
+ <testData>
+ <dataString>A B S FLAGS Y
+0x10 0x1 2 0b0001 0xF
+0x1 0x0 1 0b1000 0xFFFF</dataString>
+ </testData>
</entry>
</elementAttributes>
- <pos x="-440" y="620"/>
+ <pos x="660" y="1260"/>
</visualElement>
<visualElement>
- <elementName>Demultiplexer</elementName>
+ <elementName>atk16_alu_carryfix.dig</elementName>
+ <elementAttributes/>
+ <pos x="-60" y="-40"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Multiplexer</elementName>
<elementAttributes>
<entry>
- <string>Selector Bits</string>
- <int>3</int>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
</entry>
<entry>
<string>Bits</string>
<int>16</int>
</entry>
+ <entry>
+ <string>Selector Bits</string>
+ <int>2</int>
+ </entry>
</elementAttributes>
- <pos x="-220" y="780"/>
+ <pos x="340" y="800"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Ground</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
+ <rotation rotation="1"/>
</entry>
<entry>
- <string>NetName</string>
- <string>A</string>
+ <string>Bits</string>
+ <int>16</int>
</entry>
</elementAttributes>
- <pos x="-460" y="260"/>
+ <pos x="320" y="860"/>
</visualElement>
<visualElement>
- <elementName>Tunnel</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
- <string>NetName</string>
- <string>B</string>
- </entry>
- </elementAttributes>
- <pos x="-460" y="420"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="2"/>
+ <string>Input Splitting</string>
+ <string>1,1</string>
</entry>
<entry>
- <string>NetName</string>
- <string>A</string>
+ <string>Output Splitting</string>
+ <string>2</string>
</entry>
</elementAttributes>
- <pos x="-220" y="860"/>
+ <pos x="360" y="740"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
- <string>16</string>
+ <string>1*16</string>
</entry>
<entry>
<string>Output Splitting</string>
- <string>5,</string>
+ <string>16</string>
</entry>
</elementAttributes>
- <pos x="-200" y="1040"/>
+ <pos x="1260" y="0"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@@ -1480,365 +1537,300 @@
</entry>
<entry>
<string>NetName</string>
- <string>B</string>
- </entry>
- </elementAttributes>
- <pos x="-220" y="1040"/>
- </visualElement>
- <visualElement>
- <elementName>Decoder</elementName>
- <elementAttributes>
- <entry>
- <string>Selector Bits</string>
- <int>3</int>
+ <string>Y0</string>
</entry>
</elementAttributes>
- <pos x="-220" y="1180"/>
+ <pos x="1240" y="0"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>Y1</string>
</entry>
</elementAttributes>
- <pos x="140" y="800"/>
+ <pos x="1240" y="20"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="3"/>
+ <rotation rotation="2"/>
</entry>
<entry>
<string>NetName</string>
- <string>ALS_E</string>
+ <string>Y2</string>
</entry>
</elementAttributes>
- <pos x="-400" y="700"/>
+ <pos x="1240" y="40"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>Y3</string>
</entry>
</elementAttributes>
- <pos x="420" y="800"/>
+ <pos x="1240" y="60"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation reference="../../../../visualElement[128]/elementAttributes/entry/rotation"/>
+ <rotation rotation="2"/>
</entry>
<entry>
<string>NetName</string>
- <string>ALS_E</string>
- </entry>
- </elementAttributes>
- <pos x="420" y="820"/>
- </visualElement>
- <visualElement>
- <elementName>DriverInvSel</elementName>
- <elementAttributes>
- <entry>
- <string>Bits</string>
- <int>16</int>
+ <string>Y4</string>
</entry>
</elementAttributes>
- <pos x="840" y="820"/>
+ <pos x="1240" y="80"/>
</visualElement>
<visualElement>
- <elementName>BarrelShifter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>SRA</string>
- </entry>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- <entry>
- <string>barrelShifterMode</string>
- <barrelShifterMode>arithmetic</barrelShifterMode>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>direction</string>
- <direction>right</direction>
+ <string>NetName</string>
+ <string>Y5</string>
</entry>
</elementAttributes>
- <pos x="140" y="940"/>
+ <pos x="1240" y="100"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>Y6</string>
</entry>
</elementAttributes>
- <pos x="260" y="960"/>
+ <pos x="1240" y="120"/>
</visualElement>
<visualElement>
- <elementName>BarrelShifter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>SLL</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>NetName</string>
+ <string>Y7</string>
</entry>
</elementAttributes>
- <pos x="40" y="1120"/>
+ <pos x="1240" y="140"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>16</int>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>flipSelPos</string>
- <boolean>true</boolean>
+ <string>NetName</string>
+ <string>Y8</string>
</entry>
</elementAttributes>
- <pos x="160" y="1140"/>
+ <pos x="1240" y="160"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Input Splitting</string>
- <string>1*4</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>4</string>
+ <string>NetName</string>
+ <string>Y9</string>
</entry>
</elementAttributes>
- <pos x="1220" y="400"/>
+ <pos x="1240" y="180"/>
</visualElement>
<visualElement>
- <elementName>Out</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>FLAGS</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Bits</string>
- <int>4</int>
+ <string>NetName</string>
+ <string>Y10</string>
</entry>
</elementAttributes>
- <pos x="1300" y="400"/>
+ <pos x="1240" y="200"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
<string>NetName</string>
- <string>ALS_E</string>
+ <string>Y11</string>
</entry>
</elementAttributes>
- <pos x="880" y="780"/>
+ <pos x="1240" y="220"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>splitterSpreading</string>
- <int>2</int>
- </entry>
- <entry>
- <string>Input Splitting</string>
- <string>16</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>8*2</string>
+ <string>NetName</string>
+ <string>Y12</string>
</entry>
</elementAttributes>
- <pos x="960" y="820"/>
+ <pos x="1240" y="240"/>
</visualElement>
<visualElement>
- <elementName>BitSelector</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Selector Bits</string>
- <int>4</int>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Y13</string>
</entry>
</elementAttributes>
- <pos x="1000" y="960"/>
+ <pos x="1240" y="260"/>
</visualElement>
<visualElement>
- <elementName>Const</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation rotation="1"/>
- </entry>
- <entry>
- <string>Value</string>
- <long>15</long>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Bits</string>
- <int>4</int>
+ <string>NetName</string>
+ <string>Y14</string>
</entry>
</elementAttributes>
- <pos x="1020" y="980"/>
+ <pos x="1240" y="280"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>splitterSpreading</string>
- <int>2</int>
- </entry>
- <entry>
- <string>Input Splitting</string>
- <string>8</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>4*2</string>
+ <string>NetName</string>
+ <string>Y15</string>
</entry>
</elementAttributes>
- <pos x="1040" y="820"/>
+ <pos x="1240" y="300"/>
</visualElement>
<visualElement>
- <elementName>Testcase</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Label</string>
- <string>Add test 1</string>
- </entry>
- <entry>
- <string>Testdata</string>
- <testData>
- <dataString>A B S FLAGS Y
-0x1 0x2 3 0b0000 0x3
-0xff 0x1 3 0b0000 0x100
-0x1 0xffff 3 0b0101 0x0</dataString>
- </testData>
+ <string>NetName</string>
+ <string>ALU1</string>
</entry>
</elementAttributes>
- <pos x="480" y="1260"/>
+ <pos x="1300" y="0"/>
</visualElement>
<visualElement>
- <elementName>Or</elementName>
+ <elementName>Multiplexer</elementName>
<elementAttributes>
<entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
<string>Bits</string>
- <int>8</int>
+ <int>16</int>
</entry>
</elementAttributes>
- <pos x="980" y="820"/>
+ <pos x="740" y="800"/>
</visualElement>
<visualElement>
- <elementName>Or</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>4</int>
+ <string>NetName</string>
+ <string>ALU2</string>
</entry>
</elementAttributes>
- <pos x="1060" y="820"/>
+ <pos x="400" y="840"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>splitterSpreading</string>
- <int>2</int>
- </entry>
- <entry>
- <string>Input Splitting</string>
- <string>2</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>1*2</string>
+ <string>NetName</string>
+ <string>ALU1</string>
</entry>
</elementAttributes>
- <pos x="1200" y="820"/>
+ <pos x="720" y="800"/>
</visualElement>
<visualElement>
- <elementName>Splitter</elementName>
+ <elementName>Tunnel</elementName>
<elementAttributes>
<entry>
- <string>splitterSpreading</string>
- <int>2</int>
- </entry>
- <entry>
- <string>Input Splitting</string>
- <string>4</string>
+ <string>rotation</string>
+ <rotation rotation="2"/>
</entry>
<entry>
- <string>Output Splitting</string>
- <string>2*2</string>
+ <string>NetName</string>
+ <string>ALU2</string>
</entry>
</elementAttributes>
- <pos x="1120" y="820"/>
+ <pos x="720" y="840"/>
</visualElement>
<visualElement>
- <elementName>Or</elementName>
+ <elementName>Splitter</elementName>
<elementAttributes>
<entry>
- <string>Bits</string>
- <int>2</int>
+ <string>rotation</string>
+ <rotation rotation="3"/>
</entry>
- </elementAttributes>
- <pos x="1140" y="820"/>
- </visualElement>
- <visualElement>
- <elementName>NOr</elementName>
- <elementAttributes/>
- <pos x="1220" y="820"/>
- </visualElement>
- <visualElement>
- <elementName>Testcase</elementName>
- <elementAttributes>
<entry>
- <string>Label</string>
- <string>Sub test 1</string>
+ <string>Input Splitting</string>
+ <string>1,1,1</string>
</entry>
<entry>
- <string>Testdata</string>
- <testData>
- <dataString>A B S FLAGS Y
-0x10 0x1 2 0b0001 0xF
-0x1 0x0 1 0b1000 0xFFFF</dataString>
- </testData>
+ <string>Output Splitting</string>
+ <string>3</string>
</entry>
</elementAttributes>
- <pos x="660" y="1260"/>
- </visualElement>
- <visualElement>
- <elementName>atk16_alu_carryfix.dig</elementName>
- <elementAttributes/>
- <pos x="-60" y="-40"/>
+ <pos x="-320" y="940"/>
</visualElement>
</visualElements>
<wires>
@@ -1851,18 +1843,26 @@
<p2 x="-60" y="0"/>
</wire>
<wire>
- <p1 x="-300" y="640"/>
- <p2 x="-260" y="640"/>
+ <p1 x="1240" y="0"/>
+ <p2 x="1260" y="0"/>
</wire>
<wire>
- <p1 x="-240" y="640"/>
- <p2 x="-160" y="640"/>
+ <p1 x="1280" y="0"/>
+ <p2 x="1300" y="0"/>
+ </wire>
+ <wire>
+ <p1 x="-400" y="640"/>
+ <p2 x="-360" y="640"/>
</wire>
<wire>
<p1 x="500" y="640"/>
<p2 x="860" y="640"/>
</wire>
<wire>
+ <p1 x="-360" y="640"/>
+ <p2 x="-160" y="640"/>
+ </wire>
+ <wire>
<p1 x="-160" y="640"/>
<p2 x="160" y="640"/>
</wire>
@@ -1871,12 +1871,48 @@
<p2 x="500" y="640"/>
</wire>
<wire>
+ <p1 x="-200" y="320"/>
+ <p2 x="-100" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="120" y="320"/>
+ <p2 x="220" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="320"/>
+ <p2 x="560" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="820" y="320"/>
+ <p2 x="920" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="-300" y="320"/>
+ <p2 x="-260" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="-320" y="960"/>
+ <p2 x="-200" y="960"/>
+ </wire>
+ <wire>
+ <p1 x="940" y="960"/>
+ <p2 x="1000" y="960"/>
+ </wire>
+ <wire>
+ <p1 x="1040" y="960"/>
+ <p2 x="1400" y="960"/>
+ </wire>
+ <wire>
+ <p1 x="200" y="960"/>
+ <p2 x="220" y="960"/>
+ </wire>
+ <wire>
<p1 x="-300" y="260"/>
<p2 x="-260" y="260"/>
</wire>
<wire>
- <p1 x="740" y="900"/>
- <p2 x="760" y="900"/>
+ <p1 x="1240" y="260"/>
+ <p2 x="1260" y="260"/>
</wire>
<wire>
<p1 x="-120" y="520"/>
@@ -1903,6 +1939,34 @@
<p2 x="40" y="1160"/>
</wire>
<wire>
+ <p1 x="720" y="840"/>
+ <p2 x="740" y="840"/>
+ </wire>
+ <wire>
+ <p1 x="1300" y="840"/>
+ <p2 x="1380" y="840"/>
+ </wire>
+ <wire>
+ <p1 x="240" y="840"/>
+ <p2 x="340" y="840"/>
+ </wire>
+ <wire>
+ <p1 x="380" y="840"/>
+ <p2 x="400" y="840"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="200"/>
+ <p2 x="-380" y="200"/>
+ </wire>
+ <wire>
+ <p1 x="-300" y="200"/>
+ <p2 x="-260" y="200"/>
+ </wire>
+ <wire>
+ <p1 x="1240" y="200"/>
+ <p2 x="1260" y="200"/>
+ </wire>
+ <wire>
<p1 x="-420" y="140"/>
<p2 x="-380" y="140"/>
</wire>
@@ -1911,12 +1975,20 @@
<p2 x="-260" y="140"/>
</wire>
<wire>
+ <p1 x="1240" y="140"/>
+ <p2 x="1260" y="140"/>
+ </wire>
+ <wire>
<p1 x="-180" y="780"/>
<p2 x="20" y="780"/>
</wire>
<wire>
- <p1 x="840" y="780"/>
- <p2 x="880" y="780"/>
+ <p1 x="1200" y="460"/>
+ <p2 x="1220" y="460"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="-80"/>
+ <p2 x="-380" y="-80"/>
</wire>
<wire>
<p1 x="40" y="400"/>
@@ -1963,8 +2035,20 @@
<p2 x="-60" y="1040"/>
</wire>
<wire>
- <p1 x="740" y="1040"/>
- <p2 x="760" y="1040"/>
+ <p1 x="940" y="720"/>
+ <p2 x="960" y="720"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="80"/>
+ <p2 x="-380" y="80"/>
+ </wire>
+ <wire>
+ <p1 x="-300" y="80"/>
+ <p2 x="-260" y="80"/>
+ </wire>
+ <wire>
+ <p1 x="1240" y="80"/>
+ <p2 x="1260" y="80"/>
</wire>
<wire>
<p1 x="-420" y="-20"/>
@@ -1983,320 +2067,128 @@
<p2 x="-380" y="20"/>
</wire>
<wire>
- <p1 x="-300" y="280"/>
- <p2 x="-260" y="280"/>
- </wire>
- <wire>
- <p1 x="740" y="920"/>
- <p2 x="760" y="920"/>
- </wire>
- <wire>
- <p1 x="-180" y="1180"/>
- <p2 x="-40" y="1180"/>
- </wire>
- <wire>
- <p1 x="40" y="160"/>
- <p2 x="60" y="160"/>
- </wire>
- <wire>
- <p1 x="360" y="160"/>
- <p2 x="380" y="160"/>
- </wire>
- <wire>
- <p1 x="700" y="160"/>
- <p2 x="720" y="160"/>
- </wire>
- <wire>
- <p1 x="1060" y="160"/>
- <p2 x="1080" y="160"/>
- </wire>
- <wire>
- <p1 x="-420" y="160"/>
- <p2 x="-380" y="160"/>
- </wire>
- <wire>
- <p1 x="-300" y="160"/>
- <p2 x="-260" y="160"/>
- </wire>
- <wire>
- <p1 x="80" y="800"/>
- <p2 x="120" y="800"/>
- </wire>
- <wire>
- <p1 x="160" y="800"/>
- <p2 x="360" y="800"/>
- </wire>
- <wire>
- <p1 x="-180" y="800"/>
- <p2 x="-80" y="800"/>
- </wire>
- <wire>
- <p1 x="440" y="800"/>
- <p2 x="660" y="800"/>
- </wire>
- <wire>
- <p1 x="360" y="800"/>
- <p2 x="400" y="800"/>
- </wire>
- <wire>
- <p1 x="1100" y="420"/>
- <p2 x="1220" y="420"/>
- </wire>
- <wire>
- <p1 x="740" y="1060"/>
- <p2 x="760" y="1060"/>
- </wire>
- <wire>
- <p1 x="-420" y="-40"/>
- <p2 x="-380" y="-40"/>
- </wire>
- <wire>
- <p1 x="-160" y="-40"/>
- <p2 x="-60" y="-40"/>
- </wire>
- <wire>
- <p1 x="-420" y="40"/>
- <p2 x="-380" y="40"/>
- </wire>
- <wire>
- <p1 x="-420" y="680"/>
- <p2 x="-400" y="680"/>
- </wire>
- <wire>
- <p1 x="-400" y="680"/>
- <p2 x="-320" y="680"/>
- </wire>
- <wire>
- <p1 x="-300" y="300"/>
- <p2 x="-260" y="300"/>
- </wire>
- <wire>
- <p1 x="-80" y="940"/>
- <p2 x="140" y="940"/>
- </wire>
- <wire>
- <p1 x="740" y="940"/>
- <p2 x="760" y="940"/>
- </wire>
- <wire>
- <p1 x="-180" y="1200"/>
- <p2 x="-20" y="1200"/>
- </wire>
- <wire>
- <p1 x="780" y="820"/>
- <p2 x="820" y="820"/>
- </wire>
- <wire>
- <p1 x="-60" y="820"/>
- <p2 x="20" y="820"/>
- </wire>
- <wire>
- <p1 x="-180" y="820"/>
- <p2 x="-100" y="820"/>
- </wire>
- <wire>
- <p1 x="860" y="820"/>
- <p2 x="940" y="820"/>
- </wire>
- <wire>
- <p1 x="740" y="820"/>
- <p2 x="760" y="820"/>
- </wire>
- <wire>
- <p1 x="940" y="820"/>
- <p2 x="960" y="820"/>
- </wire>
- <wire>
- <p1 x="-420" y="180"/>
- <p2 x="-380" y="180"/>
- </wire>
- <wire>
- <p1 x="-300" y="180"/>
- <p2 x="-260" y="180"/>
- </wire>
- <wire>
- <p1 x="1060" y="440"/>
- <p2 x="1100" y="440"/>
- </wire>
- <wire>
- <p1 x="1140" y="440"/>
- <p2 x="1220" y="440"/>
- </wire>
- <wire>
- <p1 x="740" y="1080"/>
- <p2 x="760" y="1080"/>
- </wire>
- <wire>
- <p1 x="-420" y="-60"/>
- <p2 x="-380" y="-60"/>
- </wire>
- <wire>
- <p1 x="-420" y="60"/>
- <p2 x="-380" y="60"/>
- </wire>
- <wire>
- <p1 x="-300" y="60"/>
- <p2 x="-260" y="60"/>
- </wire>
- <wire>
- <p1 x="-200" y="320"/>
- <p2 x="-100" y="320"/>
- </wire>
- <wire>
- <p1 x="120" y="320"/>
- <p2 x="220" y="320"/>
- </wire>
- <wire>
- <p1 x="460" y="320"/>
- <p2 x="560" y="320"/>
- </wire>
- <wire>
- <p1 x="820" y="320"/>
- <p2 x="920" y="320"/>
- </wire>
- <wire>
- <p1 x="-300" y="320"/>
- <p2 x="-260" y="320"/>
- </wire>
- <wire>
- <p1 x="-260" y="960"/>
- <p2 x="-200" y="960"/>
- </wire>
- <wire>
- <p1 x="200" y="960"/>
- <p2 x="240" y="960"/>
- </wire>
- <wire>
- <p1 x="280" y="960"/>
- <p2 x="360" y="960"/>
- </wire>
- <wire>
- <p1 x="940" y="960"/>
- <p2 x="1000" y="960"/>
- </wire>
- <wire>
- <p1 x="1040" y="960"/>
- <p2 x="1400" y="960"/>
+ <p1 x="1240" y="20"/>
+ <p2 x="1260" y="20"/>
</wire>
<wire>
- <p1 x="740" y="960"/>
- <p2 x="760" y="960"/>
+ <p1 x="-300" y="340"/>
+ <p2 x="-260" y="340"/>
</wire>
<wire>
- <p1 x="-180" y="1220"/>
- <p2 x="160" y="1220"/>
+ <p1 x="-60" y="980"/>
+ <p2 x="140" y="980"/>
</wire>
<wire>
- <p1 x="-420" y="200"/>
- <p2 x="-380" y="200"/>
+ <p1 x="-400" y="660"/>
+ <p2 x="760" y="660"/>
</wire>
<wire>
- <p1 x="-300" y="200"/>
- <p2 x="-260" y="200"/>
+ <p1 x="-300" y="280"/>
+ <p2 x="-260" y="280"/>
</wire>
<wire>
- <p1 x="740" y="840"/>
- <p2 x="760" y="840"/>
+ <p1 x="1240" y="280"/>
+ <p2 x="1260" y="280"/>
</wire>
<wire>
- <p1 x="1300" y="840"/>
- <p2 x="1380" y="840"/>
+ <p1 x="-500" y="600"/>
+ <p2 x="-420" y="600"/>
</wire>
<wire>
- <p1 x="1200" y="460"/>
- <p2 x="1220" y="460"/>
+ <p1 x="-400" y="600"/>
+ <p2 x="-320" y="600"/>
</wire>
<wire>
- <p1 x="740" y="1100"/>
- <p2 x="760" y="1100"/>
+ <p1 x="460" y="600"/>
+ <p2 x="820" y="600"/>
</wire>
<wire>
- <p1 x="-420" y="-80"/>
- <p2 x="-380" y="-80"/>
+ <p1 x="-200" y="600"/>
+ <p2 x="120" y="600"/>
</wire>
<wire>
- <p1 x="660" y="720"/>
- <p2 x="940" y="720"/>
+ <p1 x="120" y="600"/>
+ <p2 x="360" y="600"/>
</wire>
<wire>
- <p1 x="940" y="720"/>
- <p2 x="960" y="720"/>
+ <p1 x="-320" y="600"/>
+ <p2 x="-200" y="600"/>
</wire>
<wire>
- <p1 x="-420" y="80"/>
- <p2 x="-380" y="80"/>
+ <p1 x="360" y="600"/>
+ <p2 x="460" y="600"/>
</wire>
<wire>
- <p1 x="-300" y="80"/>
- <p2 x="-260" y="80"/>
+ <p1 x="-420" y="220"/>
+ <p2 x="-380" y="220"/>
</wire>
<wire>
- <p1 x="-260" y="1360"/>
- <p2 x="-200" y="1360"/>
+ <p1 x="-480" y="220"/>
+ <p2 x="-460" y="220"/>
</wire>
<wire>
- <p1 x="-300" y="340"/>
- <p2 x="-260" y="340"/>
+ <p1 x="-300" y="220"/>
+ <p2 x="-260" y="220"/>
</wire>
<wire>
- <p1 x="-60" y="980"/>
- <p2 x="140" y="980"/>
+ <p1 x="1240" y="220"/>
+ <p2 x="1260" y="220"/>
</wire>
<wire>
- <p1 x="740" y="980"/>
- <p2 x="760" y="980"/>
+ <p1 x="-460" y="220"/>
+ <p2 x="-440" y="220"/>
</wire>
<wire>
- <p1 x="-300" y="600"/>
- <p2 x="-260" y="600"/>
+ <p1 x="320" y="860"/>
+ <p2 x="340" y="860"/>
</wire>
<wire>
- <p1 x="-240" y="600"/>
- <p2 x="-200" y="600"/>
+ <p1 x="40" y="160"/>
+ <p2 x="60" y="160"/>
</wire>
<wire>
- <p1 x="460" y="600"/>
- <p2 x="820" y="600"/>
+ <p1 x="360" y="160"/>
+ <p2 x="380" y="160"/>
</wire>
<wire>
- <p1 x="-200" y="600"/>
- <p2 x="120" y="600"/>
+ <p1 x="700" y="160"/>
+ <p2 x="720" y="160"/>
</wire>
<wire>
- <p1 x="120" y="600"/>
- <p2 x="460" y="600"/>
+ <p1 x="1060" y="160"/>
+ <p2 x="1080" y="160"/>
</wire>
<wire>
- <p1 x="-420" y="220"/>
- <p2 x="-380" y="220"/>
+ <p1 x="-420" y="160"/>
+ <p2 x="-380" y="160"/>
</wire>
<wire>
- <p1 x="-480" y="220"/>
- <p2 x="-460" y="220"/>
+ <p1 x="-300" y="160"/>
+ <p2 x="-260" y="160"/>
</wire>
<wire>
- <p1 x="-300" y="220"/>
- <p2 x="-260" y="220"/>
+ <p1 x="1240" y="160"/>
+ <p2 x="1260" y="160"/>
</wire>
<wire>
- <p1 x="-460" y="220"/>
- <p2 x="-440" y="220"/>
+ <p1 x="-180" y="800"/>
+ <p2 x="-80" y="800"/>
</wire>
<wire>
- <p1 x="-40" y="860"/>
- <p2 x="140" y="860"/>
+ <p1 x="80" y="800"/>
+ <p2 x="340" y="800"/>
</wire>
<wire>
- <p1 x="740" y="860"/>
- <p2 x="760" y="860"/>
+ <p1 x="720" y="800"/>
+ <p2 x="740" y="800"/>
</wire>
<wire>
<p1 x="-100" y="1120"/>
<p2 x="40" y="1120"/>
</wire>
<wire>
- <p1 x="740" y="1120"/>
- <p2 x="760" y="1120"/>
+ <p1 x="1100" y="420"/>
+ <p2 x="1220" y="420"/>
</wire>
<wire>
<p1 x="100" y="100"/>
@@ -2319,6 +2211,26 @@
<p2 x="-260" y="100"/>
</wire>
<wire>
+ <p1 x="1240" y="100"/>
+ <p2 x="1260" y="100"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="-40"/>
+ <p2 x="-380" y="-40"/>
+ </wire>
+ <wire>
+ <p1 x="-160" y="-40"/>
+ <p2 x="-60" y="-40"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="40"/>
+ <p2 x="-380" y="40"/>
+ </wire>
+ <wire>
+ <p1 x="1240" y="40"/>
+ <p2 x="1260" y="40"/>
+ </wire>
+ <wire>
<p1 x="360" y="360"/>
<p2 x="420" y="360"/>
</wire>
@@ -2363,19 +2275,31 @@
<p2 x="-320" y="360"/>
</wire>
<wire>
- <p1 x="740" y="1000"/>
- <p2 x="760" y="1000"/>
+ <p1 x="-300" y="300"/>
+ <p2 x="-260" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="1240" y="300"/>
+ <p2 x="1260" y="300"/>
</wire>
<wire>
- <p1 x="-500" y="620"/>
- <p2 x="-440" y="620"/>
+ <p1 x="-80" y="940"/>
+ <p2 x="140" y="940"/>
</wire>
<wire>
- <p1 x="-420" y="620"/>
+ <p1 x="-400" y="620"/>
<p2 x="-340" y="620"/>
</wire>
<wire>
- <p1 x="-240" y="620"/>
+ <p1 x="480" y="620"/>
+ <p2 x="840" y="620"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="620"/>
+ <p2 x="480" y="620"/>
+ </wire>
+ <wire>
+ <p1 x="-340" y="620"/>
<p2 x="-180" y="620"/>
</wire>
<wire>
@@ -2384,33 +2308,65 @@
</wire>
<wire>
<p1 x="140" y="620"/>
- <p2 x="480" y="620"/>
- </wire>
- <wire>
- <p1 x="480" y="620"/>
- <p2 x="840" y="620"/>
+ <p2 x="340" y="620"/>
</wire>
<wire>
<p1 x="-300" y="240"/>
<p2 x="-260" y="240"/>
</wire>
<wire>
- <p1 x="740" y="880"/>
- <p2 x="760" y="880"/>
+ <p1 x="1240" y="240"/>
+ <p2 x="1260" y="240"/>
</wire>
<wire>
- <p1 x="100" y="1140"/>
- <p2 x="140" y="1140"/>
+ <p1 x="-60" y="820"/>
+ <p2 x="20" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="-180" y="820"/>
+ <p2 x="-100" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="220" y="820"/>
+ <p2 x="340" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="780" y="820"/>
+ <p2 x="940" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="940" y="820"/>
+ <p2 x="960" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="-420" y="180"/>
+ <p2 x="-380" y="180"/>
</wire>
<wire>
- <p1 x="180" y="1140"/>
- <p2 x="360" y="1140"/>
+ <p1 x="-300" y="180"/>
+ <p2 x="-260" y="180"/>
+ </wire>
+ <wire>
+ <p1 x="1240" y="180"/>
+ <p2 x="1260" y="180"/>
</wire>
<wire>
<p1 x="1200" y="500"/>
<p2 x="1400" y="500"/>
</wire>
<wire>
+ <p1 x="100" y="1140"/>
+ <p2 x="240" y="1140"/>
+ </wire>
+ <wire>
+ <p1 x="1060" y="440"/>
+ <p2 x="1100" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="1140" y="440"/>
+ <p2 x="1220" y="440"/>
+ </wire>
+ <wire>
<p1 x="-420" y="120"/>
<p2 x="-380" y="120"/>
</wire>
@@ -2419,24 +2375,24 @@
<p2 x="-260" y="120"/>
</wire>
<wire>
- <p1 x="-20" y="1020"/>
- <p2 x="260" y="1020"/>
+ <p1 x="1240" y="120"/>
+ <p2 x="1260" y="120"/>
</wire>
<wire>
- <p1 x="740" y="1020"/>
- <p2 x="760" y="1020"/>
+ <p1 x="-420" y="-60"/>
+ <p2 x="-380" y="-60"/>
</wire>
<wire>
- <p1 x="-260" y="640"/>
- <p2 x="-260" y="960"/>
+ <p1 x="-420" y="60"/>
+ <p2 x="-380" y="60"/>
</wire>
<wire>
- <p1 x="-260" y="960"/>
- <p2 x="-260" y="1360"/>
+ <p1 x="-300" y="60"/>
+ <p2 x="-260" y="60"/>
</wire>
<wire>
- <p1 x="260" y="980"/>
- <p2 x="260" y="1020"/>
+ <p1 x="1240" y="60"/>
+ <p2 x="1260" y="60"/>
</wire>
<wire>
<p1 x="-200" y="0"/>
@@ -2447,10 +2403,6 @@
<p2 x="-200" y="960"/>
</wire>
<wire>
- <p1 x="-200" y="1320"/>
- <p2 x="-200" y="1360"/>
- </wire>
- <wire>
<p1 x="-200" y="320"/>
<p2 x="-200" y="600"/>
</wire>
@@ -2459,10 +2411,6 @@
<p2 x="840" y="620"/>
</wire>
<wire>
- <p1 x="840" y="780"/>
- <p2 x="840" y="800"/>
- </wire>
- <wire>
<p1 x="-460" y="220"/>
<p2 x="-460" y="260"/>
</wire>
@@ -2475,10 +2423,6 @@
<p2 x="140" y="620"/>
</wire>
<wire>
- <p1 x="140" y="820"/>
- <p2 x="140" y="860"/>
- </wire>
- <wire>
<p1 x="780" y="100"/>
<p2 x="780" y="360"/>
</wire>
@@ -2491,10 +2435,6 @@
<p2 x="1100" y="440"/>
</wire>
<wire>
- <p1 x="-400" y="680"/>
- <p2 x="-400" y="700"/>
- </wire>
- <wire>
<p1 x="-80" y="800"/>
<p2 x="-80" y="940"/>
</wire>
@@ -2507,18 +2447,22 @@
<p2 x="80" y="360"/>
</wire>
<wire>
- <p1 x="-20" y="1020"/>
- <p2 x="-20" y="1200"/>
+ <p1 x="-340" y="620"/>
+ <p2 x="-340" y="940"/>
</wire>
<wire>
- <p1 x="660" y="720"/>
- <p2 x="660" y="800"/>
+ <p1 x="340" y="620"/>
+ <p2 x="340" y="740"/>
</wire>
<wire>
<p1 x="860" y="400"/>
<p2 x="860" y="640"/>
</wire>
<wire>
+ <p1 x="220" y="820"/>
+ <p2 x="220" y="960"/>
+ </wire>
+ <wire>
<p1 x="-160" y="-40"/>
<p2 x="-160" y="400"/>
</wire>
@@ -2531,10 +2475,6 @@
<p2 x="160" y="640"/>
</wire>
<wire>
- <p1 x="160" y="1160"/>
- <p2 x="160" y="1220"/>
- </wire>
- <wire>
<p1 x="800" y="100"/>
<p2 x="800" y="400"/>
</wire>
@@ -2547,10 +2487,6 @@
<p2 x="1120" y="840"/>
</wire>
<wire>
- <p1 x="-420" y="640"/>
- <p2 x="-420" y="680"/>
- </wire>
- <wire>
<p1 x="-100" y="820"/>
<p2 x="-100" y="1120"/>
</wire>
@@ -2567,16 +2503,16 @@
<p2 x="1380" y="840"/>
</wire>
<wire>
- <p1 x="-40" y="860"/>
- <p2 x="-40" y="1180"/>
+ <p1 x="-360" y="640"/>
+ <p2 x="-360" y="940"/>
</wire>
<wire>
- <p1 x="360" y="800"/>
- <p2 x="360" y="960"/>
+ <p1 x="360" y="760"/>
+ <p2 x="360" y="800"/>
</wire>
<wire>
- <p1 x="360" y="960"/>
- <p2 x="360" y="1140"/>
+ <p1 x="360" y="600"/>
+ <p2 x="360" y="740"/>
</wire>
<wire>
<p1 x="940" y="720"/>
@@ -2595,6 +2531,10 @@
<p2 x="1200" y="500"/>
</wire>
<wire>
+ <p1 x="240" y="840"/>
+ <p2 x="240" y="1140"/>
+ </wire>
+ <wire>
<p1 x="-180" y="-20"/>
<p2 x="-180" y="360"/>
</wire>
@@ -2631,6 +2571,10 @@
<p2 x="1400" y="960"/>
</wire>
<wire>
+ <p1 x="760" y="660"/>
+ <p2 x="760" y="800"/>
+ </wire>
+ <wire>
<p1 x="-60" y="820"/>
<p2 x="-60" y="980"/>
</wire>
@@ -2643,8 +2587,8 @@
<p2 x="-60" y="1040"/>
</wire>
<wire>
- <p1 x="-320" y="640"/>
- <p2 x="-320" y="680"/>
+ <p1 x="-320" y="600"/>
+ <p2 x="-320" y="940"/>
</wire>
</wires>
<measurementOrdering/>
diff --git a/digital/atk16_decoder.dig b/digital/atk16_decoder.dig
new file mode 100644
index 0000000..ca22f72
--- /dev/null
+++ b/digital/atk16_decoder.dig
@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="utf-8"?>
+<circuit>
+ <version>2</version>
+ <attributes/>
+ <visualElements>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Write register selection</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RW_S</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="360"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 1 selection</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>R1_S</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 2 selection</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>R2_S</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>IR</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="200" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>DBUS</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>isHighZ</string>
+ <boolean>true</boolean>
+ </entry>
+ </elementAttributes>
+ <pos x="40" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Instruction register input enable</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>IR_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="140" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="40" y="380"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>splitterSpreading</string>
+ <int>2</int>
+ </entry>
+ <entry>
+ <string>Input Splitting</string>
+ <string>16</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>3,3,3,3,4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="400" y="360"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>9,7</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>16</string>
+ </entry>
+ </elementAttributes>
+ <pos x="380" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>7</int>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="680"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>DBUS</string>
+ </entry>
+ </elementAttributes>
+ <pos x="40" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>DBUS</string>
+ </entry>
+ </elementAttributes>
+ <pos x="200" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Driver</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>DBUS</string>
+ </entry>
+ </elementAttributes>
+ <pos x="500" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>16</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>3,9,</string>
+ </entry>
+ </elementAttributes>
+ <pos x="280" y="640"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>ALU selection code</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>ALU_S</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>4</int>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="500"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>3,1</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="600" y="500"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>4</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>1,3</string>
+ </entry>
+ </elementAttributes>
+ <pos x="480" y="520"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Jump address output enable</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>JA_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Opcode</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>OP</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>4</int>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="580"/>
+ </visualElement>
+ </visualElements>
+ <wires>
+ <wire>
+ <p1 x="420" y="480"/>
+ <p2 x="440" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="400"/>
+ <p2 x="600" y="400"/>
+ </wire>
+ <wire>
+ <p1 x="300" y="660"/>
+ <p2 x="380" y="660"/>
+ </wire>
+ <wire>
+ <p1 x="400" y="660"/>
+ <p2 x="440" y="660"/>
+ </wire>
+ <wire>
+ <p1 x="480" y="660"/>
+ <p2 x="500" y="660"/>
+ </wire>
+ <wire>
+ <p1 x="140" y="420"/>
+ <p2 x="180" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="500"/>
+ <p2 x="640" y="500"/>
+ </wire>
+ <wire>
+ <p1 x="440" y="740"/>
+ <p2 x="460" y="740"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="580"/>
+ <p2 x="640" y="580"/>
+ </wire>
+ <wire>
+ <p1 x="360" y="680"/>
+ <p2 x="380" y="680"/>
+ </wire>
+ <wire>
+ <p1 x="160" y="360"/>
+ <p2 x="200" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="260" y="360"/>
+ <p2 x="280" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="360"/>
+ <p2 x="440" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="280" y="360"/>
+ <p2 x="400" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="520"/>
+ <p2 x="460" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="500" y="520"/>
+ <p2 x="600" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="520"/>
+ <p2 x="480" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="440"/>
+ <p2 x="440" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="380"/>
+ <p2 x="200" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="40" y="380"/>
+ <p2 x="160" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="160" y="360"/>
+ <p2 x="160" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="380"/>
+ <p2 x="180" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="280" y="360"/>
+ <p2 x="280" y="640"/>
+ </wire>
+ <wire>
+ <p1 x="600" y="400"/>
+ <p2 x="600" y="500"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="680"/>
+ <p2 x="460" y="740"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="520"/>
+ <p2 x="460" y="580"/>
+ </wire>
+ </wires>
+ <measurementOrdering/>
+</circuit> \ No newline at end of file
diff --git a/digital/atk16_mem.dig b/digital/atk16_mem.dig
new file mode 100644
index 0000000..f323545
--- /dev/null
+++ b/digital/atk16_mem.dig
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="utf-8"?>
+<circuit>
+ <version>2</version>
+ <attributes/>
+ <visualElements>
+ <visualElement>
+ <elementName>RAMAsync</elementName>
+ <elementAttributes>
+ <entry>
+ <string>AddrBits</string>
+ <int>15</int>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>MEM_RAM</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="680" y="280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>MEM_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="680" y="320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>EEPROM</elementName>
+ <elementAttributes>
+ <entry>
+ <string>AddrBits</string>
+ <int>15</int>
+ </entry>
+ <entry>
+ <string>isProgramMemory</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>MEM_ROM</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>Data</string>
+ <data>4019,5200,8000,4051,40a2,29b,4014,2804,38c0,d9,40f2,4084,293,6500
+,4011,f000,4009,f000</data>
+ </entry>
+ </elementAttributes>
+ <pos x="740" y="100"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>16</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>15,1</string>
+ </entry>
+ </elementAttributes>
+ <pos x="520" y="180"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Demultiplexer</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Bits</string>
+ <int>15</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="160"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ </elementAttributes>
+ <pos x="720" y="160"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Address</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>ADDR</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="180"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Data bus</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>DBUS</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>isHighZ</string>
+ <boolean>true</boolean>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="300"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Driver</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="700" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="3"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>MEM_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="700" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Memory input enable</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>MEM_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Memory output enable</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>MEM_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="540"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>MEM_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="380" y="540"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>MEM_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="380" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Testcase</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Testdata</string>
+ <testData>
+ <dataString>ADDR MEM_IE MEM_OE DBUS DBUS_out
+
+# read ROM
+program(0xFF)
+0x0 0 1 Z 0xFF
+
+# read RAM
+memory MEM_RAM(0x0)=0x55;
+0 0 0 Z X
+0x8000 0 1 Z 0x55
+
+# write to RAM
+0x8000 1 0 0xAA 0xAA
+0x8000 0 1 Z 0xAA
+</dataString>
+ </testData>
+ </entry>
+ </elementAttributes>
+ <pos x="940" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Driver</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="800" y="300"/>
+ </visualElement>
+ <visualElement>
+ <elementName>VDD</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ </elementAttributes>
+ <pos x="720" y="120"/>
+ </visualElement>
+ <visualElement>
+ <elementName>VDD</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[17]/elementAttributes/entry/rotation"/>
+ </entry>
+ </elementAttributes>
+ <pos x="720" y="180"/>
+ </visualElement>
+ <visualElement>
+ <elementName>DriverInvSel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="3"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
+ </entry>
+ </elementAttributes>
+ <pos x="840" y="180"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Probe</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>ROM_OUT</string>
+ </entry>
+ </elementAttributes>
+ <pos x="880" y="140"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Probe</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>RAM_OUT</string>
+ </entry>
+ </elementAttributes>
+ <pos x="900" y="320"/>
+ </visualElement>
+ </visualElements>
+ <wires>
+ <wire>
+ <p1 x="600" y="160"/>
+ <p2 x="620" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="720" y="160"/>
+ <p2 x="740" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="760" y="320"/>
+ <p2 x="900" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="100"/>
+ <p2 x="740" y="100"/>
+ </wire>
+ <wire>
+ <p1 x="360" y="420"/>
+ <p2 x="380" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="200"/>
+ <p2 x="580" y="200"/>
+ </wire>
+ <wire>
+ <p1 x="600" y="200"/>
+ <p2 x="620" y="200"/>
+ </wire>
+ <wire>
+ <p1 x="360" y="300"/>
+ <p2 x="520" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="820" y="300"/>
+ <p2 x="840" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="740" y="300"/>
+ <p2 x="760" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="300"/>
+ <p2 x="680" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="760" y="300"/>
+ <p2 x="780" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="800" y="140"/>
+ <p2 x="840" y="140"/>
+ </wire>
+ <wire>
+ <p1 x="840" y="140"/>
+ <p2 x="880" y="140"/>
+ </wire>
+ <wire>
+ <p1 x="640" y="240"/>
+ <p2 x="800" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="800" y="240"/>
+ <p2 x="820" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="180"/>
+ <p2 x="560" y="180"/>
+ </wire>
+ <wire>
+ <p1 x="360" y="180"/>
+ <p2 x="520" y="180"/>
+ </wire>
+ <wire>
+ <p1 x="720" y="180"/>
+ <p2 x="740" y="180"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="280"/>
+ <p2 x="680" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="440"/>
+ <p2 x="680" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="720" y="440"/>
+ <p2 x="840" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="720" y="120"/>
+ <p2 x="740" y="120"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="220"/>
+ <p2 x="640" y="220"/>
+ </wire>
+ <wire>
+ <p1 x="360" y="540"/>
+ <p2 x="380" y="540"/>
+ </wire>
+ <wire>
+ <p1 x="640" y="220"/>
+ <p2 x="640" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="800" y="240"/>
+ <p2 x="800" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="200"/>
+ <p2 x="580" y="220"/>
+ </wire>
+ <wire>
+ <p1 x="820" y="180"/>
+ <p2 x="820" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="300"/>
+ <p2 x="520" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="840" y="200"/>
+ <p2 x="840" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="840" y="140"/>
+ <p2 x="840" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="840" y="300"/>
+ <p2 x="840" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="760" y="300"/>
+ <p2 x="760" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="100"/>
+ <p2 x="620" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="200"/>
+ <p2 x="620" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="700" y="460"/>
+ <p2 x="700" y="480"/>
+ </wire>
+ </wires>
+ <measurementOrdering/>
+</circuit> \ No newline at end of file
diff --git a/digital/atk16_regbank.dig b/digital/atk16_regbank.dig
new file mode 100644
index 0000000..35c072a
--- /dev/null
+++ b/digital/atk16_regbank.dig
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="utf-8"?>
+<circuit>
+ <version>2</version>
+ <attributes/>
+ <visualElements>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Data bus in</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>Din</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="60" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 1 data out</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>D1</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="1080" y="400"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 2 data out</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>D2</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="1080" y="680"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Multiplexer</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>3</int>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="940" y="320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q1</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q2</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="360"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q3</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="380"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="400"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q5</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q6</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Write register input enable</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="60" y="520"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Multiplexer</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>3</int>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="940" y="600"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="600"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[6]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q1</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="620"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q2</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="640"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q3</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="680"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q5</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="700"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[7]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Q6</string>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="720"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="760"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Write register select</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RW_S</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>3</int>
+ </entry>
+ </elementAttributes>
+ <pos x="80" y="820"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Clock</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="0" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 1 select</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>R1_S</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>3</int>
+ </entry>
+ </elementAttributes>
+ <pos x="940" y="520"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="80" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="80" y="520"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RA</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="100"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="100"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="120"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q1</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="120"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="140"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="140"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_A</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="180"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RB</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="260"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[29]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="260"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[30]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q2</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="300"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[33]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="300"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_B</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RC</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[29]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[30]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q3</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="460"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>RD</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="580"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[29]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="580"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[30]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="600"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="600"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="620"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[33]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="620"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_D</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>PA</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="760"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q5</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="760"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="780"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="780"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_PA</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="820"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Register</elementName>
+ <elementAttributes>
+ <entry>
+ <string>valueIsProbe</string>
+ <boolean>true</boolean>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>PB</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="900"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[55]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>Din</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="900"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[56]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="560" y="920"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>Q6</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="920"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="460" y="940"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[59]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="940"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_PB</string>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="980"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="920" y="460"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="460"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>RW_C</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="500"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Decoder</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>3</int>
+ </entry>
+ </elementAttributes>
+ <pos x="80" y="600"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Read register 2 select</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>R2_S</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>3</int>
+ </entry>
+ </elementAttributes>
+ <pos x="940" y="800"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>CLK</string>
+ </entry>
+ </elementAttributes>
+ <pos x="0" y="740"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_A</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="620"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_B</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="640"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_C</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="660"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_D</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="680"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_PA</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="700"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>NetName</string>
+ <string>RW_PB</string>
+ </entry>
+ </elementAttributes>
+ <pos x="120" y="720"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Testcase</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Testdata</string>
+ <testData>
+ <dataString>CLK Din RW_IE RW_S R1_S R2_S D1 D2
+# store and read from RA works
+C 0xF 1 1 0 X X X
+C 0 0 0 1 X 0xF X
+C 0x5 1 1 1 X 0x5 X
+C 0 0 0 1 X 0x5 X
+
+# zero register read and write
+C 0xA 1 0 0 X 0 X</dataString>
+ </testData>
+ </entry>
+ </elementAttributes>
+ <pos x="900" y="920"/>
+ </visualElement>
+ </visualElements>
+ <wires>
+ <wire>
+ <p1 x="920" y="320"/>
+ <p2 x="940" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="320"/>
+ <p2 x="540" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="640"/>
+ <p2 x="940" y="640"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="640"/>
+ <p2 x="540" y="640"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="960"/>
+ <p2 x="540" y="960"/>
+ </wire>
+ <wire>
+ <p1 x="940" y="520"/>
+ <p2 x="960" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="60" y="520"/>
+ <p2 x="80" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="460"/>
+ <p2 x="560" y="460"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="460"/>
+ <p2 x="940" y="460"/>
+ </wire>
+ <wire>
+ <p1 x="440" y="460"/>
+ <p2 x="460" y="460"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="140"/>
+ <p2 x="560" y="140"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="780"/>
+ <p2 x="560" y="780"/>
+ </wire>
+ <wire>
+ <p1 x="980" y="400"/>
+ <p2 x="1080" y="400"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="400"/>
+ <p2 x="940" y="400"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="720"/>
+ <p2 x="940" y="720"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="340"/>
+ <p2 x="940" y="340"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="660"/>
+ <p2 x="940" y="660"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="600"/>
+ <p2 x="940" y="600"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="600"/>
+ <p2 x="640" y="600"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="280"/>
+ <p2 x="640" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="920"/>
+ <p2 x="640" y="920"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="480"/>
+ <p2 x="540" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="480"/>
+ <p2 x="940" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="940" y="800"/>
+ <p2 x="960" y="800"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="800"/>
+ <p2 x="540" y="800"/>
+ </wire>
+ <wire>
+ <p1 x="520" y="160"/>
+ <p2 x="540" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="420"/>
+ <p2 x="940" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="60" y="420"/>
+ <p2 x="80" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="740"/>
+ <p2 x="940" y="740"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="360"/>
+ <p2 x="940" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="680"/>
+ <p2 x="940" y="680"/>
+ </wire>
+ <wire>
+ <p1 x="980" y="680"/>
+ <p2 x="1080" y="680"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="620"/>
+ <p2 x="940" y="620"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="620"/>
+ <p2 x="560" y="620"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="300"/>
+ <p2 x="560" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="940"/>
+ <p2 x="560" y="940"/>
+ </wire>
+ <wire>
+ <p1 x="440" y="500"/>
+ <p2 x="460" y="500"/>
+ </wire>
+ <wire>
+ <p1 x="80" y="820"/>
+ <p2 x="100" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="440"/>
+ <p2 x="940" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="440"/>
+ <p2 x="640" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="760"/>
+ <p2 x="940" y="760"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="760"/>
+ <p2 x="640" y="760"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="120"/>
+ <p2 x="640" y="120"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="380"/>
+ <p2 x="940" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="920" y="700"/>
+ <p2 x="940" y="700"/>
+ </wire>
+ <wire>
+ <p1 x="960" y="480"/>
+ <p2 x="960" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="960" y="760"/>
+ <p2 x="960" y="800"/>
+ </wire>
+ <wire>
+ <p1 x="100" y="740"/>
+ <p2 x="100" y="820"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="140"/>
+ <p2 x="540" y="160"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="300"/>
+ <p2 x="540" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="460"/>
+ <p2 x="540" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="620"/>
+ <p2 x="540" y="640"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="780"/>
+ <p2 x="540" y="800"/>
+ </wire>
+ <wire>
+ <p1 x="540" y="940"/>
+ <p2 x="540" y="960"/>
+ </wire>
+ <wire>
+ <p1 x="940" y="460"/>
+ <p2 x="940" y="480"/>
+ </wire>
+ </wires>
+ <measurementOrdering/>
+</circuit> \ No newline at end of file
diff --git a/high-level-lang-idea.perl b/high-level-lang-idea.perl
new file mode 100644
index 0000000..426cae8
--- /dev/null
+++ b/high-level-lang-idea.perl
@@ -0,0 +1,36 @@
+# Builtin types:
+# u8, u16, i8, i16, block[T], void
+
+# allocate 16 words, returning block
+# a block is similar to a C pointer but contains the allocated size as well
+decl v :: block[u16] = alloc-words 16
+
+# define a fn that zeroes a block of memory
+decl zero-block :: block[u16] -> void
+func zero-block block
+ # for each address in block
+ for-addr addr block
+ # store the value 0 in memory at address addr
+ store addr 0
+
+# call fn zero-block in inlined mode
+zero-block% v
+
+# compute first 16 fibonacci numbers
+decl a :: u16 = 0
+decl b :: u16 = 1
+for-index idx block
+ # declarations in loop constructs are hoisted
+ decl addr :: u16 = addr-at idx block
+ decl v :: u16
+
+ if idx == 0
+ v = a
+ else if idx == 1
+ v = b
+ else
+ v = a + b
+
+ store addr v
+ a = b
+ b = v
diff --git a/src/assembler.py b/src/assembler.py
index 9e2d92f..5802983 100755
--- a/src/assembler.py
+++ b/src/assembler.py
@@ -45,7 +45,7 @@ def parse(line: str) -> list[str]:
def eval_expr(expr: str) -> int:
expr = eval_symbol(expr)
- return eval(expr, labels) # eval as Python expr
+ return eval(expr, labels.copy()) # eval as Python expr
def eval_symbol(c: str):
if c in labels:
@@ -85,7 +85,7 @@ labels: dict[str, int] = {}
address = 0
for (lineNo, line) in enumerate(src_lines):
- line = line.strip()
+ line = line.split(";")[0].strip()
if line == "": continue
keyword, *args = line.lower().split()
match keyword:
@@ -98,8 +98,6 @@ for (lineNo, line) in enumerate(src_lines):
address += 1
-print("labels:", labels)
-
# 2nd pass
address = 0
@@ -122,33 +120,50 @@ for (lineNo, line) in enumerate(src_lines):
# Instructions
case "alu":
+ # S (alu op)
+ # L (lhs)
+ # R (rhs)
+ # T (target)
word = (0b0000 << 12) + \
- (eval_expr(args[0]) << 9) + \
- (eval_expr(args[1]) << 6) + \
- (eval_expr(args[2]) << 3) + \
+ (eval_expr(args[0]) << 3) + \
+ (eval_expr(args[1]) << 9) + \
+ (eval_expr(args[2]) << 6) + \
(eval_expr(args[3]) << 0)
case "als":
+ # S (alu op)
+ # L (lhs)
+ # R (rhs)
+ # T (target)
word = (0b0001 << 12) + \
- (eval_expr(args[0]) << 9) + \
- (eval_expr(args[1]) << 6) + \
- (eval_expr(args[2]) << 3) + \
+ (eval_expr(args[0]) << 3) + \
+ (eval_expr(args[1]) << 9) + \
+ (eval_expr(args[2]) << 6) + \
(eval_expr(args[3]) << 0)
case "ldr":
+ # R (address)
+ # T (target)
word = (0b0010 << 12) + \
(eval_expr(args[0]) << 9) + \
- (eval_expr(args[1]) << 6)
+ (eval_expr(args[1]) << 0)
case "str":
+ # R (address)
+ # T (value to store)
word = (0b0011 << 12) + \
(eval_expr(args[0]) << 9) + \
(eval_expr(args[1]) << 6)
case "ldi":
+ # T (target)
+ # I (immediate)
word = (0b0100 << 12) + \
- (eval_expr(args[0]) << 9) + \
- (eval_expr(args[1]) << 0)
+ (eval_expr(args[0]) << 0) + \
+ (eval_expr(args[1]) << 3)
case "jmp":
+ # R (reg holding address)
word = (0b0101 << 12) + \
(eval_expr(args[0]) << 9)
case "br":
+ # F (flag selector)
+ # R (reg holding address)
word = (0b0110 << 12) + \
(eval_expr(args[0]) << 9) + \
(eval_expr(args[1]) << 6)
@@ -160,20 +175,20 @@ for (lineNo, line) in enumerate(src_lines):
word = (0b0000 << 12) + \
(eval_expr(args[0]) << 9) + \
(eval_expr(args[1]) << 6) + \
- (eval_expr(args[2]) << 3) + \
- (eval_expr("al_a_plus_b") << 0)
+ (eval_expr("al_a_plus_b") << 3) + \
+ (eval_expr(args[2]) << 0)
case "sub":
word = (0b0000 << 12) + \
(eval_expr(args[0]) << 9) + \
(eval_expr(args[1]) << 6) + \
- (eval_expr(args[2]) << 3) + \
- (eval_expr("al_a_minus_b") << 0)
+ (eval_expr("al_a_minus_b") << 3) + \
+ (eval_expr(args[2]) << 0)
case "mov":
word = (0b0000 << 12) + \
(eval_expr("rz") << 9) + \
(eval_expr(args[0]) << 6) + \
- (eval_expr(args[1]) << 3) + \
- (eval_expr("al_a_plus_b") << 0)
+ (eval_expr("al_a_plus_b") << 3) + \
+ (eval_expr(args[1]) << 0)
# Default case: evaluate as is (e.g. data word)
case _:
@@ -185,6 +200,10 @@ for (lineNo, line) in enumerate(src_lines):
if len(result) < 2 * address + 1:
result.extend((2 * address + 1 - len(result)) * nop)
+ for (label, label_addr) in labels.items():
+ if address == label_addr:
+ print(f"{label}:")
+
print(f"{address:>08x} 0x{word:>04x} {line}")
result[2 * address + 0] = ((word >> 8) & 0xff)
result[2 * address + 1] = ((word >> 0) & 0xff)
diff --git a/src/test.atk16 b/src/test.atk16
index 399bd7e..364480b 100644
--- a/src/test.atk16
+++ b/src/test.atk16
@@ -10,7 +10,7 @@
@label program
ldi RA 10 ; RA := 10
- ldi RB 20 ; RB := 10
+ ldi RB 20 ; RB := 20
add RA RB RC ; RC := RA + RB
ldi RD ram_offset ; store address of ram_offset in RD
ldr RD RD ; dereference ram_offset address
diff --git a/src/test_sum.atk16 b/src/test_sum.atk16
new file mode 100644
index 0000000..3f69a55
--- /dev/null
+++ b/src/test_sum.atk16
@@ -0,0 +1,3 @@
+ ldi RA 10 ; RA := 10
+ ldi RB 20 ; RB := 20
+ add RA RB RC ; RC := RA + RB
diff --git a/src/ucode.py b/src/ucode.py
index ea5c040..9d7c55c 100755
--- a/src/ucode.py
+++ b/src/ucode.py
@@ -16,16 +16,16 @@ PC_CO = 0b0000_0000_0000_0001
PC_IE = 0b0000_0000_0000_0010
PC_OE = 0b0000_0000_0000_0100
MAR_IE = 0b0000_0000_0000_1000
-RAM_IE = 0b0000_0000_0001_0000
-RAM_OE = 0b0000_0000_0010_0000
-R1_IE = 0b0000_0000_0100_0000
+MEM_IE = 0b0000_0000_0001_0000
+MEM_OE = 0b0000_0000_0010_0000
+RW_IE = 0b0000_0000_0100_0000
R1_OE = 0b0000_0000_1000_0000
-R2_IE = 0b0000_0001_0000_0000
-R2_OE = 0b0000_0010_0000_0000
-IR_IE = 0b0000_0100_0000_0000
-L9_OE = 0b0000_1000_0000_0000
-L12_OE = 0b0001_0000_0000_0000
-ALU_OE = 0b0010_0000_0000_0000
+R2_OE = 0b0000_0001_0000_0000
+IR_IE = 0b0000_0010_0000_0000
+L9_OE = 0b0000_0100_0000_0000
+unused1 = 0b0000_1000_0000_0000
+ALU_OE = 0b0001_0000_0000_0000
+FR_IE = 0b0010_0000_0000_0000
HALT = 0b0100_0000_0000_0000
US_RS = 0b1000_0000_0000_0000
@@ -39,22 +39,22 @@ def not_branch(bs):
def branch(false_branch, true_branch):
return [false_branch, true_branch]
-fetch = [PC_OE|MAR_IE, RAM_OE|IR_IE|PC_CO]
+fetch = [PC_OE|MAR_IE, MEM_OE|IR_IE|PC_CO]
def nop():
return not_branch([*fetch, US_RS, 0, 0, 0, 0, 0])
ucode = [
- # ALU 0000 LLLR RRTT TSSS
- not_branch([*fetch, ALU_OE, US_RS, 0, 0, 0, 0]),
- # ALS 0001 LLLR RRTT TSSS
- not_branch([*fetch, ALU_OE, US_RS, 0, 0, 0, 0]),
- # LDR 0010 RRRT TTXX XXXX
- not_branch([*fetch, R1_OE|MAR_IE, RAM_OE|R2_IE, US_RS, 0, 0, 0]),
+ # ALU 0000 LLLR RRSS STTT
+ not_branch([*fetch, ALU_OE|FR_IE|RW_IE, US_RS, 0, 0, 0, 0]),
+ # ALS 0001 LLLR RRSS STTT
+ not_branch([*fetch, ALU_OE|FR_IE|RW_IE, US_RS, 0, 0, 0, 0]),
+ # LDR 0010 RRRX XXXX XTTT
+ not_branch([*fetch, R1_OE|MAR_IE, MEM_OE|RW_IE, US_RS, 0, 0, 0]),
# STR 0011 RRRT TTXX XXXX
- not_branch([*fetch, R1_OE|MAR_IE, R2_OE|RAM_IE, US_RS, 0, 0, 0]),
- # LDI 0100 RRRI IIII IIII
- not_branch([*fetch, L9_OE|R1_IE, US_RS, 0, 0, 0, 0]),
+ not_branch([*fetch, R1_OE|MAR_IE, R2_OE|MEM_IE, US_RS, 0, 0, 0]),
+ # LDI 0100 IIII IIII ITTT
+ not_branch([*fetch, H9_OE|RW_IE, US_RS, 0, 0, 0, 0]),
# JMP 0101 RRRX XXXX XXXX
not_branch([*fetch, R1_OE|PC_IE, US_RS, 0, 0, 0, 0]),
# BR 0110 XFFR RRXX XXXX