added some cmos adders. 10T and SERF are not working

This commit is contained in:
hneemann 2017-06-22 17:36:41 +02:00
parent f56946feaf
commit 08f92d2e5c
6 changed files with 1615 additions and 5 deletions

198
src/main/dig/cmos/xor.dig Normal file
View File

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
</elementAttributes>
<pos x="240" y="300"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>B</string>
</entry>
</elementAttributes>
<pos x="420" y="220"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="300" y="240"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="300" y="320"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="320" y="220"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="320" y="380"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="460" y="160"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="460" y="240"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Y</string>
</entry>
</elementAttributes>
<pos x="500" y="220"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Testdata</string>
<testData>
<dataString>A B Y
0 0 0
0 1 1
1 0 1
1 1 0
# transitions
0 0 0
0 1 1
0 0 0
1 0 1
0 0 0
1 1 0
0 0 0
0 1 1
1 0 1
0 1 1
1 1 0
0 1 1
1 0 1
1 1 0
1 0 1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="460" y="320"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="280" y="240"/>
<p2 x="300" y="240"/>
</wire>
<wire>
<p1 x="440" y="160"/>
<p2 x="460" y="160"/>
</wire>
<wire>
<p1 x="440" y="280"/>
<p2 x="460" y="280"/>
</wire>
<wire>
<p1 x="280" y="360"/>
<p2 x="300" y="360"/>
</wire>
<wire>
<p1 x="260" y="140"/>
<p2 x="480" y="140"/>
</wire>
<wire>
<p1 x="420" y="220"/>
<p2 x="440" y="220"/>
</wire>
<wire>
<p1 x="480" y="220"/>
<p2 x="500" y="220"/>
</wire>
<wire>
<p1 x="240" y="300"/>
<p2 x="260" y="300"/>
</wire>
<wire>
<p1 x="320" y="300"/>
<p2 x="480" y="300"/>
</wire>
<wire>
<p1 x="260" y="300"/>
<p2 x="280" y="300"/>
</wire>
<wire>
<p1 x="320" y="280"/>
<p2 x="320" y="300"/>
</wire>
<wire>
<p1 x="320" y="220"/>
<p2 x="320" y="240"/>
</wire>
<wire>
<p1 x="320" y="360"/>
<p2 x="320" y="380"/>
</wire>
<wire>
<p1 x="320" y="300"/>
<p2 x="320" y="320"/>
</wire>
<wire>
<p1 x="480" y="200"/>
<p2 x="480" y="220"/>
</wire>
<wire>
<p1 x="480" y="140"/>
<p2 x="480" y="160"/>
</wire>
<wire>
<p1 x="480" y="280"/>
<p2 x="480" y="300"/>
</wire>
<wire>
<p1 x="480" y="220"/>
<p2 x="480" y="240"/>
</wire>
<wire>
<p1 x="260" y="140"/>
<p2 x="260" y="300"/>
</wire>
<wire>
<p1 x="440" y="160"/>
<p2 x="440" y="220"/>
</wire>
<wire>
<p1 x="440" y="220"/>
<p2 x="440" y="280"/>
</wire>
<wire>
<p1 x="280" y="240"/>
<p2 x="280" y="300"/>
</wire>
<wire>
<p1 x="280" y="300"/>
<p2 x="280" y="360"/>
</wire>
</wires>
</circuit>

View File

@ -28,8 +28,8 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(188, new FileScanner(this::check).scan(examples));
assertEquals(87, testCasesInFiles);
assertEquals(189, new FileScanner(this::check).scan(examples));
assertEquals(88, testCasesInFiles);
}
/**
@ -39,8 +39,8 @@ public class TestExamples extends TestCase {
*/
public void testTestExamples() throws Exception {
File examples = new File(Resources.getRoot(), "/dig/test");
assertEquals(74, new FileScanner(this::check).scan(examples));
assertEquals(68, testCasesInFiles);
assertEquals(77, new FileScanner(this::check).scan(examples));
assertEquals(71, testCasesInFiles);
}

View File

