added some examples

This commit is contained in:
hneemann 2017-03-22 20:20:19 +01:00
parent 990f72742b
commit f5cddf1aba
3 changed files with 660 additions and 2 deletions

344
src/main/dig/cmos/d-ff.dig Normal file
View File

@ -0,0 +1,344 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<visualElements>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="440" y="160"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="500" y="160"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="440" y="280"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="500" y="280"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="460" y="140"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="520" y="140"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes/>
<pos x="460" y="340"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes/>
<pos x="520" y="340"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~Q</string>
</entry>
</elementAttributes>
<pos x="540" y="260"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Q</string>
</entry>
</elementAttributes>
<pos x="540" y="220"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="380" y="260"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="380" y="320"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="380" y="180"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="380" y="120"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D</string>
</entry>
</elementAttributes>
<pos x="260" y="300"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="400" y="100"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="400" y="380"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="300" y="200"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="300" y="120"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="320" y="100"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C</string>
</entry>
</elementAttributes>
<pos x="260" y="180"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="320" y="260"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Testdata</string>
<testData>
<dataString>C D Q ~Q
1 0 0 1
0 0 0 1
0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 0
0 0 1 0
1 0 0 1
0 0 0 1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="540" y="320"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="480" y="160"/>
<p2 x="500" y="160"/>
</wire>
<wire>
<p1 x="420" y="160"/>
<p2 x="440" y="160"/>
</wire>
<wire>
<p1 x="400" y="240"/>
<p2 x="420" y="240"/>
</wire>
<wire>
<p1 x="280" y="240"/>
<p2 x="300" y="240"/>
</wire>
<wire>
<p1 x="480" y="320"/>
<p2 x="500" y="320"/>
</wire>
<wire>
<p1 x="420" y="320"/>
<p2 x="440" y="320"/>
</wire>
<wire>
<p1 x="420" y="260"/>
<p2 x="520" y="260"/>
</wire>
<wire>
<p1 x="520" y="260"/>
<p2 x="540" y="260"/>
</wire>
<wire>
<p1 x="360" y="180"/>
<p2 x="380" y="180"/>
</wire>
<wire>
<p1 x="320" y="180"/>
<p2 x="340" y="180"/>
</wire>
<wire>
<p1 x="260" y="180"/>
<p2 x="280" y="180"/>
</wire>
<wire>
<p1 x="280" y="120"/>
<p2 x="300" y="120"/>
</wire>
<wire>
<p1 x="340" y="120"/>
<p2 x="380" y="120"/>
</wire>
<wire>
<p1 x="280" y="360"/>
<p2 x="380" y="360"/>
</wire>
<wire>
<p1 x="260" y="300"/>
<p2 x="360" y="300"/>
</wire>
<wire>
<p1 x="360" y="300"/>
<p2 x="380" y="300"/>
</wire>
<wire>
<p1 x="460" y="220"/>
<p2 x="480" y="220"/>
</wire>
<wire>
<p1 x="480" y="220"/>
<p2 x="540" y="220"/>
</wire>
<wire>
<p1 x="480" y="160"/>
<p2 x="480" y="220"/>
</wire>
<wire>
<p1 x="480" y="220"/>
<p2 x="480" y="320"/>
</wire>
<wire>
<p1 x="400" y="360"/>
<p2 x="400" y="380"/>
</wire>
<wire>
<p1 x="400" y="300"/>
<p2 x="400" y="320"/>
</wire>
<wire>
<p1 x="400" y="220"/>
<p2 x="400" y="240"/>
</wire>
<wire>
<p1 x="400" y="160"/>
<p2 x="400" y="180"/>
</wire>
<wire>
<p1 x="400" y="100"/>
<p2 x="400" y="120"/>
</wire>
<wire>
<p1 x="400" y="240"/>
<p2 x="400" y="260"/>
</wire>
<wire>
<p1 x="320" y="160"/>
<p2 x="320" y="180"/>
</wire>
<wire>
<p1 x="320" y="100"/>
<p2 x="320" y="120"/>
</wire>
<wire>
<p1 x="320" y="240"/>
<p2 x="320" y="260"/>
</wire>
<wire>
<p1 x="320" y="180"/>
<p2 x="320" y="200"/>
</wire>
<wire>
<p1 x="420" y="160"/>
<p2 x="420" y="240"/>
</wire>
<wire>
<p1 x="420" y="240"/>
<p2 x="420" y="260"/>
</wire>
<wire>
<p1 x="420" y="260"/>
<p2 x="420" y="320"/>
</wire>
<wire>
<p1 x="340" y="120"/>
<p2 x="340" y="180"/>
</wire>
<wire>
<p1 x="520" y="200"/>
<p2 x="520" y="260"/>
</wire>
<wire>
<p1 x="520" y="140"/>
<p2 x="520" y="160"/>
</wire>
<wire>
<p1 x="520" y="320"/>
<p2 x="520" y="340"/>
</wire>
<wire>
<p1 x="520" y="260"/>
<p2 x="520" y="280"/>
</wire>
<wire>
<p1 x="360" y="180"/>
<p2 x="360" y="300"/>
</wire>
<wire>
<p1 x="280" y="120"/>
<p2 x="280" y="180"/>
</wire>
<wire>
<p1 x="280" y="240"/>
<p2 x="280" y="360"/>
</wire>
<wire>
<p1 x="280" y="180"/>
<p2 x="280" y="240"/>
</wire>
<wire>
<p1 x="460" y="200"/>
<p2 x="460" y="220"/>
</wire>
<wire>
<p1 x="460" y="140"/>
<p2 x="460" y="160"/>
</wire>
<wire>
<p1 x="460" y="320"/>
<p2 x="460" y="340"/>
</wire>
<wire>
<p1 x="460" y="220"/>
<p2 x="460" y="280"/>
</wire>
</wires>
</circuit>

