added a CAS-RAS example

This commit is contained in:
hneemann 2017-06-03 10:39:58 +02:00
parent 57163784dd
commit 50233adbd7
4 changed files with 921 additions and 1 deletions

View File

@ -1,5 +1,8 @@
Release Notes
Planed as v0.13
- added a fuse to simulate a PROM
v0.12, released on 02. Jun 2016
- Added undo/redo functions.
- New wire drawing mode: If a wire is added it is rectangular by default.

View File

@ -0,0 +1,908 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A_0</string>
</entry>
</elementAttributes>
<pos x="40" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A_1</string>
</entry>
</elementAttributes>
<pos x="40" y="300"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="420" y="20"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="520" y="20"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="620" y="20"/>
</visualElement>
<visualElement>
<elementName>PullUp</elementName>
<elementAttributes/>
<pos x="720" y="20"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="400" y="480"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="500" y="500"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="600" y="520"/>
</visualElement>
<visualElement>
<elementName>NFET</elementName>
<elementAttributes/>
<pos x="700" y="540"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Q</string>
</entry>
</elementAttributes>
<pos x="800" y="620"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="400" y="440"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="500" y="440"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="600" y="440"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="700" y="440"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="400" y="140"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="500" y="140"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="600" y="140"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="700" y="140"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="400" y="240"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="500" y="240"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="700" y="240"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="400" y="340"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="600" y="340"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="700" y="340"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
<string>flipSelPos</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="760" y="620"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CS</string>
</entry>
<entry>
<string>Default</string>
<int>1</int>
</entry>
</elementAttributes>
<pos x="40" y="660"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="500" y="340"/>
</visualElement>
<visualElement>
<elementName>Ground</elementName>
<elementAttributes/>
<pos x="600" y="240"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="380" y="80"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="480" y="80"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="580" y="80"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="680" y="80"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="380" y="180"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="480" y="180"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes>
<entry>
<string>Blown</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="580" y="180"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="680" y="180"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="680" y="280"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="580" y="280"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes>
<entry>
<string>Blown</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="480" y="280"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="380" y="280"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="380" y="380"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="480" y="380"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="580" y="380"/>
</visualElement>
<visualElement>
<elementName>FGNFET</elementName>
<elementAttributes/>
<pos x="680" y="380"/>
</visualElement>
<visualElement>
<elementName>D_FF</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>2</int>
</entry>
</elementAttributes>
<pos x="180" y="260"/>
</visualElement>
<visualElement>
<elementName>Decoder</elementName>
<elementAttributes>
<entry>
<string>Selector Bits</string>
<int>2</int>
</entry>
</elementAttributes>
<pos x="240" y="180"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>1,1</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>2</string>
</entry>
</elementAttributes>
<pos x="80" y="260"/>
</visualElement>
<visualElement>
<elementName>Decoder</elementName>
<elementAttributes>
<entry>
<string>flipSelPos</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Selector Bits</string>
<int>2</int>
</entry>
</elementAttributes>
<pos x="240" y="520"/>
</visualElement>
<visualElement>
<elementName>D_FF</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>2</int>
</entry>
</elementAttributes>
<pos x="180" y="480"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>RAS</string>
</entry>
</elementAttributes>
<pos x="40" y="500"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CAS</string>
</entry>
</elementAttributes>
<pos x="40" y="400"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="320" y="160"/>
<p2 x="360" y="160"/>
</wire>
<wire>
<p1 x="360" y="160"/>
<p2 x="460" y="160"/>
</wire>
<wire>
<p1 x="460" y="160"/>
<p2 x="560" y="160"/>
</wire>
<wire>
<p1 x="560" y="160"/>
<p2 x="660" y="160"/>
</wire>
<wire>
<p1 x="360" y="320"/>
<p2 x="380" y="320"/>
</wire>
<wire>
<p1 x="560" y="320"/>
<p2 x="580" y="320"/>
</wire>
<wire>
<p1 x="660" y="320"/>
<p2 x="680" y="320"/>
</wire>
<wire>
<p1 x="460" y="320"/>
<p2 x="480" y="320"/>
</wire>
<wire>
<p1 x="240" y="480"/>
<p2 x="260" y="480"/>
</wire>
<wire>
<p1 x="140" y="480"/>
<p2 x="180" y="480"/>
</wire>
<wire>
<p1 x="320" y="260"/>
<p2 x="360" y="260"/>
</wire>
<wire>
<p1 x="240" y="260"/>
<p2 x="260" y="260"/>
</wire>
<wire>
<p1 x="40" y="260"/>
<p2 x="80" y="260"/>
</wire>
<wire>
<p1 x="100" y="260"/>
<p2 x="140" y="260"/>
</wire>
<wire>
<p1 x="360" y="260"/>
<p2 x="460" y="260"/>
</wire>
<wire>
<p1 x="460" y="260"/>
<p2 x="560" y="260"/>
</wire>
<wire>
<p1 x="560" y="260"/>
<p2 x="660" y="260"/>
</wire>
<wire>
<p1 x="140" y="260"/>
<p2 x="180" y="260"/>
</wire>
<wire>
<p1 x="280" y="580"/>
<p2 x="700" y="580"/>
</wire>
<wire>
<p1 x="360" y="420"/>
<p2 x="380" y="420"/>
</wire>
<wire>
<p1 x="460" y="420"/>
<p2 x="480" y="420"/>
</wire>
<wire>
<p1 x="560" y="420"/>
<p2 x="580" y="420"/>
</wire>
<wire>
<p1 x="660" y="420"/>
<p2 x="680" y="420"/>
</wire>
<wire>
<p1 x="280" y="520"/>
<p2 x="400" y="520"/>
</wire>
<wire>
<p1 x="300" y="360"/>
<p2 x="360" y="360"/>
</wire>
<wire>
<p1 x="360" y="360"/>
<p2 x="460" y="360"/>
</wire>
<wire>
<p1 x="460" y="360"/>
<p2 x="560" y="360"/>
</wire>
<wire>
<p1 x="560" y="360"/>
<p2 x="660" y="360"/>
</wire>
<wire>
<p1 x="280" y="200"/>
<p2 x="320" y="200"/>
</wire>
<wire>
<p1 x="420" y="620"/>
<p2 x="520" y="620"/>
</wire>
<wire>
<p1 x="780" y="620"/>
<p2 x="800" y="620"/>
</wire>
<wire>
<p1 x="520" y="620"/>
<p2 x="620" y="620"/>
</wire>
<wire>
<p1 x="620" y="620"/>
<p2 x="720" y="620"/>
</wire>
<wire>
<p1 x="720" y="620"/>
<p2 x="740" y="620"/>
</wire>
<wire>
<p1 x="40" y="300"/>
<p2 x="60" y="300"/>
</wire>
<wire>
<p1 x="280" y="560"/>
<p2 x="600" y="560"/>
</wire>
<wire>
<p1 x="280" y="240"/>
<p2 x="300" y="240"/>
</wire>
<wire>
<p1 x="400" y="80"/>
<p2 x="420" y="80"/>
</wire>
<wire>
<p1 x="500" y="80"/>
<p2 x="520" y="80"/>
</wire>
<wire>
<p1 x="600" y="80"/>
<p2 x="620" y="80"/>
</wire>
<wire>
<p1 x="700" y="80"/>
<p2 x="720" y="80"/>
</wire>
<wire>
<p1 x="40" y="400"/>
<p2 x="160" y="400"/>
</wire>
<wire>
<p1 x="40" y="660"/>
<p2 x="760" y="660"/>
</wire>
<wire>
<p1 x="280" y="180"/>
<p2 x="300" y="180"/>
</wire>
<wire>
<p1 x="400" y="180"/>
<p2 x="420" y="180"/>
</wire>
<wire>
<p1 x="500" y="180"/>
<p2 x="520" y="180"/>
</wire>
<wire>
<p1 x="700" y="180"/>
<p2 x="720" y="180"/>
</wire>
<wire>
<p1 x="600" y="180"/>
<p2 x="620" y="180"/>
</wire>
<wire>
<p1 x="40" y="500"/>
<p2 x="180" y="500"/>
</wire>
<wire>
<p1 x="400" y="280"/>
<p2 x="420" y="280"/>
</wire>
<wire>
<p1 x="600" y="280"/>
<p2 x="620" y="280"/>
</wire>
<wire>
<p1 x="700" y="280"/>
<p2 x="720" y="280"/>
</wire>
<wire>
<p1 x="500" y="280"/>
<p2 x="520" y="280"/>
</wire>
<wire>
<p1 x="60" y="280"/>
<p2 x="80" y="280"/>
</wire>
<wire>
<p1 x="160" y="280"/>
<p2 x="180" y="280"/>
</wire>
<wire>
<p1 x="360" y="120"/>
<p2 x="380" y="120"/>
</wire>
<wire>
<p1 x="460" y="120"/>
<p2 x="480" y="120"/>
</wire>
<wire>
<p1 x="560" y="120"/>
<p2 x="580" y="120"/>
</wire>
<wire>
<p1 x="660" y="120"/>
<p2 x="680" y="120"/>
</wire>
<wire>
<p1 x="280" y="220"/>
<p2 x="320" y="220"/>
</wire>
<wire>
<p1 x="360" y="220"/>
<p2 x="380" y="220"/>
</wire>
<wire>
<p1 x="460" y="220"/>
<p2 x="480" y="220"/>
</wire>
<wire>
<p1 x="660" y="220"/>
<p2 x="680" y="220"/>
</wire>
<wire>
<p1 x="560" y="220"/>
<p2 x="580" y="220"/>
</wire>
<wire>
<p1 x="280" y="540"/>
<p2 x="500" y="540"/>
</wire>
<wire>
<p1 x="400" y="380"/>
<p2 x="420" y="380"/>
</wire>
<wire>
<p1 x="500" y="380"/>
<p2 x="520" y="380"/>
</wire>
<wire>
<p1 x="600" y="380"/>
<p2 x="620" y="380"/>
</wire>
<wire>
<p1 x="700" y="380"/>
<p2 x="720" y="380"/>
</wire>
<wire>
<p1 x="300" y="60"/>
<p2 x="360" y="60"/>
</wire>
<wire>
<p1 x="560" y="60"/>
<p2 x="660" y="60"/>
</wire>
<wire>
<p1 x="360" y="60"/>
<p2 x="460" y="60"/>
</wire>
<wire>
<p1 x="460" y="60"/>
<p2 x="560" y="60"/>
</wire>
<wire>
<p1 x="320" y="160"/>
<p2 x="320" y="200"/>
</wire>
<wire>
<p1 x="320" y="220"/>
<p2 x="320" y="260"/>
</wire>
<wire>
<p1 x="160" y="280"/>
<p2 x="160" y="400"/>
</wire>
<wire>
<p1 x="420" y="520"/>
<p2 x="420" y="620"/>
</wire>
<wire>
<p1 x="420" y="20"/>
<p2 x="420" y="80"/>
</wire>
<wire>
<p1 x="420" y="80"/>
<p2 x="420" y="180"/>
</wire>
<wire>
<p1 x="420" y="380"/>
<p2 x="420" y="480"/>
</wire>
<wire>
<p1 x="420" y="180"/>
<p2 x="420" y="280"/>
</wire>
<wire>
<p1 x="420" y="280"/>
<p2 x="420" y="380"/>
</wire>
<wire>
<p1 x="260" y="240"/>
<p2 x="260" y="260"/>
</wire>
<wire>
<p1 x="260" y="480"/>
<p2 x="260" y="520"/>
</wire>
<wire>
<p1 x="360" y="60"/>
<p2 x="360" y="120"/>
</wire>
<wire>
<p1 x="360" y="160"/>
<p2 x="360" y="220"/>
</wire>
<wire>
<p1 x="360" y="260"/>
<p2 x="360" y="320"/>
</wire>
<wire>
<p1 x="360" y="360"/>
<p2 x="360" y="420"/>
</wire>
<wire>
<p1 x="520" y="540"/>
<p2 x="520" y="620"/>
</wire>
<wire>
<p1 x="520" y="20"/>
<p2 x="520" y="80"/>
</wire>
<wire>
<p1 x="520" y="280"/>
<p2 x="520" y="380"/>
</wire>
<wire>
<p1 x="520" y="80"/>
<p2 x="520" y="180"/>
</wire>
<wire>
<p1 x="520" y="380"/>
<p2 x="520" y="500"/>
</wire>
<wire>
<p1 x="520" y="180"/>
<p2 x="520" y="280"/>
</wire>
<wire>
<p1 x="300" y="60"/>
<p2 x="300" y="180"/>
</wire>
<wire>
<p1 x="300" y="240"/>
<p2 x="300" y="360"/>
</wire>
<wire>
<p1 x="460" y="60"/>
<p2 x="460" y="120"/>
</wire>
<wire>
<p1 x="460" y="160"/>
<p2 x="460" y="220"/>
</wire>
<wire>
<p1 x="460" y="360"/>
<p2 x="460" y="420"/>
</wire>
<wire>
<p1 x="460" y="260"/>
<p2 x="460" y="320"/>
</wire>
<wire>
<p1 x="620" y="560"/>
<p2 x="620" y="620"/>
</wire>
<wire>
<p1 x="620" y="20"/>
<p2 x="620" y="80"/>
</wire>
<wire>
<p1 x="620" y="280"/>
<p2 x="620" y="380"/>
</wire>
<wire>
<p1 x="620" y="80"/>
<p2 x="620" y="180"/>
</wire>
<wire>
<p1 x="620" y="380"/>
<p2 x="620" y="520"/>
</wire>
<wire>
<p1 x="620" y="180"/>
<p2 x="620" y="280"/>
</wire>
<wire>
<p1 x="140" y="260"/>
<p2 x="140" y="480"/>
</wire>
<wire>
<p1 x="560" y="60"/>
<p2 x="560" y="120"/>
</wire>
<wire>
<p1 x="560" y="260"/>
<p2 x="560" y="320"/>
</wire>
<wire>
<p1 x="560" y="360"/>
<p2 x="560" y="420"/>
</wire>
<wire>
<p1 x="560" y="160"/>
<p2 x="560" y="220"/>
</wire>
<wire>
<p1 x="720" y="580"/>
<p2 x="720" y="620"/>
</wire>
<wire>
<p1 x="720" y="20"/>
<p2 x="720" y="80"/>
</wire>
<wire>
<p1 x="720" y="280"/>
<p2 x="720" y="380"/>
</wire>
<wire>
<p1 x="720" y="80"/>
<p2 x="720" y="180"/>
</wire>
<wire>
<p1 x="720" y="380"/>
<p2 x="720" y="540"/>
</wire>
<wire>
<p1 x="720" y="180"/>
<p2 x="720" y="280"/>
</wire>
<wire>
<p1 x="400" y="420"/>
<p2 x="400" y="440"/>
</wire>
<wire>
<p1 x="400" y="120"/>
<p2 x="400" y="140"/>
</wire>
<wire>
<p1 x="400" y="220"/>
<p2 x="400" y="240"/>
</wire>
<wire>
<p1 x="400" y="320"/>
<p2 x="400" y="340"/>
</wire>
<wire>
<p1 x="660" y="60"/>
<p2 x="660" y="120"/>
</wire>
<wire>
<p1 x="660" y="160"/>
<p2 x="660" y="220"/>
</wire>
<wire>
<p1 x="660" y="260"/>
<p2 x="660" y="320"/>
</wire>
<wire>
<p1 x="660" y="360"/>
<p2 x="660" y="420"/>
</wire>
<wire>
<p1 x="500" y="420"/>
<p2 x="500" y="440"/>
</wire>
<wire>
<p1 x="500" y="120"/>
<p2 x="500" y="140"/>
</wire>
<wire>
<p1 x="500" y="220"/>
<p2 x="500" y="240"/>
</wire>
<wire>
<p1 x="500" y="320"/>
<p2 x="500" y="340"/>
</wire>
<wire>
<p1 x="600" y="420"/>
<p2 x="600" y="440"/>
</wire>
<wire>
<p1 x="600" y="120"/>
<p2 x="600" y="140"/>
</wire>
<wire>
<p1 x="600" y="320"/>
<p2 x="600" y="340"/>
</wire>
<wire>
<p1 x="600" y="220"/>
<p2 x="600" y="240"/>
</wire>
<wire>
<p1 x="760" y="640"/>
<p2 x="760" y="660"/>
</wire>
<wire>
<p1 x="60" y="280"/>
<p2 x="60" y="300"/>
</wire>
<wire>
<p1 x="700" y="420"/>
<p2 x="700" y="440"/>
</wire>
<wire>
<p1 x="700" y="120"/>
<p2 x="700" y="140"/>
</wire>
<wire>
<p1 x="700" y="220"/>
<p2 x="700" y="240"/>
</wire>
<wire>
<p1 x="700" y="320"/>
<p2 x="700" y="340"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

View File

@ -2,6 +2,15 @@
<circuit>
<version>1</version>
<attributes>
<entry>
<string>backgroundColor</string>
<awt-color>
<red>255</red>
<green>255</green>
<blue>255</blue>
<alpha>0</alpha>
</awt-color>
</entry>
<entry>
<string>Width</string>
<int>2</int>

View File

@ -28,7 +28,7 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(182, new FileScanner(this::check).scan(examples));
assertEquals(183, new FileScanner(this::check).scan(examples));
assertEquals(82, testCasesInFiles);
}