From 08f92d2e5c03b8f6d1c2cbbaca2e029d4dadabdf Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 22 Jun 2017 17:36:41 +0200 Subject: [PATCH] added some cmos adders. 10T and SERF are not working --- src/main/dig/cmos/xor.dig | 198 ++++++++ .../digital/integration/TestExamples.java | 8 +- .../dig/test/fet/cmos10TFullAdder.dig | 477 ++++++++++++++++++ .../dig/test/fet/cmosGDIFullAdder.dig | 474 +++++++++++++++++ ...sFullAdder.dig => cmosMirrorFullAdder.dig} | 7 +- .../dig/test/fet/cmosSERFFullAdder.dig | 456 +++++++++++++++++ 6 files changed, 1615 insertions(+), 5 deletions(-) create mode 100644 src/main/dig/cmos/xor.dig create mode 100644 src/test/resources/dig/test/fet/cmos10TFullAdder.dig create mode 100644 src/test/resources/dig/test/fet/cmosGDIFullAdder.dig rename src/test/resources/dig/test/fet/{cmosFullAdder.dig => cmosMirrorFullAdder.dig} (99%) create mode 100644 src/test/resources/dig/test/fet/cmosSERFFullAdder.dig 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