diff --git a/src/main/dig/cmos/xor.dig b/src/main/dig/cmos/xor.dig
new file mode 100644
index 000000000..206f4a199
--- /dev/null
+++ b/src/main/dig/cmos/xor.dig
@@ -0,0 +1,198 @@
+
+
+ 1
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ VDD
+
+
+
+
+ Ground
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ Out
+
+
+ Label
+ Y
+
+
+
+
+
+ Testcase
+
+
+ Testdata
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java
index eea7afad1..20aad58fd 100644
--- a/src/test/java/de/neemann/digital/integration/TestExamples.java
+++ b/src/test/java/de/neemann/digital/integration/TestExamples.java
@@ -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);
}
diff --git a/src/test/resources/dig/test/fet/cmos10TFullAdder.dig b/src/test/resources/dig/test/fet/cmos10TFullAdder.dig
new file mode 100644
index 000000000..226b60599
--- /dev/null
+++ b/src/test/resources/dig/test/fet/cmos10TFullAdder.dig
@@ -0,0 +1,477 @@
+
+
+ 1
+
+
+ Description
+ 10 Transistor Full Adder
+
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ Out
+
+
+ Label
+ S
+
+
+
+
+
+ Out
+
+
+ Label
+ C_o
+
+
+
+
+
+ Testcase
+
+
+ Label
+ Failing
+
+
+ Testdata
+
+ 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
+
+
+
+
+
+
+
+ PFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ NFET
+
+
+
+
+ Ground
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ In
+
+
+ Label
+ C_i
+
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ Ground
+
+
+
+
+ VDD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/dig/test/fet/cmosGDIFullAdder.dig b/src/test/resources/dig/test/fet/cmosGDIFullAdder.dig
new file mode 100644
index 000000000..09ba542eb
--- /dev/null
+++ b/src/test/resources/dig/test/fet/cmosGDIFullAdder.dig
@@ -0,0 +1,474 @@
+
+
+ 1
+
+
+ Description
+ Gate Diffusion Input (GDI) Full Adder
+
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ VDD
+
+
+
+
+ Ground
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ In
+
+
+ rotation
+
+
+
+ Label
+ C_i
+
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ VDD
+
+
+
+
+ Ground
+
+
+
+
+ Out
+
+
+ Label
+ S
+
+
+
+
+
+ Out
+
+
+ Label
+ C_o
+
+
+
+
+
+ Testcase
+
+
+ Testdata
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/dig/test/fet/cmosFullAdder.dig b/src/test/resources/dig/test/fet/cmosMirrorFullAdder.dig
similarity index 99%
rename from src/test/resources/dig/test/fet/cmosFullAdder.dig
rename to src/test/resources/dig/test/fet/cmosMirrorFullAdder.dig
index 4c5ee2863..377a3d4a0 100644
--- a/src/test/resources/dig/test/fet/cmosFullAdder.dig
+++ b/src/test/resources/dig/test/fet/cmosMirrorFullAdder.dig
@@ -1,7 +1,12 @@
1
-
+
+
+ Description
+ CMOS mirror adder
+
+
PFET
diff --git a/src/test/resources/dig/test/fet/cmosSERFFullAdder.dig b/src/test/resources/dig/test/fet/cmosSERFFullAdder.dig
new file mode 100644
index 000000000..31f1e88e3
--- /dev/null
+++ b/src/test/resources/dig/test/fet/cmosSERFFullAdder.dig
@@ -0,0 +1,456 @@
+
+
+ 1
+
+
+ Description
+ Static Energy Recovery Full Adder (SERF)
+
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ In
+
+
+ Label
+ C_i
+
+
+
+
+
+ PFET
+
+
+
+
+ NFET
+
+
+
+
+ Out
+
+
+ Label
+ S
+
+
+
+
+
+ Out
+
+
+ Label
+ C_o
+
+
+
+
+
+ Testcase
+
+
+ Label
+ Failing
+
+
+ Testdata
+
+ 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
+
+
+
+
+
+
+
+ VDD
+
+
+
+
+ VDD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file