Search in sources :

Example 11 with HDLException

use of de.neemann.digital.hdl.model2.HDLException in project Digital by hneemann.

the class ReplaceOneToMany method replace.

private void replace(HDLNodeSplitterOneToMany n, ArrayList<HDLNodeAssignment> newNodes) throws HDLException {
    final HDLPort inPort = n.getInputs().get(0);
    HDLNet inNet = inPort.getNet();
    inPort.setNet(null);
    int i = 0;
    for (Splitter.Port p : n.getOutputSplit()) {
        final HDLPort outPort = n.getOutputs().get(i);
        if (outPort.getNet() != null) {
            ExprVarRange exp = new ExprVarRange(inNet, p.getPos() + p.getBits() - 1, p.getPos());
            HDLNodeAssignment node = new HDLNodeAssignment("splitter", null, null);
            node.setExpression(exp);
            node.addPort(new HDLPort("in", inNet, HDLPort.Direction.IN, inPort.getBits()));
            node.addPort(outPort);
            newNodes.add(node);
        }
        i++;
    }
}
Also used : ExprVarRange(de.neemann.digital.hdl.model2.expression.ExprVarRange) Splitter(de.neemann.digital.core.wiring.Splitter)

Example 12 with HDLException

use of de.neemann.digital.hdl.model2.HDLException in project Digital by hneemann.

the class VHDLGenerator method export.

/**
 * Exports the given circuit
 *
 * @param circuit the circuit to export
 * @return this for chained calls
 * @throws IOException IOException
 */
public VHDLGenerator export(Circuit circuit) throws IOException {
    try {
        if (!circuit.getAttributes().get(Keys.ROMMANAGER).isEmpty())
            throw new HDLException(Lang.get("err_centralDefinedRomsAreNotSupported"));
        BoardInterface board = BoardProvider.getInstance().getBoard(circuit);
        HDLClockIntegrator clockIntegrator = null;
        if (board != null && useClockIntegration)
            clockIntegrator = board.getClockIntegrator();
        HDLModel model = new HDLModel(library).create(circuit, clockIntegrator);
        for (HDLCircuit hdlCircuit : model) hdlCircuit.applyDefaultOptimizations();
        model.renameLabels(new VHDLRenaming());
        out.println("-- generated by Digital. Don't modify this file!");
        out.println("-- Any changes will be lost if this file is regenerated.");
        new VHDLCreator(out).printHDLCircuit(model.getMain());
        File outFile = out.getFile();
        if (outFile != null) {
            testBenches = new VHDLTestBenchCreator(circuit, model).write(outFile).getTestFileWritten();
            if (board != null)
                board.writeFiles(outFile, model);
        }
        return this;
    } catch (PinException | NodeException | HDLException | HGSEvalException e) {
        throw new IOException(Lang.get("err_vhdlExporting"), e);
    }
}
Also used : HDLModel(de.neemann.digital.hdl.model2.HDLModel) NodeException(de.neemann.digital.core.NodeException) HDLCircuit(de.neemann.digital.hdl.model2.HDLCircuit) IOException(java.io.IOException) HDLClockIntegrator(de.neemann.digital.hdl.model2.clock.HDLClockIntegrator) BoardInterface(de.neemann.digital.hdl.vhdl2.boards.BoardInterface) HDLException(de.neemann.digital.hdl.model2.HDLException) PinException(de.neemann.digital.draw.elements.PinException) File(java.io.File) HGSEvalException(de.neemann.digital.hdl.hgs.HGSEvalException)

Aggregations

HDLException (de.neemann.digital.hdl.model2.HDLException)4 ElementAttributes (de.neemann.digital.core.element.ElementAttributes)3 HDLCircuit (de.neemann.digital.hdl.model2.HDLCircuit)3 HDLModel (de.neemann.digital.hdl.model2.HDLModel)3 ClockIntegratorGeneric (de.neemann.digital.hdl.model2.clock.ClockIntegratorGeneric)3 CodePrinterStr (de.neemann.digital.hdl.printer.CodePrinterStr)3 File (java.io.File)3 HDLClockIntegrator (de.neemann.digital.hdl.model2.clock.HDLClockIntegrator)2 CodePrinter (de.neemann.digital.hdl.printer.CodePrinter)2 ToBreakRunner (de.neemann.digital.integration.ToBreakRunner)2 IOException (java.io.IOException)2 NodeException (de.neemann.digital.core.NodeException)1 Key (de.neemann.digital.core.element.Key)1 Splitter (de.neemann.digital.core.wiring.Splitter)1 PinException (de.neemann.digital.draw.elements.PinException)1 HGSEvalException (de.neemann.digital.hdl.hgs.HGSEvalException)1 de.neemann.digital.hdl.model2 (de.neemann.digital.hdl.model2)1 ClockInfo (de.neemann.digital.hdl.model2.clock.ClockInfo)1 ExprConstant (de.neemann.digital.hdl.model2.expression.ExprConstant)1 ExprNot (de.neemann.digital.hdl.model2.expression.ExprNot)1