View File

@ -0,0 +1,314 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<visualElements>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="480" y="160"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="540" y="160"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="480" y="280"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="540" y="280"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="500" y="140"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="560" y="140"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes/>
<pos x="500" y="340"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes/>
<pos x="560" y="340"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~Q</string>
</entry>
</elementAttributes>
<pos x="580" y="220"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Q</string>
</entry>
</elementAttributes>
<pos x="580" y="260"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="1"/>
</entry>
</elementAttributes>
<pos x="400" y="320"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
</elementAttributes>
<pos x="440" y="240"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D</string>
</entry>
</elementAttributes>
<pos x="300" y="280"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="340" y="200"/>
</visualElement>
<visualElement>
<elementName>PFET</elementName>
<elementAttributes/>
<pos x="340" y="120"/>
</visualElement>
<visualElement>
<elementName>VDD</elementName>
<elementAttributes/>
<pos x="360" y="100"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>C</string>
</entry>
</elementAttributes>
<pos x="300" y="180"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="360" y="260"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Testdata</string>
<testData>
<dataString>C D Q ~Q
1 0 0 1
0 0 0 1
0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 0
0 0 1 0
1 0 0 1
0 0 0 1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="580" y="320"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="520" y="160"/>
<p2 x="540" y="160"/>
</wire>
<wire>
<p1 x="460" y="160"/>
<p2 x="480" y="160"/>
</wire>
<wire>
<p1 x="520" y="320"/>
<p2 x="540" y="320"/>
</wire>
<wire>
<p1 x="460" y="320"/>
<p2 x="480" y="320"/>
</wire>
<wire>
<p1 x="320" y="240"/>
<p2 x="340" y="240"/>
</wire>
<wire>
<p1 x="460" y="260"/>
<p2 x="560" y="260"/>
</wire>
<wire>
<p1 x="560" y="260"/>
<p2 x="580" y="260"/>
</wire>
<wire>
<p1 x="360" y="180"/>
<p2 x="440" y="180"/>
</wire>
<wire>
<p1 x="300" y="180"/>
<p2 x="320" y="180"/>
</wire>
<wire>
<p1 x="320" y="340"/>
<p2 x="440" y="340"/>
</wire>
<wire>
<p1 x="440" y="280"/>
<p2 x="460" y="280"/>
</wire>
<wire>
<p1 x="300" y="280"/>
<p2 x="400" y="280"/>
</wire>
<wire>
<p1 x="320" y="120"/>
<p2 x="340" y="120"/>
</wire>
<wire>
<p1 x="500" y="220"/>
<p2 x="520" y="220"/>
</wire>
<wire>
<p1 x="520" y="220"/>
<p2 x="580" y="220"/>
</wire>
<wire>
<p1 x="560" y="200"/>
<p2 x="560" y="260"/>
</wire>
<wire>
<p1 x="560" y="140"/>
<p2 x="560" y="160"/>
</wire>
<wire>
<p1 x="560" y="320"/>
<p2 x="560" y="340"/>
</wire>
<wire>
<p1 x="560" y="260"/>
<p2 x="560" y="280"/>
</wire>
<wire>
<p1 x="400" y="260"/>
<p2 x="400" y="280"/>
</wire>
<wire>
<p1 x="400" y="280"/>
<p2 x="400" y="300"/>
</wire>
<wire>
<p1 x="320" y="120"/>
<p2 x="320" y="180"/>
</wire>
<wire>
<p1 x="320" y="240"/>
<p2 x="320" y="340"/>
</wire>
<wire>
<p1 x="320" y="180"/>
<p2 x="320" y="240"/>
</wire>
<wire>
<p1 x="500" y="200"/>
<p2 x="500" y="220"/>
</wire>
<wire>
<p1 x="500" y="140"/>
<p2 x="500" y="160"/>
</wire>
<wire>
<p1 x="500" y="320"/>
<p2 x="500" y="340"/>
</wire>
<wire>
<p1 x="500" y="220"/>
<p2 x="500" y="280"/>
</wire>
<wire>
<p1 x="520" y="160"/>
<p2 x="520" y="220"/>
</wire>
<wire>
<p1 x="520" y="220"/>
<p2 x="520" y="320"/>
</wire>
<wire>
<p1 x="440" y="180"/>
<p2 x="440" y="240"/>
</wire>
<wire>
<p1 x="440" y="320"/>
<p2 x="440" y="340"/>
</wire>
<wire>
<p1 x="440" y="260"/>
<p2 x="440" y="280"/>
</wire>
<wire>
<p1 x="440" y="280"/>
<p2 x="440" y="300"/>
</wire>
<wire>
<p1 x="360" y="160"/>
<p2 x="360" y="180"/>
</wire>
<wire>
<p1 x="360" y="100"/>
<p2 x="360" y="120"/>
</wire>
<wire>
<p1 x="360" y="240"/>
<p2 x="360" y="260"/>
</wire>
<wire>
<p1 x="360" y="180"/>
<p2 x="360" y="200"/>
</wire>
<wire>
<p1 x="460" y="160"/>
<p2 x="460" y="260"/>
</wire>
<wire>
<p1 x="460" y="280"/>
<p2 x="460" y="320"/>
</wire>
<wire>
<p1 x="460" y="260"/>
<p2 x="460" y="280"/>
</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(104, new FileScanner(this::check).scan(examples));
assertEquals(52, testCasesInFiles);
assertEquals(106, new FileScanner(this::check).scan(examples));
assertEquals(54, testCasesInFiles);
}
/**