Skip to content

Commit fe08718

Browse files
readme
1 parent 0252370 commit fe08718

File tree

3 files changed

+49
-133
lines changed

3 files changed

+49
-133
lines changed

README.html

+27-64
Original file line numberDiff line numberDiff line change
@@ -616,12 +616,11 @@ <h1 class="title">PySpice : Simulate Electronic Circuit using Python and the Ngs
616616
<p><a class="reference external image-reference" href="https://anaconda.org/conda-forge/pyspice/badges/version.svg"><img alt="Anaconda last version" src="https://anaconda.org/conda-forge/pyspice/badges/version.svg" /></a>
617617
<a class="reference external image-reference" href="https://anaconda.org/conda-forge/pyspice/badges/downloads.svg"><img alt="Anaconda donwloads" src="https://anaconda.org/conda-forge/pyspice/badges/downloads.svg" /></a></p>
618618
<p><a class="reference external image-reference" href="https://travis-ci.com/FabriceSalvaire/PySpice"><img alt="PySpice build status &#64;travis-ci.org" src="https://travis-ci.com/FabriceSalvaire/PySpice.svg?branch=master" /></a></p>
619-
<p><a class="reference external image-reference" href="https://github.com/FabriceSalvaire/PySpice/actions/workflows/pyspice-test.yml"><img alt="Pyspice Test" src="https://github.com/FabriceSalvaire/PySpice/actions/workflows/pyspice-test.yml/badge.svg?branch=devel" /></a></p>
620619
<p><strong>Quick Links</strong></p>
621620
<ul class="simple">
622-
<li><p><a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/tree/devel">Devel Branch</a></p></li>
623621
<li><p><a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/tree/master">Production Branch</a></p></li>
624-
<li><p><a class="reference external" href="https://travis-ci.com/github/FabriceSalvaire/PySpice">Travis CI</a> but need free credits...</p></li>
622+
<li><p><a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/tree/devel">Devel Branch</a></p></li>
623+
<li><p><a class="reference external" href="https://travis-ci.com/github/FabriceSalvaire/PySpice">Travis CI</a></p></li>
625624
<li><p><a class="reference external" href="https://github.com/conda-forge/pyspice-feedstock">pyspice&#64;conda-forge</a></p></li>
626625
<li><p><a class="reference external" href="https://anaconda.org/conda-forge/pyspice">conda-forge/pyspice</a></p></li>
627626
<li><p><a class="reference external" href="https://github.com/conda-forge/ngspice-feedstock">ngspice&#64;conda-forge</a></p></li>
@@ -634,13 +633,15 @@ <h2>2024 Update</h2>
634633
<p><strong>Disclaimer: PySpice is developed on my free time actually, so I could be busy with other tasks and less reactive.</strong></p>
635634
<p>The free Discourse forum was closed some time ago due to a lack of activity.
636635
A HTML backup is stored in the directory <cite>pyspice-discourse-backup</cite>.</p>
637-
<p><strong>On HEAD</strong>
638-
* fixed the ngspice library loading for recent cffi
639-
* fixed simulation aborting due to a message from newer ngspice
640-
* fixes for Spice parser
641-
* added support for Pint unit library
642-
* implemented SpiceLibrary
643-
* code cleanup but must check for typo...</p>
636+
<p><strong>On Devel HEAD</strong></p>
637+
<ul class="simple">
638+
<li><p>fixed the ngspice library loading for recent cffi</p></li>
639+
<li><p>fixed simulation aborting due to a message from newer ngspice</p></li>
640+
<li><p>fixes for Spice parser</p></li>
641+
<li><p>added support for Pint unit library</p></li>
642+
<li><p>implemented SpiceLibrary</p></li>
643+
<li><p>code cleanup but must check for typo...</p></li>
644+
</ul>
644645
<!-- Brief Notes
645646
=========== -->
646647
<p>An issue was found with NgSpice Shared, we must <cite>setlocale(LC_NUMERIC, &quot;C&quot;);</cite> see <a class="reference external" href="https://sourceforge.net/p/ngspice/bugs/490/">https://sourceforge.net/p/ngspice/bugs/490/</a></p>
@@ -690,61 +691,23 @@ <h2>Pull Request Recommendation</h2>
690691
</section>
691692
<section id="credits">
692693
<h2>Credits</h2>
693-
<p>Authors: <a class="reference external" href="http://fabrice-salvaire.fr">Fabrice SALVAIRE</a> and <a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/blob/master/CONTRIBUTORS.md">contributors</a></p>
694+
<p>Authors: <a class="reference external" href="http://fabrice-salvaire.fr">Fabrice Salvaire</a> and <a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/blob/master/CONTRIBUTORS.md">contributors</a></p>
694695
</section>
695696
<section id="news">
696697
<h2>News</h2>
697698
<!-- -*- Mode: rst -*- -->
698699
<!-- no title here -->
699-
<section id="vx-y-0-wishes">
700-
<h3>Vx.y.0 (wishes)</h3>
701-
<ul class="simple">
702-
<li><p>The circuit API is actually low level. It is fastidious to work with
703-
and error-prone. Skidl has a very good approach to make the
704-
connections between elements. A clever idea is to make the
705-
connection through loop, e.g. <cite>gnd &amp; C1 &amp; (R1 | R2) &amp; D1 &amp; vcc</cite>.</p></li>
706-
<li><p>Improve Spice library handling, e.g. we have to read the library
707-
code to know how to map the pins, etc.</p></li>
708-
<li><p>Unit should be provided by a third party. We need a library that works well with Spice.</p></li>
709-
</ul>
710-
</section>
711700
<section id="v1-6-0-development-release">
712701
<h3>V1.6.0 (development release)</h3>
713-
<ul>
714-
<li><p><strong>New Simulation API</strong></p>
715-
<pre class="code python literal-block"><code><span class="comment single"># build a circuit</span><span class="whitespace">
716-
717-
</span><span class="comment single"># instantiate a simulator</span><span class="whitespace">
718-
</span><span class="name">simulator</span> <span class="operator">=</span> <span class="name">Simulator</span><span class="operator">.</span><span class="name">factory</span><span class="punctuation">()</span><span class="whitespace">
719-
</span><span class="comment single"># or</span><span class="whitespace">
720-
</span><span class="name">simulator</span> <span class="operator">=</span> <span class="name">Simulator</span><span class="operator">.</span><span class="name">factory</span><span class="punctuation">(</span><span class="name">simulator</span><span class="operator">=</span><span class="literal string single">'ngspice'</span><span class="punctuation">)</span><span class="whitespace">
721-
</span><span class="comment single"># same as</span><span class="whitespace">
722-
</span><span class="name">simulator</span> <span class="operator">=</span> <span class="name">Simulator</span><span class="operator">.</span><span class="name">factory</span><span class="punctuation">(</span><span class="name">simulator</span><span class="operator">=</span><span class="literal string single">'ngspice-shared'</span><span class="punctuation">)</span><span class="whitespace">
723-
724-
</span><span class="comment single"># create a simulation, it corresponds to the Spice code part with lines starting with &quot;.something ...&quot;</span><span class="whitespace">
725-
</span><span class="name">simulation</span> <span class="operator">=</span> <span class="name">simulator</span><span class="operator">.</span><span class="name">simulation</span><span class="punctuation">(</span><span class="name">circuit</span><span class="punctuation">,</span> <span class="name">temperature</span><span class="operator">=</span><span class="literal number integer">25</span><span class="punctuation">,</span> <span class="name">nominal_temperature</span><span class="operator">=</span><span class="literal number integer">25</span><span class="punctuation">)</span><span class="whitespace">
726-
</span><span class="comment single"># define an analysis and run it</span><span class="whitespace">
727-
</span><span class="name">analysis</span> <span class="operator">=</span> <span class="name">simulation</span><span class="operator">.</span><span class="name">transient</span><span class="punctuation">(</span><span class="name">step_time</span><span class="operator">=</span><span class="name">ac_line</span><span class="operator">.</span><span class="name">period</span><span class="operator">/</span><span class="literal number integer">200</span><span class="punctuation">,</span> <span class="name">end_time</span><span class="operator">=</span><span class="name">ac_line</span><span class="operator">.</span><span class="name">period</span><span class="operator">*</span><span class="literal number integer">50</span><span class="punctuation">,</span> <span class="name">log_desk</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span><span class="whitespace">
728-
</span><span class="comment single"># analysis is now Pickable</span></code></pre>
729-
</li>
730-
<li><p>Simulation output is now Pickable</p></li>
731-
<li><p>The <strong>Spice parser</strong> was rewritten from scratch using the <a class="reference external" href="https://www.dabeaz.com/ply">PLY</a>
732-
library, which is an implementation of lex and yacc parsing tools for Python. The LALR parser
733-
generates an AST from a BNF grammar written from scratch using the Ngspice manual. Up to now, it
734-
only requires a hack to handle the grammar, cf. XSpice vector syntax <code>[1 -1 -2]</code> which
735-
interfere with mathematical expression. PySpice is now able to parse completely and properly all
736-
the examples from the Ngspice manual. However, the processing of the AST does actually the bare
737-
minimum.</p></li>
702+
<ul class="simple">
738703
<li><p><strong>KiCadTools</strong> a proof of concept module to read KiCad 6
739704
<cite>.kicad_sch</cite> schema file and compute the netlist. <em>This module can
740-
be used to perform any kind of processing on a KiCad schema. It is
705+
be used to perform any kind of processings on a KiCad schema. It is
741706
actually hosted in the source but could become a standalone
742707
project.</em> For PySpice, it provides a very flexible way to draft a
743708
circuit with the help of KiCad and then generate the netlist without
744709
using the netlist export feature of KiCad. And thus leverage the
745-
writing of fastidious circuit.</p></li>
746-
<li><p>The most common PySpice parts can be imported from <code>from PySpice import ...</code></p></li>
747-
<li><p>Logging setup code clean-up</p></li>
710+
writing of fastidious cicruit.</p></li>
748711
</ul>
749712
</section>
750713
<section id="v1-5-0-production-release-2021-05-15">
@@ -766,37 +729,37 @@ <h3>V1.5.0 (production release) 2021-05-15</h3>
766729
<li><p><cite>Netlist.py</cite>: Fix wrong method when joining parameters during netlist parse #245 (thanks to cyber-g)</p></li>
767730
<li><p>Unit: add Pickle support</p></li>
768731
<li><p>Add Parser code from #136 (thanks to jmgc) but not yet merged</p></li>
769-
<li><p>Unit: add <code>np.mean</code></p></li>
732+
<li><p>Unit: add np.mean</p></li>
770733
</ul>
771734
</section>
772735
<section id="v1-4-3-2020-07-04">
773736
<h3>V1.4.3 2020-07-04</h3>
774737
<p>A huge effort, thanks to &#64;stuarteberg Stuart Berg, has been made to make Ngspice and PySpice
775738
available on Anaconda (conda-forge) for the Window, OSX and Linux platforms. Thanks to the
776-
conda-forge continuous integration platform, we can now run unit tests and the examples on these
739+
conda-forge continuous integration platform, we can now run unit tests and the examples on theses
777740
platforms automatically. Hope this will make the software more robust and easier to run !</p>
778741
<ul class="simple">
779742
<li><p>PySpice is now available on Anaconda(conda-forge) as well as a wheel on PyPI</p></li>
780743
<li><p>Added a post installation tool to download the Ngspice DLL on Windows and to check the installation.
781744
It should now simplify considerably the PySpice installation on Windows.</p></li>
782745
<li><p>This tool can also download the examples and the Ngspice PDF manual.</p></li>
783746
<li><p>On Linux and OSX, a Ngspice package is now available on Anaconda(conda-forge).
784-
Note that theses two platforms do not download a binary from Ngspice since a compiler can easily be installed on these platforms.</p></li>
747+
Note that theses two platforms do not download a binary from Ngspice since a compiler can easily be installed on theses platforms.</p></li>
785748
<li><p>Updated installation documentation for Linux, the main distributions now provide a ngspice shared package.</p></li>
786-
<li><p>Added a front-end website to keep older releases documentation available on the web.</p></li>
749+
<li><p>Added a front-end web site so as to keep older releases documentation available on the web.</p></li>
787750
<li><p>fixed and rebuilt all examples (but mistakes could happen ...)</p></li>
788751
<li><p>examples are now available as Python files and Jupyter notebooks
789752
(but some issues must be fixed, e.g. due to the way Jupyter handles Matplotlib plots)</p></li>
790753
<li><p>support NgSpice 32 API (no change)</p></li>
791-
<li><p>removed <code>&#64;substitution&#64;</code> in PySpice/__init__.py, beacause it breaks pip install from git</p></li>
754+
<li><p>removed &#64;substitution&#64; in PySpice/__init__.py, beacause it breaks pip install from git</p></li>
792755
<li><p>fixed some logging spams</p></li>
793756
<li><p>fixed NonLinearVoltageSource</p></li>
794757
<li><p>fixed Unicode issue with °C (° is Extended ASCII)</p></li>
795758
<li><p>fixed ffi_string_utf8 for UnicodeDecodeError</p></li>
796-
<li><p>fixed logging formatter for OSX (removed ANSI codes)</p></li>
759+
<li><p>fixed logging formater for OSX (removed ANSI codes)</p></li>
797760
<li><p>reworded &quot;Invalid plot name&quot; exception</p></li>
798761
<li><p>removed diacritics in example filenames</p></li>
799-
<li><p>cir2py has been converted to an entry point to work on all platforms</p></li>
762+
<li><p>cir2py has been converted to an entry point so as to work on all platforms</p></li>
800763
<li><p>updated Matplotlib subplots in examples</p></li>
801764
<li><p>added a unit example</p></li>
802765
<li><p>added a NMOS example (thanks to cyber-g) cf. #221</p></li>
@@ -816,7 +779,7 @@ <h3>V1.4.0 2020-05-05</h3>
816779
<li><p>support NgSpice 31 API (no change)</p></li>
817780
<li><p>added check for <cite>CoupledInductor</cite> #157</p></li>
818781
<li><p>added <cite>check-installation</cite> tool to help to fix broken installation</p></li>
819-
<li><p>added pole-zero, noise, distortion, transfer-function analyses (thanks to Peter Garrone) #191</p></li>
782+
<li><p>added pole-zero, noise, distorsion, transfer-function analyses (thanks to Peter Garrone) #191</p></li>
820783
<li><p>added <cite>.measure</cite> support (thanks to ceprio) #160</p></li>
821784
<li><p>added <cite>log_desk</cite> parameter to <cite>CircuitSimulator</cite></p></li>
822785
<li><p>added <cite>listing</cite> command method to <cite>NgSpiceShared</cite></p></li>
@@ -844,7 +807,7 @@ <h3>V1.2.0 2018-06-07</h3>
844807
<li><p>Implemented missing transmission line devices</p></li>
845808
<li><p>Implemented high level current sources
846809
<strong>Notice: Some classes were renamed !</strong></p></li>
847-
<li><p>Implemented node kwargs e.g. <code>circuit.Q(1, base=1, collector=2, emitter=3, model='npn')</code></p></li>
810+
<li><p>Implemented node kwarg e.g. <code>circuit.Q(1, base=1, collector=2, emitter=3, model='npn')</code></p></li>
848811
<li><p>Implemented raw spice pass through (see <a class="reference external" href="/faq.html">User FAQ</a>)</p></li>
849812
<li><p>Implemented access to internal parameters (cf. <code>save &#64;device[parameter]</code>)</p></li>
850813
<li><p>Implemented check for missing ground node</p></li>
@@ -858,9 +821,9 @@ <h3>V1.2.0 2018-06-07</h3>
858821
<li><p>Rebased <cite>WaveForm</cite> to <cite>UnitValues</cite></p></li>
859822
</ul>
860823
</li>
861-
<li><p>Fixed node order to not confuse users <strong>Now PySpice matches SPICE order for two ports elements !</strong></p></li>
824+
<li><p>Fixed node order so as to not confuse users <strong>Now PySpice matches SPICE order for two ports elements !</strong></p></li>
862825
<li><p>Fixed device shortcuts in <cite>Netlist</cite> class</p></li>
863-
<li><p>Fixed model kwargs for BJT <strong>Notice: it must be passed exclusively as kwargs !</strong></p></li>
826+
<li><p>Fixed model kwarg for BJT <strong>Notice: it must be passed exclusively as kwarg !</strong></p></li>
864827
<li><p>Fixed subcircuit nesting</p></li>
865828
<li><p>Outsourced documentation generator to <a class="reference external" href="https://github.com/FabriceSalvaire/Pyterate">Pyterate</a></p></li>
866829
<li><p>Updated <cite>setup.py</cite> for wheel</p></li>
@@ -892,7 +855,7 @@ <h3>V0.4.2</h3>
892855
<section id="v0-4-0-2017-07-31">
893856
<h3>V0.4.0 2017-07-31</h3>
894857
<ul class="simple">
895-
<li><p>Git repository clean-up: filtered generated doc and useless files to shrink the repository size.</p></li>
858+
<li><p>Git repository cleanup: filtered generated doc and useless files so as to shrink the repository size.</p></li>
896859
<li><p>Improved documentation generator: Implemented <code>format</code> for RST content and Tikz figure.</p></li>
897860
<li><p>Improved unit support: It implements now the International System of Units.
898861
And we can now use unit helper like <code>u_mV</code> or compute the value of <code>1.2&#64;u_kΩ / 2&#64;u_mA</code>.

0 commit comments

Comments
 (0)