Skip to content

Commit

Permalink
update config
Browse files Browse the repository at this point in the history
  • Loading branch information
timmolter committed Apr 20, 2018
1 parent 4780d15 commit 0a778da
Show file tree
Hide file tree
Showing 11 changed files with 85 additions and 118 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
<dependency>
<groupId>org.knowm.konfig</groupId>
<artifactId>konfig</artifactId>
<version>0.0.1</version>
<version>0.0.3-SNAPSHOT</version>
</dependency>

<dependency>
Expand Down
24 changes: 11 additions & 13 deletions src/main/java/org/knowm/jspice/JSpice.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@
import java.io.IOException;
import java.io.PrintStream;

import org.knowm.configuration.ConfigurationException;
import org.knowm.configuration.ConfigurationFactory;
import org.knowm.configuration.YamlConfigurationFactory;
import org.knowm.configuration.provider.ConfigurationSourceProvider;
import org.knowm.configuration.provider.FileConfigurationSourceProvider;
import org.knowm.configuration.provider.ResourceConfigurationSourceProvider;
import org.knowm.jackson.Jackson;
import org.knowm.jspice.netlist.Netlist;
import org.knowm.jspice.netlist.spice.SPICENetlistBuilder;
import org.knowm.jspice.simulate.SimulationConfig;
Expand All @@ -38,15 +45,7 @@
import org.knowm.jspice.simulate.dcsweep.DCSweepConfig;
import org.knowm.jspice.simulate.transientanalysis.TransientAnalysis;
import org.knowm.jspice.simulate.transientanalysis.TransientConfig;

import io.dropwizard.configuration.ConfigurationException;
import io.dropwizard.configuration.ConfigurationFactory;
import io.dropwizard.configuration.ConfigurationSourceProvider;
import io.dropwizard.configuration.FileConfigurationSourceProvider;
import io.dropwizard.configuration.ResourceConfigurationSourceProvider;
import io.dropwizard.configuration.YamlConfigurationFactory;
import io.dropwizard.jackson.Jackson;
import io.dropwizard.validation.BaseValidator;
import org.knowm.validation.BaseValidator;

