Sun Nov 6 03:42:35 PM CET 2022

master
Alessandro Mauri 2 years ago
parent ebb053029d
commit 36e87c9e2d
  1. 1
      ABI.md
  2. 1
      BOOT.md
  3. 30
      INSTRUCTIONS.md
  4. 2
      MEMORY_MAP.md
  5. 279
      decode.dig
  6. 146
      main.dig
  7. 282
      pc.dig
  8. 1164
      shift32.dig
  9. 498
      sreg.dig

@ -0,0 +1 @@
# Processor C ABI

@ -0,0 +1 @@
# Processor booting method

@ -80,6 +80,11 @@ action: `A += q; [A] = imm32`
### ADDI ### ADDI
### ADDIC ### ADDIC
### SUB Subtract
### SUBC Subtract with carry
### SUBI Subtract immediate
### SBIC Subtract immediate with carry
### MLA Multiply and add ### MLA Multiply and add
syntax: `MLA A, Ra, Rb, Rc` syntax: `MLA A, Ra, Rb, Rc`
action: `A = Rc + (Ra * Rb)` action: `A = Rc + (Ra * Rb)`
@ -129,11 +134,8 @@ action: `A = F.C + imm + (Ra * Rb)`
syntax: `SMLIAC A, Ra, imm, Rc` syntax: `SMLIAC A, Ra, imm, Rc`
action: `A = F.C + Rc + (Ra * imm)` action: `A = F.C + Rc + (Ra * imm)`
### MUL, MULS, IMUL, MULI, etc.
### SUB Subtract can be macro'd with multiply and adds
### SUBC Subtract with carry
### SUBI Subtract immediate
### SBIC Subtract immediate with carry
### AND ### AND
### ANDI with immediate ### ANDI with immediate
@ -177,6 +179,24 @@ syntax: `RJZS imm`
# Stack manipulation # Stack manipulation
### CALL ### CALL
could be implemented with push/jump
### RCALL ### RCALL
could be implemented with pop/jump
### PUSH ### PUSH
### POP ### POP
# Planned to haves
- 1-cycle shift and add
- 1-cycle intger division
- floating point arithmetic
- interrupts
- atomic compare-and-swap
- atomic load-link/store-conditional
- memory management
- memory-mapped registers
- sine and cosine functions, see [cordic][1]
[1]: https://en.wikipedia.org/wiki/CORDIC

@ -0,0 +1,2 @@
# Register memory map