@ -0,0 +1,477 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>Description</string>
<string>10 Transistor Full Adder</string>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
</elementAttributes>
<pos x="760" y="280"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>B</string>
</entry>
</elementAttributes>
<pos x="760" y="320"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>S</string>
</entry>
</elementAttributes>
<pos x="1180" y="320"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_o</string>
</entry>
</elementAttributes>
<pos x="1180" y="540"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Failing</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString> A B C_i C_o S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
# transitions
0 0 0 0 0
0 0 1 0 1
0 0 0 0 0
0 1 0 0 1
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
1 0 1 1 0
0 0 0 0 0
1 1 0 1 0
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 0 1 0 1
0 1 1 1 0
0 0 1 0 1
1 0 0 0 1
0 0 1 0 1
1 0 1 1 0
0 0 1 0 1
1 1 0 1 0
0 0 1 0 1
1 1 1 1 1
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
0 1 0 0 1
1 0 0 0 1
0 1 0 0 1
1 0 1 1 0
0 1 0 0 1
1 1 0 1 0
0 1 0 0 1
1 1 1 1 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
0 1 1 1 0
1 0 1 1 0
0 1 1 1 0
1 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 0 0 0 1
1 1 0 1 0
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 0 1 1 0
1 1 1 1 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
1 1 0 1 0
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="780" y="560"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="840" y="320"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="900" y="320"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="860" y="400"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="860" y="460"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="880" y="520"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1000" y="380"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1000" y="460"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1140" y="340"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1140" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_i</string>
</entry>
</elementAttributes>
<pos x="1080" y="320"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1140" y="560"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1140" y="480"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="1020" y="520"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="1020" y="360"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="760" y="320"/>
<p2 x="800" y="320"/>
</wire>
<wire>
<p1 x="1160" y="320"/>
<p2 x="1180" y="320"/>
</wire>
<wire>
<p1 x="1080" y="320"/>
<p2 x="1100" y="320"/>
</wire>
<wire>
<p1 x="880" y="320"/>
<p2 x="900" y="320"/>
</wire>
<wire>
<p1 x="800" y="320"/>
<p2 x="840" y="320"/>
</wire>
<wire>
<p1 x="1100" y="320"/>
<p2 x="1120" y="320"/>
</wire>
<wire>
<p1 x="960" y="240"/>
<p2 x="1160" y="240"/>
</wire>
<wire>
<p1 x="1120" y="480"/>
<p2 x="1140" y="480"/>
</wire>
<wire>
<p1 x="800" y="260"/>
<p2 x="920" y="260"/>
</wire>
<wire>
<p1 x="1120" y="260"/>
<p2 x="1140" y="260"/>
</wire>
<wire>
<p1 x="780" y="500"/>
<p2 x="860" y="500"/>
</wire>
<wire>
<p1 x="980" y="500"/>
<p2 x="1000" y="500"/>
</wire>
<wire>
<p1 x="760" y="280"/>
<p2 x="780" y="280"/>
</wire>
<wire>
<p1 x="780" y="280"/>
<p2 x="860" y="280"/>
</wire>
<wire>
<p1 x="860" y="280"/>
<p2 x="880" y="280"/>
</wire>
<wire>
<p1 x="800" y="440"/>
<p2 x="860" y="440"/>
</wire>
<wire>
<p1 x="960" y="440"/>
<p2 x="980" y="440"/>
</wire>
<wire>
<p1 x="1020" y="440"/>
<p2 x="1060" y="440"/>
</wire>
<wire>
<p1 x="1060" y="440"/>
<p2 x="1160" y="440"/>
</wire>
<wire>
<p1 x="1120" y="600"/>
<p2 x="1140" y="600"/>
</wire>
<wire>
<p1 x="980" y="380"/>
<p2 x="1000" y="380"/>
</wire>
<wire>
<p1 x="860" y="380"/>
<p2 x="880" y="380"/>
</wire>
<wire>
<p1 x="1120" y="380"/>
<p2 x="1140" y="380"/>
</wire>
<wire>
<p1 x="880" y="380"/>
<p2 x="920" y="380"/>
</wire>
<wire>
<p1 x="920" y="380"/>
<p2 x="960" y="380"/>
</wire>
<wire>
<p1 x="1160" y="540"/>
<p2 x="1180" y="540"/>
</wire>
<wire>
<p1 x="1060" y="540"/>
<p2 x="1120" y="540"/>
</wire>
<wire>
<p1 x="1100" y="460"/>
<p2 x="1160" y="460"/>
</wire>
<wire>
<p1 x="780" y="620"/>
<p2 x="1160" y="620"/>
</wire>
<wire>
<p1 x="800" y="260"/>
<p2 x="800" y="280"/>
</wire>
<wire>
<p1 x="800" y="320"/>
<p2 x="800" y="440"/>
</wire>
<wire>
<p1 x="800" y="280"/>
<p2 x="800" y="320"/>
</wire>
<wire>
<p1 x="880" y="280"/>
<p2 x="880" y="320"/>
</wire>
<wire>
<p1 x="880" y="380"/>
<p2 x="880" y="400"/>
</wire>
<wire>
<p1 x="880" y="440"/>
<p2 x="880" y="460"/>
</wire>
<wire>
<p1 x="880" y="500"/>
<p2 x="880" y="520"/>
</wire>
<wire>
<p1 x="960" y="240"/>
<p2 x="960" y="380"/>
</wire>
<wire>
<p1 x="960" y="380"/>
<p2 x="960" y="440"/>
</wire>
<wire>
<p1 x="1120" y="260"/>
<p2 x="1120" y="320"/>
</wire>
<wire>
<p1 x="1120" y="480"/>
<p2 x="1120" y="540"/>
</wire>
<wire>
<p1 x="1120" y="540"/>
<p2 x="1120" y="600"/>
</wire>
<wire>
<p1 x="1120" y="320"/>
<p2 x="1120" y="380"/>
</wire>
<wire>
<p1 x="980" y="380"/>
<p2 x="980" y="440"/>
</wire>
<wire>
<p1 x="980" y="440"/>
<p2 x="980" y="500"/>
</wire>
<wire>
<p1 x="1060" y="440"/>
<p2 x="1060" y="540"/>
</wire>
<wire>
<p1 x="920" y="260"/>
<p2 x="920" y="320"/>
</wire>
<wire>
<p1 x="920" y="360"/>
<p2 x="920" y="380"/>
</wire>
<wire>
<p1 x="1160" y="300"/>
<p2 x="1160" y="320"/>
</wire>
<wire>
<p1 x="1160" y="240"/>
<p2 x="1160" y="260"/>
</wire>
<wire>
<p1 x="1160" y="380"/>
<p2 x="1160" y="440"/>
</wire>
<wire>
<p1 x="1160" y="520"/>
<p2 x="1160" y="540"/>
</wire>
<wire>
<p1 x="1160" y="460"/>
<p2 x="1160" y="480"/>
</wire>
<wire>
<p1 x="1160" y="600"/>
<p2 x="1160" y="620"/>
</wire>
<wire>
<p1 x="1160" y="540"/>
<p2 x="1160" y="560"/>
</wire>
<wire>
<p1 x="1160" y="320"/>
<p2 x="1160" y="340"/>
</wire>
<wire>
<p1 x="860" y="360"/>
<p2 x="860" y="380"/>
</wire>
<wire>
<p1 x="860" y="280"/>
<p2 x="860" y="320"/>
</wire>
<wire>
<p1 x="780" y="280"/>
<p2 x="780" y="500"/>
</wire>
<wire>
<p1 x="780" y="500"/>
<p2 x="780" y="620"/>
</wire>
<wire>
<p1 x="1020" y="420"/>
<p2 x="1020" y="440"/>
</wire>
<wire>
<p1 x="1020" y="500"/>
<p2 x="1020" y="520"/>
</wire>
<wire>
<p1 x="1020" y="360"/>
<p2 x="1020" y="380"/>
</wire>
<wire>
<p1 x="1020" y="440"/>
<p2 x="1020" y="460"/>
</wire>
<wire>
<p1 x="1100" y="320"/>
<p2 x="1100" y="460"/>
</wire>
</wires>
</circuit>

