diff --git a/src/main/java/de/neemann/digital/hdl/model2/optimizations/MergeConstants.java b/src/main/java/de/neemann/digital/hdl/model2/optimizations/MergeConstants.java index 55670bd5e..e6b8a11e0 100644 --- a/src/main/java/de/neemann/digital/hdl/model2/optimizations/MergeConstants.java +++ b/src/main/java/de/neemann/digital/hdl/model2/optimizations/MergeConstants.java @@ -7,6 +7,7 @@ package de.neemann.digital.hdl.model2.optimizations; import de.neemann.digital.hdl.model2.*; import de.neemann.digital.hdl.model2.expression.ExprConstant; +import de.neemann.digital.hdl.model2.expression.ExprVar; import java.util.ArrayList; @@ -54,6 +55,8 @@ public class MergeConstants implements Optimization { for (HDLPort p : ins.toArray(new HDLPort[ins.size()])) p.setNet(usedNet); + circuit.replaceNetByExpression(obsoleteNet, new ExprVar(usedNet)); + circuit.removeNet(obsoleteNet); } diff --git a/src/main/java/de/neemann/digital/hdl/printer/CodePrinter.java b/src/main/java/de/neemann/digital/hdl/printer/CodePrinter.java index b929125c5..73d36700c 100644 --- a/src/main/java/de/neemann/digital/hdl/printer/CodePrinter.java +++ b/src/main/java/de/neemann/digital/hdl/printer/CodePrinter.java @@ -102,6 +102,9 @@ public class CodePrinter implements Closeable { * @throws IOException IOException */ public CodePrinter print(String str) throws IOException { + if (str == null) + str = "null"; + for (int i = 0; i < str.length(); i++) print(str.charAt(i)); return this; diff --git a/src/test/java/de/neemann/digital/hdl/vhdl2/VHDLSimulatorTest.java b/src/test/java/de/neemann/digital/hdl/vhdl2/VHDLSimulatorTest.java index 5eb9b4bff..ca382cb2c 100644 --- a/src/test/java/de/neemann/digital/hdl/vhdl2/VHDLSimulatorTest.java +++ b/src/test/java/de/neemann/digital/hdl/vhdl2/VHDLSimulatorTest.java @@ -88,6 +88,18 @@ public class VHDLSimulatorTest extends TestCase { } } + public void testMultiplierInSimulator() throws Exception { + File file = new File(Resources.getRoot(), "../../main/dig/combinatorial/Multiply8Bit.dig"); + try { + checkVHDLExport(file); + } catch (FileScanner.SkipAllException e) { + // if ghdl is not installed its also ok + } catch (Exception e) { + System.out.println(ExceptionWithOrigin.getOriginOf(e)); + throw e; + } + } + public void testGHDLInSimulator() throws Exception { try { ProcessStarter.start(null, GHDL, "--help");