@ -0,0 +1,279 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>I</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="160" y="380"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>32</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>5,4,4,4,15</string>
</entry>
</elementAttributes>
<pos x="260" y="380"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>r0</string>
</entry>
<entry>
<string>Bits</string>
<int>4</int>
</entry>
</elementAttributes>
<pos x="520" y="400"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>r1</string>
</entry>
<entry>
<string>Bits</string>
<int>4</int>
</entry>
</elementAttributes>
<pos x="520" y="440"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>r2</string>
</entry>
<entry>
<string>Bits</string>
<int>4</int>
</entry>
</elementAttributes>
<pos x="520" y="480"/>
</visualElement>
<visualElement>
<elementName>ROM</elementName>
<elementAttributes>
<entry>
<string>AddrBits</string>
<int>5</int>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
<entry>
<string>Data</string>
<data>1,2,3</data>
</entry>
</elementAttributes>
<pos x="420" y="320"/>
</visualElement>
<visualElement>
<elementName>Const</elementName>
<elementAttributes/>
<pos x="400" y="360"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>o</string>
</entry>
<entry>
<string>intFormat</string>
<intFormat>bin</intFormat>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="520" y="340"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>15</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>4</string>
</entry>
</elementAttributes>
<pos x="460" y="520"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>15</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>5</string>
</entry>
</elementAttributes>
<pos x="460" y="560"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>r4</string>
</entry>
<entry>
<string>Bits</string>
<int>4</int>
</entry>
</elementAttributes>
<pos x="520" y="520"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>i5</string>
</entry>
<entry>
<string>Bits</string>
<int>5</int>
</entry>
</elementAttributes>
<pos x="520" y="560"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>i15</string>
</entry>
<entry>
<string>Bits</string>
<int>15</int>
</entry>
</elementAttributes>
<pos x="520" y="600"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="280" y="400"/>
<p2 x="520" y="400"/>
</wire>
<wire>
<p1 x="320" y="320"/>
<p2 x="420" y="320"/>
</wire>
<wire>
<p1 x="340" y="480"/>
<p2 x="520" y="480"/>
</wire>
<wire>
<p1 x="320" y="560"/>
<p2 x="460" y="560"/>
</wire>
<wire>
<p1 x="480" y="560"/>
<p2 x="520" y="560"/>
</wire>
<wire>
<p1 x="480" y="340"/>
<p2 x="520" y="340"/>
</wire>
<wire>
<p1 x="280" y="420"/>
<p2 x="360" y="420"/>
</wire>
<wire>
<p1 x="320" y="520"/>
<p2 x="460" y="520"/>
</wire>
<wire>
<p1 x="480" y="520"/>
<p2 x="520" y="520"/>
</wire>
<wire>
<p1 x="320" y="600"/>
<p2 x="520" y="600"/>
</wire>
<wire>
<p1 x="400" y="360"/>
<p2 x="420" y="360"/>
</wire>
<wire>
<p1 x="280" y="440"/>
<p2 x="340" y="440"/>
</wire>
<wire>
<p1 x="360" y="440"/>
<p2 x="520" y="440"/>
</wire>
<wire>
<p1 x="160" y="380"/>
<p2 x="260" y="380"/>
</wire>
<wire>
<p1 x="280" y="380"/>
<p2 x="320" y="380"/>
</wire>
<wire>
<p1 x="280" y="460"/>
<p2 x="320" y="460"/>
</wire>
<wire>
<p1 x="320" y="460"/>
<p2 x="320" y="520"/>
</wire>
<wire>
<p1 x="320" y="320"/>
<p2 x="320" y="380"/>
</wire>
<wire>
<p1 x="320" y="520"/>
<p2 x="320" y="560"/>
</wire>
<wire>
<p1 x="320" y="560"/>
<p2 x="320" y="600"/>
</wire>
<wire>
<p1 x="340" y="440"/>
<p2 x="340" y="480"/>
</wire>
<wire>
<p1 x="360" y="420"/>
<p2 x="360" y="440"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

