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