added Warren Toomey's Crazy Small CPU as an example

This commit is contained in:
hneemann 2019-06-10 21:24:17 +02:00
parent 5ac29aa857
commit 481d1bca86
4 changed files with 3554 additions and 3 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,666 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>shapeType</string>
<shapeType>DIL</shapeType>
</entry>
<entry>
<string>Description</string>
<string>8K X 8 BIT CMOS SRAM</string>
</entry>
<entry>
<string>lockedMode</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Width</string>
<int>11</int>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>RAMSinglePortSel</elementName>
<elementAttributes>
<entry>
<string>AddrBits</string>
<int>13</int>
</entry>
<entry>
<string>Label</string>
<string>*</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
<entry>
<string>inverterConfig</string>
<inverterConfig>
<string>CS</string>
<string>OE</string>
<string>WE</string>
</inverterConfig>
</entry>
</elementAttributes>
<pos x="440" y="260"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>splitterSpreading</string>
<int>2</int>
</entry>
<entry>
<string>Input Splitting</string>
<string>1*13</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>13</string>
</entry>
</elementAttributes>
<pos x="200" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A0</string>
</entry>
<entry>
<string>pinNumber</string>
<string>10</string>
</entry>
</elementAttributes>
<pos x="160" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A1</string>
</entry>
<entry>
<string>pinNumber</string>
<string>9</string>
</entry>
</elementAttributes>
<pos x="160" y="300"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A2</string>
</entry>
<entry>
<string>pinNumber</string>
<string>8</string>
</entry>
</elementAttributes>
<pos x="160" y="340"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A3</string>
</entry>
<entry>
<string>pinNumber</string>
<string>7</string>
</entry>
</elementAttributes>
<pos x="160" y="380"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A4</string>
</entry>
<entry>
<string>pinNumber</string>
<string>6</string>
</entry>
</elementAttributes>
<pos x="160" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A5</string>
</entry>
<entry>
<string>pinNumber</string>
<string>5</string>
</entry>
</elementAttributes>
<pos x="160" y="460"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A6</string>
</entry>
<entry>
<string>pinNumber</string>
<string>4</string>
</entry>
</elementAttributes>
<pos x="160" y="500"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A7</string>
</entry>
<entry>
<string>pinNumber</string>
<string>3</string>
</entry>
</elementAttributes>
<pos x="160" y="540"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A8</string>
</entry>
<entry>
<string>pinNumber</string>
<string>25</string>
</entry>
</elementAttributes>
<pos x="160" y="580"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A9</string>
</entry>
<entry>
<string>pinNumber</string>
<string>24</string>
</entry>
</elementAttributes>
<pos x="160" y="620"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A10</string>
</entry>
<entry>
<string>pinNumber</string>
<string>21</string>
</entry>
</elementAttributes>
<pos x="160" y="660"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A11</string>
</entry>
<entry>
<string>pinNumber</string>
<string>23</string>
</entry>
</elementAttributes>
<pos x="160" y="700"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A12</string>
</entry>
<entry>
<string>pinNumber</string>
<string>2</string>
</entry>
</elementAttributes>
<pos x="160" y="740"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~CE</string>
</entry>
<entry>
<string>pinNumber</string>
<string>20</string>
</entry>
<entry>
<string>InDefault</string>
<value v="1" z="false"/>
</entry>
</elementAttributes>
<pos x="160" y="800"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~OE</string>
</entry>
<entry>
<string>pinNumber</string>
<string>22</string>
</entry>
<entry>
<string>InDefault</string>
<value v="1" z="false"/>
</entry>
</elementAttributes>
<pos x="160" y="840"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>~WE</string>
</entry>
<entry>
<string>pinNumber</string>
<string>27</string>
</entry>
<entry>
<string>InDefault</string>
<value v="1" z="false"/>
</entry>
</elementAttributes>
<pos x="160" y="880"/>
</visualElement>
<visualElement>
<elementName>BusSplitter</elementName>
<elementAttributes>
<entry>
<string>splitterSpreading</string>
<int>3</int>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="600" y="300"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D0</string>
</entry>
<entry>
<string>pinNumber</string>
<string>11</string>
</entry>
</elementAttributes>
<pos x="660" y="300"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D1</string>
</entry>
<entry>
<string>pinNumber</string>
<string>12</string>
</entry>
</elementAttributes>
<pos x="660" y="360"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D2</string>
</entry>
<entry>
<string>pinNumber</string>
<string>13</string>
</entry>
</elementAttributes>
<pos x="660" y="420"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D3</string>
</entry>
<entry>
<string>pinNumber</string>
<string>15</string>
</entry>
</elementAttributes>
<pos x="660" y="480"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D4</string>
</entry>
<entry>
<string>pinNumber</string>
<string>16</string>
</entry>
</elementAttributes>
<pos x="660" y="540"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D5</string>
</entry>
<entry>
<string>pinNumber</string>
<string>17</string>
</entry>
</elementAttributes>
<pos x="660" y="600"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D6</string>
</entry>
<entry>
<string>pinNumber</string>
<string>18</string>
</entry>
</elementAttributes>
<pos x="660" y="660"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D7</string>
</entry>
<entry>
<string>pinNumber</string>
<string>19</string>
</entry>
</elementAttributes>
<pos x="660" y="720"/>
</visualElement>
<visualElement>
<elementName>PowerSupply</elementName>
<elementAttributes/>
<pos x="200" y="960"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>VCC</string>
</entry>
<entry>
<string>pinNumber</string>
<string>28</string>
</entry>
<entry>
<string>InDefault</string>
<value v="1" z="false"/>
</entry>
</elementAttributes>
<pos x="160" y="960"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>GND</string>
</entry>
<entry>
<string>pinNumber</string>
<string>14</string>
</entry>
</elementAttributes>
<pos x="160" y="1000"/>
</visualElement>
<visualElement>
<elementName>NOr</elementName>
<elementAttributes>
<entry>
<string>inverterConfig</string>
<inverterConfig>
<string>In_2</string>
</inverterConfig>
</entry>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="420" y="480"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="540" y="320"/>
<p2 x="600" y="320"/>
</wire>
<wire>
<p1 x="380" y="320"/>
<p2 x="420" y="320"/>
</wire>
<wire>
<p1 x="160" y="960"/>
<p2 x="200" y="960"/>
</wire>
<wire>
<p1 x="220" y="260"/>
<p2 x="440" y="260"/>
</wire>
<wire>
<p1 x="160" y="260"/>
<p2 x="200" y="260"/>
</wire>
<wire>
<p1 x="160" y="580"/>
<p2 x="200" y="580"/>
</wire>
<wire>
<p1 x="160" y="840"/>
<p2 x="360" y="840"/>
</wire>
<wire>
<p1 x="360" y="520"/>
<p2 x="420" y="520"/>
</wire>
<wire>
<p1 x="160" y="460"/>
<p2 x="200" y="460"/>
</wire>
<wire>
<p1 x="620" y="720"/>
<p2 x="660" y="720"/>
</wire>
<wire>
<p1 x="160" y="340"/>
<p2 x="200" y="340"/>
</wire>
<wire>
<p1 x="360" y="340"/>
<p2 x="420" y="340"/>
</wire>
<wire>
<p1 x="160" y="660"/>
<p2 x="200" y="660"/>
</wire>
<wire>
<p1 x="620" y="660"/>
<p2 x="660" y="660"/>
</wire>
<wire>
<p1 x="180" y="980"/>
<p2 x="200" y="980"/>
</wire>
<wire>
<p1 x="340" y="280"/>
<p2 x="420" y="280"/>
</wire>
<wire>
<p1 x="620" y="600"/>
<p2 x="660" y="600"/>
</wire>
<wire>
<p1 x="160" y="540"/>
<p2 x="200" y="540"/>
</wire>
<wire>
<p1 x="620" y="540"/>
<p2 x="660" y="540"/>
</wire>
<wire>
<p1 x="160" y="800"/>
<p2 x="340" y="800"/>
</wire>
<wire>
<p1 x="620" y="480"/>
<p2 x="660" y="480"/>
</wire>
<wire>
<p1 x="340" y="480"/>
<p2 x="420" y="480"/>
</wire>
<wire>
<p1 x="160" y="420"/>
<p2 x="200" y="420"/>
</wire>
<wire>
<p1 x="620" y="420"/>
<p2 x="660" y="420"/>
</wire>
<wire>
<p1 x="160" y="740"/>
<p2 x="200" y="740"/>
</wire>
<wire>
<p1 x="620" y="360"/>
<p2 x="660" y="360"/>
</wire>
<wire>
<p1 x="160" y="1000"/>
<p2 x="180" y="1000"/>
</wire>
<wire>
<p1 x="160" y="300"/>
<p2 x="200" y="300"/>
</wire>
<wire>
<p1 x="500" y="300"/>
<p2 x="600" y="300"/>
</wire>
<wire>
<p1 x="620" y="300"/>
<p2 x="660" y="300"/>
</wire>
<wire>
<p1 x="160" y="620"/>
<p2 x="200" y="620"/>
</wire>
<wire>
<p1 x="160" y="880"/>
<p2 x="380" y="880"/>
</wire>
<wire>
<p1 x="160" y="500"/>
<p2 x="200" y="500"/>
</wire>
<wire>
<p1 x="500" y="500"/>
<p2 x="540" y="500"/>
</wire>
<wire>
<p1 x="380" y="500"/>
<p2 x="400" y="500"/>
</wire>
<wire>
<p1 x="160" y="380"/>
<p2 x="200" y="380"/>
</wire>
<wire>
<p1 x="160" y="700"/>
<p2 x="200" y="700"/>
</wire>
<wire>
<p1 x="340" y="280"/>
<p2 x="340" y="480"/>
</wire>
<wire>
<p1 x="340" y="480"/>
<p2 x="340" y="800"/>
</wire>
<wire>
<p1 x="180" y="980"/>
<p2 x="180" y="1000"/>
</wire>
<wire>
<p1 x="360" y="340"/>
<p2 x="360" y="520"/>
</wire>
<wire>
<p1 x="360" y="520"/>
<p2 x="360" y="840"/>
</wire>
<wire>
<p1 x="380" y="320"/>
<p2 x="380" y="500"/>
</wire>
<wire>
<p1 x="380" y="500"/>
<p2 x="380" y="880"/>
</wire>
<wire>
<p1 x="540" y="320"/>
<p2 x="540" y="500"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

View File

@ -32,8 +32,8 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(253, new FileScanner(this::check).scan(examples));
assertEquals(171, testCasesInFiles);
assertEquals(255, new FileScanner(this::check).scan(examples));
assertEquals(172, testCasesInFiles);
}
/**

View File

@ -29,7 +29,8 @@ public class TestExamplesLanguage extends TestCase {
private static void check(File file) throws PinException, NodeException, ElementNotFoundException, IOException {
if (file.getPath().contains("74xx")
|| file.getPath().contains("EPROMs"))
|| file.getPath().contains("EPROMs")
|| file.getPath().contains("RAMs"))
return;
Circuit circuit = new ToBreakRunner(file).getCircuit();