@ -6,14 +6,154 @@
<visualElement> <visualElement>
<elementName>registers.dig</elementName> <elementName>registers.dig</elementName>
<elementAttributes/> <elementAttributes/>
<pos x="580" y="360"/> <pos x="600" y="240"/>
</visualElement> </visualElement>
<visualElement> <visualElement>
<elementName>alu.dig</elementName> <elementName>alu.dig</elementName>
<elementAttributes/> <elementAttributes/>
<pos x="580" y="580"/> <pos x="600" y="640"/>
</visualElement>
<visualElement>
<elementName>sreg.dig</elementName>
<elementAttributes/>
<pos x="600" y="440"/>
</visualElement>
<visualElement>
<elementName>pc.dig</elementName>
<elementAttributes>
<entry>
<string>shapeType</string>
<shapeType>SIMPLE</shapeType>
</entry>
</elementAttributes>
<pos x="-280" y="520"/>
</visualElement>
<visualElement>
<elementName>decode.dig</elementName>
<elementAttributes/>
<pos x="100" y="300"/>
</visualElement>
<visualElement>
<elementName>RAMSinglePort</elementName>
<elementAttributes>
<entry>
<string>AddrBits</string>
<int>16</int>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="-60" y="520"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>32</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>16,16</string>
</entry>
</elementAttributes>
<pos x="-160" y="520"/>
</visualElement>
<visualElement>
<elementName>Register</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>IR</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="100" y="560"/>
</visualElement>
<visualElement>
<elementName>Not</elementName>
<elementAttributes/>
<pos x="-20" y="660"/>
</visualElement> </visualElement>
</visualElements> </visualElements>
<wires/> <wires>
<wire>
<p1 x="0" y="560"/>
<p2 x="100" y="560"/>
</wire>
<wire>
<p1 x="-300" y="580"/>
<p2 x="-280" y="580"/>
</wire>
<wire>
<p1 x="-100" y="580"/>
<p2 x="-60" y="580"/>
</wire>
<wire>
<p1 x="80" y="580"/>
<p2 x="100" y="580"/>
</wire>
<wire>
<p1 x="20" y="660"/>
<p2 x="40" y="660"/>
</wire>
<wire>
<p1 x="-120" y="660"/>
<p2 x="-20" y="660"/>
</wire>
<wire>
<p1 x="-140" y="520"/>
<p2 x="-60" y="520"/>
</wire>
<wire>
<p1 x="-220" y="520"/>
<p2 x="-160" y="520"/>
</wire>
<wire>
<p1 x="-80" y="600"/>
<p2 x="-60" y="600"/>
</wire>
<wire>
<p1 x="40" y="600"/>
<p2 x="100" y="600"/>
</wire>
<wire>
<p1 x="-120" y="540"/>
<p2 x="-60" y="540"/>
</wire>
<wire>
<p1 x="80" y="580"/>
<p2 x="80" y="700"/>
</wire>
<wire>
<p1 x="-100" y="580"/>
<p2 x="-100" y="700"/>
</wire>
<wire>
<p1 x="-120" y="540"/>
<p2 x="-120" y="660"/>
</wire>
<wire>
<p1 x="-120" y="660"/>
<p2 x="-120" y="700"/>
</wire>
<wire>
<p1 x="40" y="600"/>
<p2 x="40" y="660"/>
</wire>
<wire>
<p1 x="-300" y="580"/>
<p2 x="-300" y="700"/>
</wire>
<wire>
<p1 x="-80" y="600"/>
<p2 x="-80" y="700"/>
</wire>
</wires>
<measurementOrdering/> <measurementOrdering/>
</circuit> </circuit>

282
pc.dig

