diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-08 17:20:32 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-08 17:20:32 +0300 |
| commit | 5ab9865fa6ed343ae0cffefb81b20af2e533e36f (patch) | |
| tree | 57949a3b8335cdf58234e366e50701a19bd6c21d | |
| parent | 10e0c53890701abe53c80f1da4a0b64bbd05914c (diff) | |
Move from logisim to digital
| -rw-r--r-- | .vscode/launch.json | 2 | ||||
| -rw-r--r-- | digital/atk16.dig | 1418 | ||||
| -rw-r--r-- | digital/atk16_alu.dig | 1240 | ||||
| -rw-r--r-- | digital/atk16_decoder.dig | 402 | ||||
| -rw-r--r-- | digital/atk16_mem.dig | 461 | ||||
| -rw-r--r-- | digital/atk16_regbank.dig | 1300 | ||||
| -rw-r--r-- | high-level-lang-idea.perl | 36 | ||||
| -rwxr-xr-x | src/assembler.py | 57 | ||||
| -rw-r--r-- | src/test.atk16 | 2 | ||||
| -rw-r--r-- | src/test_sum.atk16 | 3 | ||||
| -rwxr-xr-x | src/ucode.py | 38 |
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 |
