adds IC 74779, closes #113

This commit is contained in:
hneemann 2018-02-22 14:45:44 +01:00
parent 10e7b8ecb2
commit 76f8a16bab
6 changed files with 3419 additions and 8 deletions

View File

@ -1,13 +1,13 @@
Release Notes Release Notes
HEAD, planed as v0.18 HEAD, planed as v0.18
- Added 74181, 7440, 7428 - Added ICs 74181, 74779, 7440 and 7428
- Added new text formatting engine which supports overline, super- and subscript. - Added new text formatting engine which supports overline, super- and subscript.
Try "~Q_{n+1}^1" as an output label. Try "~Q_{n+1}^1" as an output label.
- It's possible to test circuits with a high-z input which can act as an output. - It's possible to test circuits with a high-z input which can act as an output.
- Embedded circuits which are used in the library and which names first character is a - A embedded circuits which is used in the library and which names ends with '-inc.dig'
underscore '_' are not shown in the components menu. They are usable but hidden is not shown in the components menu. They are usable but hidden in the menu and in
in the menu and in the tree view. the tree view.
v0.17, released on 19. Feb 2018 v0.17, released on 19. Feb 2018
- Added 64 bit support for Add and Sub components. - Added 64 bit support for Add and Sub components.

View File

@ -0,0 +1,312 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>pinCount</string>
<int>1</int>
</entry>
<entry>
<string>Description</string>
<string>flip flop part of 74779</string>
</entry>
<entry>
<string>lockedMode</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Width</string>
<int>5</int>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>D_FF</elementName>
<elementAttributes/>
<pos x="900" y="220"/>
</visualElement>
<visualElement>
<elementName>Or</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="800" y="200"/>
</visualElement>
<visualElement>
<elementName>And</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="700" y="200"/>
</visualElement>
<visualElement>
<elementName>And</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="700" y="300"/>
</visualElement>
<visualElement>
<elementName>And</elementName>
<elementAttributes/>
<pos x="700" y="100"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>DATA</string>
</entry>
<entry>
<string>pinNumber</string>
<string>1</string>
</entry>
<entry>
<string>isHighZ</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="480" y="100"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>LOAD</string>
</entry>
<entry>
<string>pinNumber</string>
<string>2</string>
</entry>
</elementAttributes>
<pos x="480" y="200"/>
</visualElement>
<visualElement>
<elementName>Not</elementName>
<elementAttributes/>
<pos x="580" y="200"/>
</visualElement>
<visualElement>
<elementName>Not</elementName>
<elementAttributes/>
<pos x="580" y="320"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
<string>Label</string>
<string>~TOGGLE</string>
</entry>
</elementAttributes>
<pos x="540" y="60"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Q</string>
</entry>
<entry>
<string>pinNumber</string>
<string>4</string>
</entry>
</elementAttributes>
<pos x="1040" y="220"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~Q</string>
</entry>
<entry>
<string>pinNumber</string>
<string>3</string>
</entry>
</elementAttributes>
<pos x="1040" y="260"/>
</visualElement>
<visualElement>
<elementName>Clock</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
<string>Label</string>
<string>CP</string>
</entry>
</elementAttributes>
<pos x="880" y="60"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="760" y="320"/>
<p2 x="780" y="320"/>
</wire>
<wire>
<p1 x="540" y="320"/>
<p2 x="580" y="320"/>
</wire>
<wire>
<p1 x="620" y="320"/>
<p2 x="700" y="320"/>
</wire>
<wire>
<p1 x="780" y="240"/>
<p2 x="800" y="240"/>
</wire>
<wire>
<p1 x="640" y="240"/>
<p2 x="700" y="240"/>
</wire>
<wire>
<p1 x="880" y="240"/>
<p2 x="900" y="240"/>
</wire>
<wire>
<p1 x="960" y="240"/>
<p2 x="980" y="240"/>
</wire>
<wire>
<p1 x="480" y="100"/>
<p2 x="700" y="100"/>
</wire>
<wire>
<p1 x="680" y="340"/>
<p2 x="700" y="340"/>
</wire>
<wire>
<p1 x="640" y="420"/>
<p2 x="1000" y="420"/>
</wire>
<wire>
<p1 x="980" y="260"/>
<p2 x="1040" y="260"/>
</wire>
<wire>
<p1 x="760" y="120"/>
<p2 x="780" y="120"/>
</wire>
<wire>
<p1 x="780" y="200"/>
<p2 x="800" y="200"/>
</wire>
<wire>
<p1 x="480" y="200"/>
<p2 x="560" y="200"/>
</wire>
<wire>
<p1 x="620" y="200"/>
<p2 x="680" y="200"/>
</wire>
<wire>
<p1 x="680" y="200"/>
<p2 x="700" y="200"/>
</wire>
<wire>
<p1 x="560" y="200"/>
<p2 x="580" y="200"/>
</wire>
<wire>
<p1 x="680" y="380"/>
<p2 x="980" y="380"/>
</wire>
<wire>
<p1 x="760" y="220"/>
<p2 x="800" y="220"/>
</wire>
<wire>
<p1 x="860" y="220"/>
<p2 x="900" y="220"/>
</wire>
<wire>
<p1 x="540" y="220"/>
<p2 x="700" y="220"/>
</wire>
<wire>
<p1 x="960" y="220"/>
<p2 x="1000" y="220"/>
</wire>
<wire>
<p1 x="1000" y="220"/>
<p2 x="1040" y="220"/>
</wire>
<wire>
<p1 x="560" y="140"/>
<p2 x="700" y="140"/>
</wire>
<wire>
<p1 x="680" y="300"/>
<p2 x="700" y="300"/>
</wire>
<wire>
<p1 x="640" y="240"/>
<p2 x="640" y="420"/>
</wire>
<wire>
<p1 x="880" y="60"/>
<p2 x="880" y="240"/>
</wire>
<wire>
<p1 x="560" y="140"/>
<p2 x="560" y="200"/>
</wire>
<wire>
<p1 x="980" y="240"/>
<p2 x="980" y="260"/>
</wire>
<wire>
<p1 x="980" y="260"/>
<p2 x="980" y="380"/>
</wire>
<wire>
<p1 x="1000" y="220"/>
<p2 x="1000" y="420"/>
</wire>
<wire>
<p1 x="680" y="200"/>
<p2 x="680" y="300"/>
</wire>
<wire>
<p1 x="680" y="340"/>
<p2 x="680" y="380"/>
</wire>
<wire>
<p1 x="540" y="60"/>
<p2 x="540" y="220"/>
</wire>
<wire>
<p1 x="540" y="220"/>
<p2 x="540" y="320"/>
</wire>
<wire>
<p1 x="780" y="240"/>
<p2 x="780" y="320"/>
</wire>
<wire>
<p1 x="780" y="120"/>
<p2 x="780" y="200"/>
</wire>
</wires>
</circuit>

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@ public class LibraryNode implements Iterable<LibraryNode> {
else else
translatedName = name; translatedName = name;
isHidden = isLibrary && name.startsWith("_"); isHidden = isLibrary && name.endsWith("-inc.dig");
this.file = file; this.file = file;
} }

View File

@ -29,8 +29,8 @@ public class TestExamples extends TestCase {
*/ */
public void testDistExamples() throws Exception { public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig"); File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(214, new FileScanner(this::check).scan(examples)); assertEquals(216, new FileScanner(this::check).scan(examples));
assertEquals(159, testCasesInFiles); assertEquals(160, testCasesInFiles);
} }
/** /**

View File

@ -33,7 +33,7 @@ public class TestLib extends TestCase {
private void check(File dig) throws PinException, NodeException, ElementNotFoundException, IOException { private void check(File dig) throws PinException, NodeException, ElementNotFoundException, IOException {
Circuit circuit = new ToBreakRunner(dig).getCircuit(); Circuit circuit = new ToBreakRunner(dig).getCircuit();
boolean is74xx = dig.getPath().contains("74xx") && !dig.getName().startsWith("_"); boolean is74xx = dig.getPath().contains("74xx") && !dig.getName().endsWith("-inc.dig");
if (is74xx) { if (is74xx) {
assertTrue("is not DIL", circuit.getAttributes().get(Keys.IS_DIL)); assertTrue("is not DIL", circuit.getAttributes().get(Keys.IS_DIL));