@ -0,0 +1,282 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>Add</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="640" y="340"/>
</visualElement>
<visualElement>
<elementName>Register</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>PC</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="460" y="320"/>
</visualElement>
<visualElement>
<elementName>Multiplexer</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="480" y="500"/>
</visualElement>
<visualElement>
<elementName>Const</elementName>
<elementAttributes>
<entry>
<string>Value</string>
<long>4</long>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="460" y="500"/>
</visualElement>
<visualElement>
<elementName>Const</elementName>
<elementAttributes>
<entry>
<string>Value</string>
<long>0</long>
</entry>
</elementAttributes>
<pos x="620" y="380"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>PC</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="780" y="340"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>O</string>
</entry>
</elementAttributes>
<pos x="780" y="400"/>
</visualElement>
<visualElement>
<elementName>Multiplexer</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="340" y="300"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="260" y="340"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>J</string>
</entry>
</elementAttributes>
<pos x="260" y="380"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>W</string>
</entry>
</elementAttributes>
<pos x="260" y="460"/>
</visualElement>
<visualElement>
<elementName>Clock</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CK</string>
</entry>
</elementAttributes>
<pos x="260" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>RA</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="260" y="540"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>RJ</string>
</entry>
</elementAttributes>
<pos x="260" y="580"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="380" y="320"/>
<p2 x="460" y="320"/>
</wire>
<wire>
<p1 x="320" y="260"/>
<p2 x="720" y="260"/>
</wire>
<wire>
<p1 x="260" y="420"/>
<p2 x="400" y="420"/>
</wire>
<wire>
<p1 x="260" y="580"/>
<p2 x="500" y="580"/>
</wire>
<wire>
<p1 x="540" y="360"/>
<p2 x="640" y="360"/>
</wire>
<wire>
<p1 x="700" y="360"/>
<p2 x="720" y="360"/>
</wire>
<wire>
<p1 x="420" y="360"/>
<p2 x="460" y="360"/>
</wire>
<wire>
<p1 x="520" y="520"/>
<p2 x="540" y="520"/>
</wire>
<wire>
<p1 x="260" y="460"/>
<p2 x="420" y="460"/>
</wire>
<wire>
<p1 x="320" y="300"/>
<p2 x="340" y="300"/>
</wire>
<wire>
<p1 x="720" y="400"/>
<p2 x="780" y="400"/>
</wire>
<wire>
<p1 x="520" y="340"/>
<p2 x="640" y="340"/>
</wire>
<wire>
<p1 x="700" y="340"/>
<p2 x="720" y="340"/>
</wire>
<wire>
<p1 x="260" y="340"/>
<p2 x="340" y="340"/>
</wire>
<wire>
<p1 x="400" y="340"/>
<p2 x="460" y="340"/>
</wire>
<wire>
<p1 x="720" y="340"/>
<p2 x="780" y="340"/>
</wire>
<wire>
<p1 x="460" y="500"/>
<p2 x="480" y="500"/>
</wire>
<wire>
<p1 x="260" y="540"/>
<p2 x="480" y="540"/>
</wire>
<wire>
<p1 x="260" y="380"/>
<p2 x="360" y="380"/>
</wire>
<wire>
<p1 x="620" y="380"/>
<p2 x="640" y="380"/>
</wire>
<wire>
<p1 x="320" y="260"/>
<p2 x="320" y="300"/>
</wire>
<wire>
<p1 x="720" y="260"/>
<p2 x="720" y="340"/>
</wire>
<wire>
<p1 x="720" y="360"/>
<p2 x="720" y="400"/>
</wire>
<wire>
<p1 x="400" y="340"/>
<p2 x="400" y="420"/>
</wire>
<wire>
<p1 x="420" y="360"/>
<p2 x="420" y="460"/>
</wire>
<wire>
<p1 x="500" y="540"/>
<p2 x="500" y="580"/>
</wire>
<wire>
<p1 x="360" y="340"/>
<p2 x="360" y="380"/>
</wire>
<wire>
<p1 x="540" y="360"/>
<p2 x="540" y="520"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,498 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>Register</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>sreg</string>
</entry>
<entry>
<string>Bits</string>
<int>32</int>
</entry>
</elementAttributes>
<pos x="520" y="340"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>1*32</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>32</string>
</entry>
</elementAttributes>
<pos x="340" y="340"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Z_i</string>
</entry>
</elementAttributes>
<pos x="200" y="340"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_i</string>
</entry>
</elementAttributes>
<pos x="200" y="380"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>N_i</string>
</entry>
</elementAttributes>
<pos x="200" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>V_i</string>
</entry>
</elementAttributes>
<pos x="200" y="460"/>
</visualElement>
<visualElement>
<elementName>Const</elementName>
<elementAttributes>
<entry>
<string>Value</string>
<long>0</long>
</entry>
</elementAttributes>
<pos x="280" y="960"/>
</visualElement>
<visualElement>
<elementName>Clock</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CK</string>
</entry>
</elementAttributes>
<pos x="440" y="380"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>w</string>
</entry>
</elementAttributes>
<pos x="440" y="420"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>32</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>1*32</string>
</entry>
</elementAttributes>
<pos x="700" y="360"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Z_o</string>
</entry>
</elementAttributes>
<pos x="840" y="360"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_o</string>
</entry>
</elementAttributes>
<pos x="840" y="400"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>N_o</string>
</entry>
</elementAttributes>
<pos x="840" y="440"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>V_o</string>
</entry>
</elementAttributes>
<pos x="840" y="480"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="280" y="960"/>
<p2 x="320" y="960"/>
</wire>
<wire>
<p1 x="320" y="960"/>
<p2 x="340" y="960"/>
</wire>
<wire>
<p1 x="320" y="640"/>
<p2 x="340" y="640"/>
</wire>
<wire>
<p1 x="320" y="900"/>
<p2 x="340" y="900"/>
</wire>
<wire>
<p1 x="320" y="580"/>
<p2 x="340" y="580"/>
</wire>
<wire>
<p1 x="320" y="840"/>
<p2 x="340" y="840"/>
</wire>
<wire>
<p1 x="320" y="520"/>
<p2 x="340" y="520"/>
</wire>
<wire>
<p1 x="200" y="460"/>
<p2 x="260" y="460"/>
</wire>
<wire>
<p1 x="320" y="460"/>
<p2 x="340" y="460"/>
</wire>
<wire>
<p1 x="320" y="780"/>
<p2 x="340" y="780"/>
</wire>
<wire>
<p1 x="260" y="400"/>
<p2 x="340" y="400"/>
</wire>
<wire>
<p1 x="820" y="400"/>
<p2 x="840" y="400"/>
</wire>
<wire>
<p1 x="720" y="400"/>
<p2 x="800" y="400"/>
</wire>
<wire>
<p1 x="320" y="720"/>
<p2 x="340" y="720"/>
</wire>
<wire>
<p1 x="200" y="340"/>
<p2 x="340" y="340"/>
</wire>
<wire>
<p1 x="360" y="340"/>
<p2 x="520" y="340"/>
</wire>
<wire>
<p1 x="320" y="660"/>
<p2 x="340" y="660"/>
</wire>
<wire>
<p1 x="320" y="920"/>
<p2 x="340" y="920"/>
</wire>
<wire>
<p1 x="320" y="600"/>
<p2 x="340" y="600"/>
</wire>
<wire>
<p1 x="320" y="860"/>
<p2 x="340" y="860"/>
</wire>
<wire>
<p1 x="320" y="540"/>
<p2 x="340" y="540"/>
</wire>
<wire>
<p1 x="320" y="800"/>
<p2 x="340" y="800"/>
</wire>
<wire>
<p1 x="320" y="480"/>
<p2 x="340" y="480"/>
</wire>
<wire>
<p1 x="780" y="480"/>
<p2 x="840" y="480"/>
</wire>
<wire>
<p1 x="200" y="420"/>
<p2 x="240" y="420"/>
</wire>
<wire>
<p1 x="320" y="420"/>
<p2 x="340" y="420"/>
</wire>
<wire>
<p1 x="440" y="420"/>
<p2 x="480" y="420"/>
</wire>
<wire>
<p1 x="720" y="420"/>
<p2 x="780" y="420"/>
</wire>
<wire>
<p1 x="320" y="740"/>
<p2 x="340" y="740"/>
</wire>
<wire>
<p1 x="220" y="360"/>
<p2 x="340" y="360"/>
</wire>
<wire>
<p1 x="460" y="360"/>
<p2 x="520" y="360"/>
</wire>
<wire>
<p1 x="720" y="360"/>
<p2 x="840" y="360"/>
</wire>
<wire>
<p1 x="580" y="360"/>
<p2 x="700" y="360"/>
</wire>
<wire>
<p1 x="320" y="680"/>
<p2 x="340" y="680"/>
</wire>
<wire>
<p1 x="320" y="940"/>
<p2 x="340" y="940"/>
</wire>
<wire>
<p1 x="320" y="620"/>
<p2 x="340" y="620"/>
</wire>
<wire>
<p1 x="320" y="880"/>
<p2 x="340" y="880"/>
</wire>
<wire>
<p1 x="320" y="560"/>
<p2 x="340" y="560"/>
</wire>
<wire>
<p1 x="320" y="820"/>
<p2 x="340" y="820"/>
</wire>
<wire>
<p1 x="320" y="500"/>
<p2 x="340" y="500"/>
</wire>
<wire>
<p1 x="320" y="760"/>
<p2 x="340" y="760"/>
</wire>
<wire>
<p1 x="320" y="440"/>
<p2 x="340" y="440"/>
</wire>
<wire>
<p1 x="800" y="440"/>
<p2 x="840" y="440"/>
</wire>
<wire>
<p1 x="200" y="380"/>
<p2 x="220" y="380"/>
</wire>
<wire>
<p1 x="240" y="380"/>
<p2 x="340" y="380"/>
</wire>
<wire>
<p1 x="440" y="380"/>
<p2 x="460" y="380"/>
</wire>
<wire>
<p1 x="480" y="380"/>
<p2 x="520" y="380"/>
</wire>
<wire>
<p1 x="720" y="380"/>
<p2 x="820" y="380"/>
</wire>
<wire>
<p1 x="320" y="700"/>
<p2 x="340" y="700"/>
</wire>
<wire>
<p1 x="240" y="380"/>
<p2 x="240" y="420"/>
</wire>
<wire>
<p1 x="320" y="420"/>
<p2 x="320" y="440"/>
</wire>
<wire>
<p1 x="320" y="580"/>
<p2 x="320" y="600"/>
</wire>
<wire>
<p1 x="320" y="840"/>
<p2 x="320" y="860"/>
</wire>
<wire>
<p1 x="320" y="600"/>
<p2 x="320" y="620"/>
</wire>
<wire>
<p1 x="320" y="860"/>
<p2 x="320" y="880"/>
</wire>
<wire>
<p1 x="320" y="620"/>
<p2 x="320" y="640"/>
</wire>
<wire>
<p1 x="320" y="880"/>
<p2 x="320" y="900"/>
</wire>
<wire>
<p1 x="320" y="640"/>
<p2 x="320" y="660"/>
</wire>
<wire>
<p1 x="320" y="900"/>
<p2 x="320" y="920"/>
</wire>
<wire>
<p1 x="320" y="660"/>
<p2 x="320" y="680"/>
</wire>
<wire>
<p1 x="320" y="920"/>
<p2 x="320" y="940"/>
</wire>
<wire>
<p1 x="320" y="680"/>
<p2 x="320" y="700"/>
</wire>
<wire>
<p1 x="320" y="940"/>
<p2 x="320" y="960"/>
</wire>
<wire>
<p1 x="320" y="440"/>
<p2 x="320" y="460"/>
</wire>
<wire>
<p1 x="320" y="700"/>
<p2 x="320" y="720"/>
</wire>
<wire>
<p1 x="320" y="460"/>
<p2 x="320" y="480"/>
</wire>
<wire>
<p1 x="320" y="720"/>
<p2 x="320" y="740"/>
</wire>
<wire>
<p1 x="320" y="480"/>
<p2 x="320" y="500"/>
</wire>
<wire>
<p1 x="320" y="740"/>
<p2 x="320" y="760"/>
</wire>
<wire>
<p1 x="320" y="500"/>
<p2 x="320" y="520"/>
</wire>
<wire>
<p1 x="320" y="760"/>
<p2 x="320" y="780"/>
</wire>
<wire>
<p1 x="320" y="520"/>
<p2 x="320" y="540"/>
</wire>
<wire>
<p1 x="320" y="780"/>
<p2 x="320" y="800"/>
</wire>
<wire>
<p1 x="320" y="540"/>
<p2 x="320" y="560"/>
</wire>
<wire>
<p1 x="320" y="800"/>
<p2 x="320" y="820"/>
</wire>
<wire>
<p1 x="320" y="560"/>
<p2 x="320" y="580"/>
</wire>
<wire>
<p1 x="320" y="820"/>
<p2 x="320" y="840"/>
</wire>
<wire>
<p1 x="480" y="380"/>
<p2 x="480" y="420"/>
</wire>
<wire>
<p1 x="800" y="400"/>
<p2 x="800" y="440"/>
</wire>
<wire>
<p1 x="260" y="400"/>
<p2 x="260" y="460"/>
</wire>
<wire>
<p1 x="820" y="380"/>
<p2 x="820" y="400"/>
</wire>
<wire>
<p1 x="220" y="360"/>
<p2 x="220" y="380"/>
</wire>
<wire>
<p1 x="460" y="360"/>
<p2 x="460" y="380"/>
</wire>
<wire>
<p1 x="780" y="420"/>
<p2 x="780" y="480"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>
Loading…
Cancel
Save