View File

@ -0,0 +1,474 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>Description</string>
<string>Gate Diffusion Input (GDI) Full Adder</string>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
</elementAttributes>
<pos x="700" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>B</string>
</entry>
</elementAttributes>
<pos x="860" y="320"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="760" y="360"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="760" y="440"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="780" y="340"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="780" y="500"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="900" y="260"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="900" y="340"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1100" y="300"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1100" y="380"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1100" y="560"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1100" y="480"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
<string>Label</string>
<string>C_i</string>
</entry>
</elementAttributes>
<pos x="1040" y="340"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="980" y="380"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="980" y="460"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="1000" y="360"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="1000" y="520"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>S</string>
</entry>
</elementAttributes>
<pos x="1160" y="360"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_o</string>
</entry>
</elementAttributes>
<pos x="1160" y="540"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Testdata</string>
<testData>
<dataString> A B C_i C_o S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
# transitions
0 0 0 0 0
0 0 1 0 1
0 0 0 0 0
0 1 0 0 1
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
1 0 1 1 0
0 0 0 0 0
1 1 0 1 0
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 0 1 0 1
0 1 1 1 0
0 0 1 0 1
1 0 0 0 1
0 0 1 0 1
1 0 1 1 0
0 0 1 0 1
1 1 0 1 0
0 0 1 0 1
1 1 1 1 1
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
0 1 0 0 1
1 0 0 0 1
0 1 0 0 1
1 0 1 1 0
0 1 0 0 1
1 1 0 1 0
0 1 0 0 1
1 1 1 1 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
0 1 1 1 0
1 0 1 1 0
0 1 1 1 0
1 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 0 0 0 1
1 1 0 1 0
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 0 1 1 0
1 1 1 1 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
1 1 0 1 0
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="800" y="520"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="740" y="480"/>
<p2 x="760" y="480"/>
</wire>
<wire>
<p1 x="860" y="320"/>
<p2 x="880" y="320"/>
</wire>
<wire>
<p1 x="920" y="320"/>
<p2 x="940" y="320"/>
</wire>
<wire>
<p1 x="700" y="420"/>
<p2 x="720" y="420"/>
</wire>
<wire>
<p1 x="780" y="420"/>
<p2 x="920" y="420"/>
</wire>
<wire>
<p1 x="1080" y="420"/>
<p2 x="1100" y="420"/>
</wire>
<wire>
<p1 x="720" y="420"/>
<p2 x="740" y="420"/>
</wire>
<wire>
<p1 x="880" y="260"/>
<p2 x="900" y="260"/>
</wire>
<wire>
<p1 x="1080" y="520"/>
<p2 x="1100" y="520"/>
</wire>
<wire>
<p1 x="740" y="360"/>
<p2 x="760" y="360"/>
</wire>
<wire>
<p1 x="1040" y="360"/>
<p2 x="1080" y="360"/>
</wire>
<wire>
<p1 x="1120" y="360"/>
<p2 x="1160" y="360"/>
</wire>
<wire>
<p1 x="1040" y="460"/>
<p2 x="1120" y="460"/>
</wire>
<wire>
<p1 x="720" y="620"/>
<p2 x="1120" y="620"/>
</wire>
<wire>
<p1 x="1080" y="300"/>
<p2 x="1100" y="300"/>
</wire>
<wire>
<p1 x="720" y="240"/>
<p2 x="920" y="240"/>
</wire>
<wire>
<p1 x="940" y="240"/>
<p2 x="1120" y="240"/>
</wire>
<wire>
<p1 x="1080" y="560"/>
<p2 x="1100" y="560"/>
</wire>
<wire>
<p1 x="960" y="500"/>
<p2 x="980" y="500"/>
</wire>
<wire>
<p1 x="940" y="440"/>
<p2 x="960" y="440"/>
</wire>
<wire>
<p1 x="1000" y="440"/>
<p2 x="1120" y="440"/>
</wire>
<wire>
<p1 x="960" y="380"/>
<p2 x="980" y="380"/>
</wire>
<wire>
<p1 x="880" y="380"/>
<p2 x="900" y="380"/>
</wire>
<wire>
<p1 x="940" y="540"/>
<p2 x="1080" y="540"/>
</wire>
<wire>
<p1 x="1120" y="540"/>
<p2 x="1160" y="540"/>
</wire>
<wire>
<p1 x="880" y="260"/>
<p2 x="880" y="320"/>
</wire>
<wire>
<p1 x="880" y="320"/>
<p2 x="880" y="380"/>
</wire>
<wire>
<p1 x="960" y="380"/>
<p2 x="960" y="440"/>
</wire>
<wire>
<p1 x="960" y="440"/>
<p2 x="960" y="500"/>
</wire>
<wire>
<p1 x="1120" y="340"/>
<p2 x="1120" y="360"/>
</wire>
<wire>
<p1 x="1120" y="420"/>
<p2 x="1120" y="440"/>
</wire>
<wire>
<p1 x="1120" y="520"/>
<p2 x="1120" y="540"/>
</wire>
<wire>
<p1 x="1120" y="600"/>
<p2 x="1120" y="620"/>
</wire>
<wire>
<p1 x="1120" y="460"/>
<p2 x="1120" y="480"/>
</wire>
<wire>
<p1 x="1120" y="240"/>
<p2 x="1120" y="300"/>
</wire>
<wire>
<p1 x="1120" y="360"/>
<p2 x="1120" y="380"/>
</wire>
<wire>
<p1 x="1120" y="540"/>
<p2 x="1120" y="560"/>
</wire>
<wire>
<p1 x="1040" y="340"/>
<p2 x="1040" y="360"/>
</wire>
<wire>
<p1 x="1040" y="360"/>
<p2 x="1040" y="460"/>
</wire>
<wire>
<p1 x="720" y="240"/>
<p2 x="720" y="420"/>
</wire>
<wire>
<p1 x="720" y="420"/>
<p2 x="720" y="620"/>
</wire>
<wire>
<p1 x="740" y="360"/>
<p2 x="740" y="420"/>
</wire>
<wire>
<p1 x="740" y="420"/>
<p2 x="740" y="480"/>
</wire>
<wire>
<p1 x="920" y="300"/>
<p2 x="920" y="320"/>
</wire>
<wire>
<p1 x="920" y="240"/>
<p2 x="920" y="260"/>
</wire>
<wire>
<p1 x="920" y="380"/>
<p2 x="920" y="420"/>
</wire>
<wire>
<p1 x="920" y="320"/>
<p2 x="920" y="340"/>
</wire>
<wire>
<p1 x="1080" y="300"/>
<p2 x="1080" y="360"/>
</wire>
<wire>
<p1 x="1080" y="520"/>
<p2 x="1080" y="540"/>
</wire>
<wire>
<p1 x="1080" y="360"/>
<p2 x="1080" y="420"/>
</wire>
<wire>
<p1 x="1080" y="540"/>
<p2 x="1080" y="560"/>
</wire>
<wire>
<p1 x="1000" y="420"/>
<p2 x="1000" y="440"/>
</wire>
<wire>
<p1 x="1000" y="360"/>
<p2 x="1000" y="380"/>
</wire>
<wire>
<p1 x="1000" y="500"/>
<p2 x="1000" y="520"/>
</wire>
<wire>
<p1 x="1000" y="440"/>
<p2 x="1000" y="460"/>
</wire>
<wire>
<p1 x="780" y="400"/>
<p2 x="780" y="420"/>
</wire>
<wire>
<p1 x="780" y="340"/>
<p2 x="780" y="360"/>
</wire>
<wire>
<p1 x="780" y="480"/>
<p2 x="780" y="500"/>
</wire>
<wire>
<p1 x="780" y="420"/>
<p2 x="780" y="440"/>
</wire>
<wire>
<p1 x="940" y="240"/>
<p2 x="940" y="320"/>
</wire>
<wire>
<p1 x="940" y="440"/>
<p2 x="940" y="540"/>
</wire>
<wire>
<p1 x="940" y="320"/>
<p2 x="940" y="440"/>
</wire>
</wires>
</circuit>

