mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-14 15:26:52 -04:00
VHDL/Verilog support is mentioned in the documentation
This commit is contained in:
parent
d58b7cf1a7
commit
0bf50c38e9
@ -27,7 +27,8 @@ public class Add extends Node implements Element, Countable {
|
||||
= new ElementTypeDescription(Add.class, input("a"), input("b"), input("c_i"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.BITS);
|
||||
.addAttribute(Keys.BITS)
|
||||
.supportsHDL();
|
||||
|
||||
private final int bits;
|
||||
private final ObservableValue sum;
|
||||
|
@ -28,7 +28,8 @@ public class BitExtender implements Element {
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.INPUT_BITS)
|
||||
.addAttribute(Keys.OUTPUT_BITS);
|
||||
.addAttribute(Keys.OUTPUT_BITS)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue out;
|
||||
private final int outBits;
|
||||
|
@ -31,7 +31,8 @@ public class Comparator extends Node implements Element, Countable {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.SIGNED)
|
||||
.setShortName("");
|
||||
.setShortName("")
|
||||
.supportsHDL();
|
||||
|
||||
private final int bits;
|
||||
private final Boolean signed;
|
||||
|
@ -28,7 +28,8 @@ public class Mul extends Node implements Element, Countable {
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.SIGNED)
|
||||
.addAttribute(Keys.BITS);
|
||||
.addAttribute(Keys.BITS)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue mul;
|
||||
private final int bits;
|
||||
|
@ -27,7 +27,8 @@ public class Neg extends Node implements Element, Countable {
|
||||
*/
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(Neg.class, input("in"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS);
|
||||
.addAttribute(Keys.BITS)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final int bits;
|
||||
|
@ -23,7 +23,8 @@ public class Sub extends Add {
|
||||
= new ElementTypeDescription(Sub.class, input("a"), input("b"), input("c_i"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.BITS);
|
||||
.addAttribute(Keys.BITS)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
|
@ -84,6 +84,7 @@ public abstract class FanIn extends Node implements Element, Countable {
|
||||
FanInDescription(Class<? extends Element> clazz) {
|
||||
super(clazz);
|
||||
addAttributes();
|
||||
supportsHDL();
|
||||
}
|
||||
|
||||
private void addAttributes() {
|
||||
|
@ -28,7 +28,8 @@ public class Not extends Node implements Element, Countable {
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(Not.class, input("in"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.WIDE_SHAPE)
|
||||
.addAttribute(Keys.BITS);
|
||||
.addAttribute(Keys.BITS)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final int bits;
|
||||
|
@ -26,6 +26,7 @@ public class ElementTypeDescription {
|
||||
private ElementFactory elementFactory;
|
||||
private final PinDescriptions inputPins;
|
||||
private final ArrayList<Key> attributeList;
|
||||
private boolean supportsHDL;
|
||||
|
||||
/**
|
||||
* Creates a new ElementTypeDescription
|
||||
@ -136,10 +137,11 @@ public class ElementTypeDescription {
|
||||
public String getDescription(ElementAttributes elementAttributes) {
|
||||
String d = Lang.getNull(langKey + "_tt");
|
||||
if (d == null) {
|
||||
return getTranslatedName();
|
||||
} else {
|
||||
return d;
|
||||
d = getTranslatedName();
|
||||
}
|
||||
if (supportsHDL)
|
||||
d += " " + Lang.get("msg_supportsHDL");
|
||||
return d;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -156,6 +158,23 @@ public class ElementTypeDescription {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to flag this elements as supporting hdl export
|
||||
*
|
||||
* @return this for chained calls
|
||||
*/
|
||||
public ElementTypeDescription supportsHDL() {
|
||||
supportsHDL = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the element supports export to HDL.
|
||||
*/
|
||||
public boolean isSupportsHDL() {
|
||||
return supportsHDL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of attributes which are used by this element.
|
||||
*
|
||||
|
@ -40,7 +40,8 @@ public class External extends Node implements Element {
|
||||
.addAttribute(Keys.EXTERNAL_OUTPUTS)
|
||||
.addAttribute(Keys.EXTERNAL_CODE)
|
||||
.addAttribute(Keys.APPLICATION_TYPE)
|
||||
.addAttribute(Keys.GHDL_OPTIONS);
|
||||
.addAttribute(Keys.GHDL_OPTIONS)
|
||||
.supportsHDL();
|
||||
|
||||
private final Application.Type type;
|
||||
private final PortDefinition ins;
|
||||
|
@ -31,7 +31,8 @@ public class FlipflopD extends Node implements Element, Countable {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.DEFAULT)
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE);
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.supportsHDL();
|
||||
|
||||
private final int bits;
|
||||
private final boolean isProbe;
|
||||
|
@ -33,7 +33,8 @@ public class FlipflopDAsync extends FlipflopD {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.DEFAULT)
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE);
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.supportsHDL();
|
||||
|
||||
private ObservableValue setVal;
|
||||
private ObservableValue clrVal;
|
||||
|
@ -30,7 +30,8 @@ public class FlipflopJK extends FlipflopBit {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.DEFAULT)
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE);
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.supportsHDL();
|
||||
|
||||
private ObservableValue jVal;
|
||||
private ObservableValue kVal;
|
||||
|
@ -36,7 +36,8 @@ public class FlipflopJKAsync extends FlipflopJK {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.DEFAULT)
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE);
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.supportsHDL();
|
||||
|
||||
private ObservableValue setVal;
|
||||
private ObservableValue clrVal;
|
||||
|
@ -27,7 +27,8 @@ public class Const implements Element {
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.VALUE)
|
||||
.addAttribute(Keys.INT_FORMAT);
|
||||
.addAttribute(Keys.INT_FORMAT)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
|
||||
|
@ -26,7 +26,8 @@ public class Ground implements Element {
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(Ground.class)
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
|
||||
|
@ -39,7 +39,8 @@ public class In implements Element {
|
||||
.addAttribute(Keys.DESCRIPTION)
|
||||
.addAttribute(Keys.INT_FORMAT)
|
||||
.addAttribute(Keys.PINNUMBER)
|
||||
.addAttribute(Keys.ADD_VALUE_TO_GRAPH);
|
||||
.addAttribute(Keys.ADD_VALUE_TO_GRAPH)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final String label;
|
||||
|
@ -36,7 +36,8 @@ public class Out implements Element {
|
||||
.addAttribute(Keys.DESCRIPTION)
|
||||
.addAttribute(Keys.INT_FORMAT)
|
||||
.addAttribute(Keys.PINNUMBER)
|
||||
.addAttribute(Keys.ADD_VALUE_TO_GRAPH);
|
||||
.addAttribute(Keys.ADD_VALUE_TO_GRAPH)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* The LED description
|
||||
|
@ -27,7 +27,8 @@ public class PinControl extends Node implements Element {
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(PinControl.class, input("wr"), input("oe"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.MIRROR);
|
||||
.addAttribute(Keys.MIRROR)
|
||||
.supportsHDL();
|
||||
|
||||
private final int bits;
|
||||
private final ObservableValue rdValue;
|
||||
|
@ -26,7 +26,8 @@ public class VDD implements Element {
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(VDD.class)
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
|
||||
|
@ -33,7 +33,8 @@ public class BlockRAMDualPort extends Node implements Element, RAMInterface {
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.ADDR_BITS)
|
||||
.addAttribute(Keys.IS_PROGRAM_MEMORY)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private DataField memory;
|
||||
private final ObservableValue output;
|
||||
|
@ -26,7 +26,8 @@ public class Counter extends Node implements Element, ProgramCounter {
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.addAttribute(Keys.IS_PROGRAM_COUNTER);
|
||||
.addAttribute(Keys.IS_PROGRAM_COUNTER)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue out;
|
||||
private final ObservableValue ovf;
|
||||
|
@ -36,7 +36,8 @@ public class CounterPreset extends Node implements Element, ProgramCounter {
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.addAttribute(Keys.IS_PROGRAM_COUNTER);
|
||||
.addAttribute(Keys.IS_PROGRAM_COUNTER)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue out;
|
||||
private final ObservableValue ovf;
|
||||
|
@ -36,7 +36,8 @@ public class LookUpTable extends Node implements Element {
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.INPUT_COUNT)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.DATA);
|
||||
.addAttribute(Keys.DATA)
|
||||
.supportsHDL();
|
||||
|
||||
private final DataField data;
|
||||
private final ObservableValue output;
|
||||
|
@ -33,7 +33,8 @@ public class RAMDualAccess extends Node implements Element, RAMInterface {
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.ADDR_BITS)
|
||||
.addAttribute(Keys.IS_PROGRAM_MEMORY)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private final DataField memory;
|
||||
private final ObservableValue out1;
|
||||
|
@ -32,7 +32,8 @@ public class RAMDualPort extends Node implements Element, RAMInterface {
|
||||
.addAttribute(Keys.ADDR_BITS)
|
||||
.addAttribute(Keys.INT_FORMAT)
|
||||
.addAttribute(Keys.IS_PROGRAM_MEMORY)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private DataField memory;
|
||||
private final IntFormat intFormat;
|
||||
|
@ -41,7 +41,8 @@ public class ROM extends Node implements Element, ROMInterface, ProgramMemory {
|
||||
.addAttribute(Keys.DATA)
|
||||
.addAttribute(Keys.INT_FORMAT)
|
||||
.addAttribute(Keys.IS_PROGRAM_MEMORY)
|
||||
.addAttribute(Keys.AUTO_RELOAD_ROM);
|
||||
.addAttribute(Keys.AUTO_RELOAD_ROM)
|
||||
.supportsHDL();
|
||||
|
||||
private DataField data;
|
||||
private final IntFormat intFormat;
|
||||
|
@ -29,7 +29,8 @@ public class Register extends Node implements Element, Countable, ProgramCounter
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.INVERTER_CONFIG)
|
||||
.addAttribute(Keys.IS_PROGRAM_COUNTER)
|
||||
.addAttribute(Keys.VALUE_IS_PROBE);
|
||||
.addAttribute(Keys.VALUE_IS_PROBE)
|
||||
.supportsHDL();
|
||||
|
||||
private final int bits;
|
||||
private final boolean isProbe;
|
||||
|
@ -34,7 +34,8 @@ public class RegisterFile extends Node implements Element, RAMInterface {
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.ADDR_BITS)
|
||||
.addAttribute(Keys.LABEL);
|
||||
.addAttribute(Keys.LABEL)
|
||||
.supportsHDL();
|
||||
|
||||
private final DataField memory;
|
||||
private final ObservableValue out1;
|
||||
|
@ -29,7 +29,8 @@ public class BitSelector extends Node implements Element {
|
||||
input("sel"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.SELECTOR_BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON);
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final int selBits;
|
||||
|
@ -24,7 +24,8 @@ public class Clock implements Element {
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.RUN_AT_REAL_TIME)
|
||||
.addAttribute(Keys.FREQUENCY)
|
||||
.addAttribute(Keys.PINNUMBER);
|
||||
.addAttribute(Keys.PINNUMBER)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final int frequency;
|
||||
|
@ -40,7 +40,8 @@ public class Decoder extends Node implements Element, Countable {
|
||||
input("sel"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.SELECTOR_BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON);
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
|
@ -46,7 +46,8 @@ public class Demultiplexer extends Node implements Element, Countable {
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.SELECTOR_BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.addAttribute(Keys.DEFAULT);
|
||||
.addAttribute(Keys.DEFAULT)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
|
@ -30,7 +30,8 @@ public class Driver extends Node implements Element, Countable {
|
||||
input("sel"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON);
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final int bits;
|
||||
|
@ -24,7 +24,8 @@ public class DriverInvSel extends Driver {
|
||||
input("sel"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON);
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
|
@ -41,7 +41,8 @@ public class Multiplexer extends FanIn {
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.BITS)
|
||||
.addAttribute(Keys.SELECTOR_BITS)
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON);
|
||||
.addAttribute(Keys.FLIP_SEL_POSITON)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
|
@ -36,7 +36,8 @@ public class PriorityEncoder extends Node implements Element, Countable {
|
||||
}
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.SELECTOR_BITS);
|
||||
.addAttribute(Keys.SELECTOR_BITS)
|
||||
.supportsHDL();
|
||||
|
||||
|
||||
private final ObservableValue selOut;
|
||||
|
@ -26,7 +26,8 @@ public class Reset implements Element {
|
||||
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription("Reset", Reset.class)
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(Keys.INVERT_OUTPUT);
|
||||
.addAttribute(Keys.INVERT_OUTPUT)
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValue output;
|
||||
private final boolean invOut;
|
||||
|
@ -58,7 +58,8 @@ public class Splitter implements Element {
|
||||
.addAttribute(Keys.INPUT_SPLIT)
|
||||
.addAttribute(Keys.OUTPUT_SPLIT)
|
||||
.addAttribute(Keys.SPLITTER_SPREADING)
|
||||
.setShortName("");
|
||||
.setShortName("")
|
||||
.supportsHDL();
|
||||
|
||||
private final ObservableValues outputs;
|
||||
private final Ports inPorts;
|
||||
|
@ -27,7 +27,8 @@ public class Tunnel implements Element {
|
||||
public static final ElementTypeDescription DESCRIPTION
|
||||
= new ElementTypeDescription(Tunnel.class, input("in"))
|
||||
.addAttribute(Keys.ROTATE)
|
||||
.addAttribute(Keys.NETNAME);
|
||||
.addAttribute(Keys.NETNAME)
|
||||
.supportsHDL();
|
||||
|
||||
private final String label;
|
||||
|
||||
|
@ -48,9 +48,9 @@ public class HDLCircuit implements Iterable<HDLNode>, HDLModel.BitProvider, Prin
|
||||
private final ArrayList<HDLNet> listOfNets;
|
||||
private final String description;
|
||||
private final File origin;
|
||||
private final ArrayList<HDLNode> nodes;
|
||||
private ArrayList<HDLPort> ports;
|
||||
private NetList netList;
|
||||
private ArrayList<HDLNode> nodes;
|
||||
private HashMap<Net, HDLNet> nets;
|
||||
private String hdlEntityName;
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
*/
|
||||
package de.neemann.digital.hdl.vhdl2.entities;
|
||||
|
||||
import de.neemann.digital.core.element.ElementTypeDescription;
|
||||
import de.neemann.digital.hdl.hgs.*;
|
||||
import de.neemann.digital.hdl.hgs.function.JavaClass;
|
||||
import de.neemann.digital.hdl.model2.HDLNode;
|
||||
@ -13,6 +14,7 @@ import de.neemann.digital.hdl.vhdl2.Separator;
|
||||
import de.neemann.digital.lang.Lang;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
@ -49,6 +51,21 @@ public class VHDLTemplate implements VHDLEntity {
|
||||
return "vhdl/" + name + ".tem";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true, if a hdl template is available.
|
||||
*
|
||||
* @param etd the {@link ElementTypeDescription}
|
||||
* @return true if VHDL template is available
|
||||
*/
|
||||
public static boolean isTemplate(ElementTypeDescription etd) {
|
||||
ClassLoader cl = etd.getClassLoader();
|
||||
if (cl == null)
|
||||
cl = ClassLoader.getSystemClassLoader();
|
||||
URL url = cl.getResource(createFileName(ENTITY_PREFIX + etd.getName()));
|
||||
return url != null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates the name of the file used to load the vhdl file for the given element
|
||||
*
|
||||
|
@ -27,7 +27,8 @@ public class TestCaseElement implements Element {
|
||||
= new ElementTypeDescription("Testcase", TestCaseElement.class)
|
||||
.addAttribute(Keys.LABEL)
|
||||
.addAttribute(TESTDATA)
|
||||
.addAttribute(Keys.ENABLED);
|
||||
.addAttribute(Keys.ENABLED)
|
||||
.supportsHDL();
|
||||
|
||||
/**
|
||||
* creates a new instance
|
||||
|
@ -1955,12 +1955,15 @@ Stellen Sie sicher, dass der Flash-Vorgang abgeschlossen ist, bevor Sie diesen D
|
||||
|
||||
<string name="msg_renameNet">Netz umbenennen</string>
|
||||
<string name="msg_renameNet_N_OLD_NEW">Es gibt noch {0} weitere Tunnel mit dem Netznamen ''{1}''.
|
||||
Sollen alle {0} zu ''{2}'' umbenannt werden?</string>
|
||||
Sollen alle {0} zu ''{2}'' umbenannt werden?
|
||||
</string>
|
||||
|
||||
<string name="msg_dataWillBeLost_n">Sollen die Änderungen im Feld "{0}" wirklich verworfen werden?</string>
|
||||
<string name="btn_copyToClipboard">Zwischenablage</string>
|
||||
<string name="btn_copyToClipboard_tt">Kopiert den Text in die Zwischenablage.</string>
|
||||
|
||||
<string name="msg_supportsHDL">Exportierbar zu VHDL/Verilog.</string>
|
||||
|
||||
<string name="ok">Ok</string>
|
||||
<string name="rot_0">0°</string>
|
||||
<string name="rot_180">180°</string>
|
||||
|
@ -1910,10 +1910,13 @@ Make sure the flash process is complete before closing this dialog!</string>
|
||||
|
||||
<string name="msg_renameNet">Rename Net</string>
|
||||
<string name="msg_renameNet_N_OLD_NEW">There are {0} more tunnels with the net name ''{1}''.
|
||||
Do you want to rename all {0} to ''{2}''?</string>
|
||||
Do you want to rename all {0} to ''{2}''?
|
||||
</string>
|
||||
|
||||
<string name="msg_dataWillBeLost_n">Do you really want to discard the changes in the "{0}" field?</string>
|
||||
|
||||
<string name="msg_supportsHDL">Exportable to VHDL/Verilog.</string>
|
||||
|
||||
<string name="err_vgaModeNotDetected_N">Video mode was not detected ({0})</string>
|
||||
|
||||
<string name="ok">OK</string>
|
||||
|
24
src/test/java/de/neemann/digital/hdl/TestHDLExportFlag.java
Normal file
24
src/test/java/de/neemann/digital/hdl/TestHDLExportFlag.java
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Helmut Neemann.
|
||||
* Use of this source code is governed by the GPL v3 license
|
||||
* that can be found in the LICENSE file.
|
||||
*/
|
||||
package de.neemann.digital.hdl;
|
||||
|
||||
import de.neemann.digital.core.element.ElementTypeDescription;
|
||||
import de.neemann.digital.draw.library.ElementLibrary;
|
||||
import de.neemann.digital.hdl.vhdl2.entities.VHDLTemplate;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestHDLExportFlag extends TestCase {
|
||||
|
||||
public void testHDLExportFlag() {
|
||||
ElementLibrary lib = new ElementLibrary();
|
||||
for (ElementLibrary.ElementContainer ec : lib) {
|
||||
ElementTypeDescription etd = ec.getDescription();
|
||||
boolean hdlExportFlag = etd.isSupportsHDL();
|
||||
if (VHDLTemplate.isTemplate(etd))
|
||||
assertTrue("HDL template available for " + etd.getName(), hdlExportFlag);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user