public class JSpice {

Expand All @@ -73,7 +72,7 @@ public static SimulationResult simulate(String fileName) throws IOException, Con
// SPICE Netlist, must end in `.cir`
if (fileName.endsWith(".cir")) {

// System.out.println("...............Executing netList.... " + fileName);
// System.out.println("...............Executing netList.... " + fileName);

try {
netlist = SPICENetlistBuilder.buildFromSPICENetlist(fileName, new FileConfigurationSourceProvider());
Expand Down Expand Up @@ -174,10 +173,10 @@ public static SimulationResult simulate(Netlist netlist) {
} else {

System.out.println(simulationResult.toString());
// System.out.println(simulationResult.toXyceString());
// System.out.println(simulationResult.toXyceString());

// plot
// SimulationPlotter.plotAll(simulationResult);
// SimulationPlotter.plotAll(simulationResult);
// SimulationPlotter.plot(simulationResult, "V(y)");
// SimulationPlotter.plot(simulationResult, "R(MR2_X1)", "R(MR1_X1)");
}
Expand All @@ -188,4 +187,3 @@ public static SimulationResult simulate(Netlist netlist) {
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,18 @@
import java.util.Map;
import java.util.Map.Entry;

import org.knowm.configuration.provider.ConfigurationSourceProvider;
import org.knowm.jspice.netlist.Netlist;
import org.knowm.jspice.netlist.NetlistBuilder;
import org.knowm.jspice.simulate.transientanalysis.driver.Driver;
import org.knowm.jspice.simulate.transientanalysis.driver.Pulse;
import org.knowm.jspice.simulate.transientanalysis.driver.Sine;

import io.dropwizard.configuration.ConfigurationSourceProvider;

public class SPICENetlistBuilder {

public static Netlist buildFromSPICENetlist(String fileName, ConfigurationSourceProvider configurationSourceProvider) throws IOException {

// System.out.println("...............Preprocessing the Netlist.................");
// System.out.println("...............Preprocessing the Netlist.................");
List<String> netlistLines = getPreProcessedLines(fileName, configurationSourceProvider);

Map<String, SPICESubckt> subcircuitMap = new HashMap<>();
Expand Down Expand Up @@ -139,7 +138,7 @@ public static Netlist buildFromSPICENetlist(String fileName, ConfigurationSource
linesWithSubckts.add(line);
}
}
// System.out.println("...............Parsing the Netlist.................");
// System.out.println("...............Parsing the Netlist.................");

// Temporary Lists/Maps
NetlistBuilder netlistBuilder = new NetlistBuilder();
Expand Down Expand Up @@ -171,7 +170,7 @@ public static Netlist buildFromSPICENetlist(String fileName, ConfigurationSource
printItemMap.put(keyValue[0], keyValue[1]);

String resFormat = keyValue[1];
// System.out.println("resFormat: " + resFormat);
// System.out.println("resFormat: " + resFormat);

netlistBuilder.setResultsFormat(resFormat);
}
Expand All @@ -181,7 +180,7 @@ public static Netlist buildFromSPICENetlist(String fileName, ConfigurationSource

String resFilename = keyValue[1];

// System.out.println("resFilename: " + resFilename);
// System.out.println("resFilename: " + resFilename);
netlistBuilder.setResultsFile(resFilename);
}
}
Expand Down Expand Up @@ -269,27 +268,27 @@ else if (line.startsWith(".PARAM") || line.startsWith(".param")) {
String widthAsString = SPICEUtils.ifExists(tokens, 5);
String periodAsString = SPICEUtils.ifExists(tokens, 6);

// System.out.println("v1AsString = " + v1AsString);
// System.out.println("v2AsString = " + v2AsString);
// System.out.println("widthAsString = " + widthAsString);
// System.out.println("periodAsString = " + periodAsString);
// System.out.println("v1AsString = " + v1AsString);
// System.out.println("v2AsString = " + v2AsString);
// System.out.println("widthAsString = " + widthAsString);
// System.out.println("periodAsString = " + periodAsString);

// conversion from SPICE to JSPICE driver

double v1 = SPICEUtils.doubleFromString(v1AsString, 0);
double v2 = SPICEUtils.doubleFromString(v2AsString, 0);
BigDecimal width = SPICEUtils.bigDecimalFromString(widthAsString, "0");
BigDecimal period = SPICEUtils.bigDecimalFromString(periodAsString, "0");
// System.out.println("period = " + period);
// System.out.println("period = " + period);

double dcOffset = (v1 + v2) / 2;
double amplitude = Math.abs(v1 - v2) / 2;

BigDecimal frequency = BigDecimal.ONE.divide(period, MathContext.DECIMAL128);
BigDecimal dutyCycle = v2 > v1 ? width.divide(period, MathContext.DECIMAL128) : (period.subtract(width)).divide(period, MathContext
.DECIMAL128);
BigDecimal dutyCycle = v2 > v1 ? width.divide(period, MathContext.DECIMAL128)
: (period.subtract(width)).divide(period, MathContext.DECIMAL128);
BigDecimal phase = v2 > v1 ? BigDecimal.ZERO : period.multiply(dutyCycle);
// BigDecimal phase = BigDecimal.ZERO;
// BigDecimal phase = BigDecimal.ZERO;

drivers.add(new Pulse(id, dcOffset, phase.toString(), amplitude, frequency.toString(), dutyCycle.toString()));
}
Expand Down
5 changes: 2 additions & 3 deletions src/test/java/org/knowm/jspice/TestSPICENetlistBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,12 @@
import java.io.IOException;

import org.junit.Test;
import org.knowm.configuration.provider.ResourceConfigurationSourceProvider;
import org.knowm.jspice.component.element.memristor.MMSSMemristor;
import org.knowm.jspice.netlist.Netlist;
import org.knowm.jspice.netlist.spice.SPICENetlistBuilder;
import org.knowm.jspice.simulate.transientanalysis.TransientConfig;

import io.dropwizard.configuration.ResourceConfigurationSourceProvider;

public class TestSPICENetlistBuilder {

@Test
Expand Down Expand Up @@ -172,12 +171,12 @@ public void test5() throws IOException {

JSpice.simulate(netlist);
}

@Test
public void test6() throws IOException {

Netlist netlist = SPICENetlistBuilder.buildFromSPICENetlist("knowm_mem1R1_pulse_netlist_2us.cir", new ResourceConfigurationSourceProvider());


JSpice.simulate(netlist);
}

Expand Down
3 changes: 1 addition & 2 deletions src/test/java/org/knowm/jspice/dcop/DCOPI1R1.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,9 @@

import java.io.IOException;

import org.knowm.configuration.ConfigurationException;
import org.knowm.jspice.JSpice;

import io.dropwizard.configuration.ConfigurationException;

/**
* @author timmolter
*/
Expand Down
44 changes: 17 additions & 27 deletions src/test/java/org/knowm/jspice/memristor/kTSynapse_FFRA.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.ArrayList;
import java.util.List;

import org.knowm.configuration.ConfigurationException;
import org.knowm.jspice.JSpice;
import org.knowm.jspice.netlist.Netlist;
import org.knowm.jspice.netlist.NetlistBuilder;
Expand All @@ -17,8 +18,6 @@
import org.knowm.xchart.XYChart;
import org.knowm.xchart.XYChartBuilder;

import io.dropwizard.configuration.ConfigurationException;

public class kTSynapse_FFRA {

private final static String STOP_TIME = "10us";
Expand Down Expand Up @@ -76,7 +75,7 @@ private void go(boolean fromCirFile) throws IOException, ConfigurationException
netlist = getFFNetlist(R_A, R_B);
simulationResult = JSpice.simulate(netlist);
}
// System.out.println("simulationResult = " + simulationResult);
// System.out.println("simulationResult = " + simulationResult);
double[] VyRaRb;
// 3. get Vy, R_A and R_B
VyRaRb = getVyRaRb(simulationResult);
Expand All @@ -100,7 +99,7 @@ private void go(boolean fromCirFile) throws IOException, ConfigurationException
}

R_B = getR(simulationResult, "R(MB)");
// System.out.println("RH");
// System.out.println("RH");
}
// RL
else {
Expand All @@ -114,7 +113,7 @@ private void go(boolean fromCirFile) throws IOException, ConfigurationException
simulationResult = JSpice.simulate(netlist);
}
R_A = getR(simulationResult, "R(MA)");
// System.out.println("RL");
// System.out.println("RL");
}
}

Expand All @@ -131,12 +130,12 @@ private void go(boolean fromCirFile) throws IOException, ConfigurationException

private void readReplaceWrite(String cirTemplate, double R_A, double R_B) {

// System.out.println("cirTemplate = " + cirTemplate);
// System.out.println("cirTemplate = " + cirTemplate);
String out = getClass().getClassLoader().getResource(cirTemplate).getPath().replace(".cir", ".tmp.cir");
// System.out.println("out = " + out);
// System.out.println("out = " + out);
// read, replace, write from resources folder
try (InputStreamReader isReader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream(cirTemplate));
BufferedWriter bw = new BufferedWriter(new FileWriter(out))) {
BufferedWriter bw = new BufferedWriter(new FileWriter(out))) {
String buf = null;
BufferedReader rdr = new BufferedReader(isReader);
while ((buf = rdr.readLine()) != null) {
Expand All @@ -159,9 +158,9 @@ private double[] getVyRaRb(SimulationResult simulationResult) {
double R_A = rAData.get(rAData.size() - 1).doubleValue();
List<Number> rBData = simulationResult.getSimulationPlotDataMap().get("R(MB)").getyData();
double R_B = rBData.get(rBData.size() - 1).doubleValue();
// System.out.println("Vy = " + Vy);
// System.out.println("R_A = " + R_A);
// System.out.println("R_B = " + R_B);
// System.out.println("Vy = " + Vy);
// System.out.println("R_A = " + R_A);
// System.out.println("R_B = " + R_B);
return new double[]{Vy, R_A, R_B};
}

Expand All @@ -174,32 +173,23 @@ private double getR(SimulationResult simulationResult, String memristorKey) {

Netlist getFFNetlist(double R_A, double R_B) {

Netlist netlist = new NetlistBuilder()
.addNetlistMSSMemristor("MA", R_A, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "A", "y")
.addNetlistMSSMemristor("MB", R_B, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "y", "0")
.addNetlistDCVoltage("VA", 0, "A", "0")
.addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VA", 2 * Y_THRESH))
.build();
Netlist netlist = new NetlistBuilder().addNetlistMSSMemristor("MA", R_A, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "A", "y")
.addNetlistMSSMemristor("MB", R_B, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "y", "0").addNetlistDCVoltage("VA", 0, "A", "0")
.addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VA", 2 * Y_THRESH)).build();
return netlist;
}

Netlist getRHNetlist(double R_A, double R_B) {

Netlist netlist = new NetlistBuilder()
.addNetlistMSSMemristor("MB", R_B, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "y", "0")
.addNetlistDCVoltage("VY", 0, "y", "0")
.addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VY", -Y_THRESH))
.build();
Netlist netlist = new NetlistBuilder().addNetlistMSSMemristor("MB", R_B, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "y", "0")
.addNetlistDCVoltage("VY", 0, "y", "0").addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VY", -Y_THRESH)).build();
return netlist;
}

Netlist getRLNetlist(double R_A, double R_B) {

Netlist netlist = new NetlistBuilder()
.addNetlistMSSMemristor("MA", R_A, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "A", "0")
.addNetlistDCVoltage("VA", 0, "A", "0")
.addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VA", -Y_THRESH))
.build();
Netlist netlist = new NetlistBuilder().addNetlistMSSMemristor("MA", R_A, R_ON, R_OFF, N, TAU, V_ON, V_OFF, phi, sa, sb, sa, sb, "A", "0")
.addNetlistDCVoltage("VA", 0, "A", "0").addTransientSimulationConfig(STOP_TIME, TIME_STEP, new DC("VA", -Y_THRESH)).build();
return netlist;
}

Expand Down
Loading

0 comments on commit 0a778da

Please sign in to comment.