View File

@ -1,7 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<attributes>
<entry>
<string>Description</string>
<string>CMOS mirror adder</string>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>PFET</elementName>

View File

@ -0,0 +1,456 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>Description</string>
<string>Static Energy Recovery Full Adder (SERF)</string>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
</elementAttributes>
<pos x="740" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>B</string>
</entry>
</elementAttributes>
<pos x="740" y="320"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="840" y="320"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="800" y="400"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="840" y="260"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="880" y="400"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1080" y="320"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1120" y="660"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1080" y="380"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1120" y="460"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_i</string>
</entry>
</elementAttributes>
<pos x="920" y="560"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="1120" y="580"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="1040" y="460"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>S</string>
</entry>
</elementAttributes>
<pos x="1180" y="440"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C_o</string>
</entry>
</elementAttributes>
<pos x="1180" y="640"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Failing</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString> A B C_i C_o S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
# transitions
0 0 0 0 0
0 0 1 0 1
0 0 0 0 0
0 1 0 0 1
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
1 0 1 1 0
0 0 0 0 0
1 1 0 1 0
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 0 1 0 1
0 1 1 1 0
0 0 1 0 1
1 0 0 0 1
0 0 1 0 1
1 0 1 1 0
0 0 1 0 1
1 1 0 1 0
0 0 1 0 1
1 1 1 1 1
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
0 1 0 0 1
1 0 0 0 1
0 1 0 0 1
1 0 1 1 0
0 1 0 0 1
1 1 0 1 0
0 1 0 0 1
1 1 1 1 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
0 1 1 1 0
1 0 1 1 0
0 1 1 1 0
1 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 0 0 0 1
1 1 0 1 0
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 0 1 1 0
1 1 1 1 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
1 1 0 1 0
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="760" y="660"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="860" y="240"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="1100" y="300"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="740" y="320"/>
<p2 x="780" y="320"/>
</wire>
<wire>
<p1 x="960" y="320"/>
<p2 x="1080" y="320"/>
</wire>
<wire>
<p1 x="780" y="320"/>
<p2 x="840" y="320"/>
</wire>
<wire>
<p1 x="780" y="480"/>
<p2 x="900" y="480"/>
</wire>
<wire>
<p1 x="1140" y="640"/>
<p2 x="1180" y="640"/>
</wire>
<wire>
<p1 x="1020" y="640"/>
<p2 x="1100" y="640"/>
</wire>
<wire>
<p1 x="740" y="260"/>
<p2 x="760" y="260"/>
</wire>
<wire>
<p1 x="760" y="260"/>
<p2 x="840" y="260"/>
</wire>
<wire>
<p1 x="1100" y="580"/>
<p2 x="1120" y="580"/>
</wire>
<wire>
<p1 x="960" y="520"/>
<p2 x="1060" y="520"/>
</wire>
<wire>
<p1 x="1060" y="520"/>
<p2 x="1100" y="520"/>
</wire>
<wire>
<p1 x="760" y="460"/>
<p2 x="820" y="460"/>
</wire>
<wire>
<p1 x="820" y="460"/>
<p2 x="860" y="460"/>
</wire>
<wire>
<p1 x="920" y="560"/>
<p2 x="960" y="560"/>
</wire>
<wire>
<p1 x="960" y="560"/>
<p2 x="1140" y="560"/>
</wire>
<wire>
<p1 x="760" y="720"/>
<p2 x="1140" y="720"/>
</wire>
<wire>
<p1 x="1100" y="500"/>
<p2 x="1120" y="500"/>
</wire>
<wire>
<p1 x="1020" y="500"/>
<p2 x="1040" y="500"/>
</wire>
<wire>
<p1 x="860" y="440"/>
<p2 x="880" y="440"/>
</wire>
<wire>
<p1 x="780" y="440"/>
<p2 x="800" y="440"/>
</wire>
<wire>
<p1 x="1060" y="440"/>
<p2 x="1100" y="440"/>
</wire>
<wire>
<p1 x="1140" y="440"/>
<p2 x="1180" y="440"/>
</wire>
<wire>
<p1 x="1100" y="440"/>
<p2 x="1140" y="440"/>
</wire>
<wire>
<p1 x="1100" y="700"/>
<p2 x="1120" y="700"/>
</wire>
<wire>
<p1 x="820" y="380"/>
<p2 x="860" y="380"/>
</wire>
<wire>
<p1 x="1020" y="380"/>
<p2 x="1080" y="380"/>
</wire>
<wire>
<p1 x="860" y="380"/>
<p2 x="900" y="380"/>
</wire>
<wire>
<p1 x="900" y="380"/>
<p2 x="1020" y="380"/>
</wire>
<wire>
<p1 x="1020" y="540"/>
<p2 x="1140" y="540"/>
</wire>
<wire>
<p1 x="960" y="320"/>
<p2 x="960" y="520"/>
</wire>
<wire>
<p1 x="960" y="520"/>
<p2 x="960" y="560"/>
</wire>
<wire>
<p1 x="820" y="440"/>
<p2 x="820" y="460"/>
</wire>
<wire>
<p1 x="820" y="380"/>
<p2 x="820" y="400"/>
</wire>
<wire>
<p1 x="900" y="440"/>
<p2 x="900" y="480"/>
</wire>
<wire>
<p1 x="900" y="380"/>
<p2 x="900" y="400"/>
</wire>
<wire>
<p1 x="1140" y="440"/>
<p2 x="1140" y="460"/>
</wire>
<wire>
<p1 x="1140" y="500"/>
<p2 x="1140" y="540"/>
</wire>
<wire>
<p1 x="1140" y="620"/>
<p2 x="1140" y="640"/>
</wire>
<wire>
<p1 x="1140" y="700"/>
<p2 x="1140" y="720"/>
</wire>
<wire>
<p1 x="1140" y="560"/>
<p2 x="1140" y="580"/>
</wire>
<wire>
<p1 x="1140" y="640"/>
<p2 x="1140" y="660"/>
</wire>
<wire>
<p1 x="1060" y="440"/>
<p2 x="1060" y="460"/>
</wire>
<wire>
<p1 x="1060" y="500"/>
<p2 x="1060" y="520"/>
</wire>
<wire>
<p1 x="760" y="260"/>
<p2 x="760" y="460"/>
</wire>
<wire>
<p1 x="760" y="460"/>
<p2 x="760" y="720"/>
</wire>
<wire>
<p1 x="1100" y="580"/>
<p2 x="1100" y="640"/>
</wire>
<wire>
<p1 x="1100" y="360"/>
<p2 x="1100" y="380"/>
</wire>
<wire>
<p1 x="1100" y="300"/>
<p2 x="1100" y="320"/>
</wire>
<wire>
<p1 x="1100" y="420"/>
<p2 x="1100" y="440"/>
</wire>
<wire>
<p1 x="1100" y="500"/>
<p2 x="1100" y="520"/>
</wire>
<wire>
<p1 x="1100" y="640"/>
<p2 x="1100" y="700"/>
</wire>
<wire>
<p1 x="860" y="300"/>
<p2 x="860" y="320"/>
</wire>
<wire>
<p1 x="860" y="240"/>
<p2 x="860" y="260"/>
</wire>
<wire>
<p1 x="860" y="440"/>
<p2 x="860" y="460"/>
</wire>
<wire>
<p1 x="860" y="360"/>
<p2 x="860" y="380"/>
</wire>
<wire>
<p1 x="780" y="320"/>
<p2 x="780" y="440"/>
</wire>
<wire>
<p1 x="780" y="440"/>
<p2 x="780" y="480"/>
</wire>
<wire>
<p1 x="1020" y="380"/>
<p2 x="1020" y="500"/>
</wire>
<wire>
<p1 x="1020" y="540"/>
<p2 x="1020" y="640"/>
</wire>
<wire>
<p1 x="1020" y="500"/>
<p2 x="1020" y="540"/>
</wire>
</wires>
</circuit>