From def1f641c76a892a631d9676c73241895a3bf928 Mon Sep 17 00:00:00 2001 From: Johannes Delport Date: Fri, 7 Feb 2020 16:29:04 +0200 Subject: [PATCH] Update README.md --- README.md | 126 ++++++------------------------------------------------ 1 file changed, 12 insertions(+), 114 deletions(-) diff --git a/README.md b/README.md index 36e6d9ee..6f4ee705 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ##### Testing: v2.4 - Status: [![Build Status](https://joeydelp.visualstudio.com/JoSIM/_apis/build/status/JoSIM-CI-Devel?branchName=testing)](https://joeydelp.visualstudio.com/JoSIM/_build/latest?definitionId=1&branchName=testing) -##### Stable: v2.3 - Status: [![Build Status](https://joeydelp.visualstudio.com/JoSIM/_apis/build/status/JoeyDelp.JoSIM?branchName=master)](https://joeydelp.visualstudio.com/JoSIM/_build/latest?definitionId=3&branchName=master) +##### Stable: v2.4 - Status: [![Build Status](https://joeydelp.visualstudio.com/JoSIM/_apis/build/status/JoeyDelp.JoSIM?branchName=master)](https://joeydelp.visualstudio.com/JoSIM/_build/latest?definitionId=3&branchName=master) --- @@ -34,120 +34,18 @@ Referencing: --- -## Getting Started - -### Binary Distributions -Each release of JoSIM CLI is distributed through pre-built binaries for Windows, Mac OS and Linux (Centos 7). These binaries are stand alone and should work as is from any directory on the host system. - -These releases can be found at the [release](https://github.com/JoeyDelp/JoSIM/releases) tab of this repository. - -### Source Compilation -JoSIM requires the following: -- A working C++ development environment -- CMake -- Conan -- [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html) - - -Since the instructions on how to install these for the intended host system vary quite significantly they will not be covered here. - -Download or clone the repository to a local directory: - -`git clone https://github.com/JoeyDelp/JoSIM.git && cd JoSIM` - -Create a directory for the build: - -`mkdir build && cd build` - -Install requirements: - -`conan install ..` - -Run Cmake and make: - -`cmake ..` - -`make` - -This will generate the josim-cli binary along with the library within the current build directory. - -## Usage - -### Binary - -JoSIM CLI can be executed from any cli interface using the following command: - -`josim-cli ` - -Though this will simply print the results of the simulation to standard output. To save the results of the simulation to a file append the output switch: - -`josim-cli -o ` - -Command line switches can be appended in any order as long as an input file is provided. All the available switches can be displayed using the `-h` help switch. - -|Switch|Description| -|-------|----------| -|-a | Specifies the analysis type. -|--analysis= | 0 for Voltage analysis (Default). -| | 1 for Phase analysis. -|-c | Sets the subcircuit convention to left(0) or right(1). -|--convention=| Default is left. WRSpice (normal SPICE) use right. -| | Eg. X01 SUBCKT 1 2 3 vs. X01 1 2 3 SUBCKT -|-h | Displays this help menu -|--help | -|-o | Specify output file for simulation results (.csv). -|--output= | Default will be output.csv if no file is specified. -|-p | (EXPERIMENTAL) Enables parallelization of certain functions. -|--parallel | Requires compilation with OPENMP switch enabled. -| | Threshold applies, overhead on small circuits negates performance. -|-V | Runs JoSIM in verbose mode. -|--verbose | -|-v | Displays the JoSIM version info only. -|--version | - -Multiple examples are included in the *test* folder of this repository - -### libjosim - -The JoSIM C++ library can be used like any other library in the sense that as long as the header files and library are pointed to upon compilation the classes of JoSIM can be used in any other C++ program. - -To ensure that this works the path to the library needs to be specified using the `-L` command and the library using the `-ljosim` command. The path to the header files needs to be specified using `-I` command. This allows the compiler to find the classes declared in JoSIM. - -At present, the library is not very object orientated and rather coupled in the sense that some functions need to be called ahead of others. If the correct procedure is not maintained segmentation faults arise with no meaningful error message. This will change in the future as the code becomes more objectified. - -The current function call order is roughly: -``` -# Create the 4 objects -Input iObj; -Matrix mObj; -Simulation sObj; -Output oObj; - -# Split netlist lines into sections -iObj.split_netlist(iObj.fileLines, iObj.controls, iObj.parameters, iObj.netlist); -# Parse parameters, if any -if (iObj.parameters.unparsedParams.size() > 0) - Parser::parse_parameters(iObj.parameters); -# Expand subcircuits -iObj.expand_subcircuits(); -# Expand main design using expanded subcircuits -iObj.expand_maindesign(); - -# Identify the simulation type -sObj.identify_simulation(iObj.controls, iObj.transSim.prstep, iObj.transSim.tstop, iObj.transSim.tstart, iObj.transSim.maxtstep); -# Create the matrix -mObj.create_matrix(iObj); -# Identify only relevant traces -mObj.find_relevant_x(iObj); -# Perform simulation -sObj.transient_voltage_simulation(iObj, mObj); -# Store results -oObj.relevant_traces(iObj, mObj, sObj); -``` - ---- - ## Changelog +### v2.4 - 07/02/2020 +- Complete rewrite of core internals +- Modularization of each component allowing easier implementation of integration methods +- Error reporting major improvment. Less random exits with no warnings. Better exits. +- Focus on object orientation for improved library access +- Speed up of matrix creation algorithm +- Improvements to output format +- Inclusion of '.include' control card +- Capability to read from standard in using '-i' command +- Various bug fixes + ### v2.3 - 10/05/2019 - Major changes to JoSIM internal engine - Removal of plotting engines in favor of external tools such as Python