Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeyDelp authored Feb 7, 2020
1 parent 2e1a2a0 commit def1f64
Showing 1 changed file with 12 additions and 114 deletions.
126 changes: 12 additions & 114 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

---

Expand Down Expand Up @@ -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 <input file>`

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 <input file> -o <output file>`

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
Expand Down

0 comments on commit def1f64

Please sign in to comment.