kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #39706
Patch for spice netlist
-
To:
kicad-developers@xxxxxxxxxxxxxxxxxxx
-
From:
BERTRAND Joël <joel.bertrand@xxxxxxxxxxx>
-
Date:
Tue, 12 Mar 2019 20:21:52 +0100
-
Autocrypt:
addr=joel.bertrand@xxxxxxxxxxx; prefer-encrypt=mutual; keydata= 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 Tr6FXnLg
-
Openpgp:
preference=signencrypt
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Hello everyone,
I have written a patch for Spice netlist exporter. I spend a lot of
time when I want to switch from .AC analysis to .TRAN or .NOISE. This
patch allows spice exporter to use different configurations with two new
instructions .if and .config.
Usage :
.config <configuration name>
.if <configuration name>: <spice command>
For example :
.title PP7591
.config ac
.if tran: .tran 1u 100m 0 1u
.if ac: .ac dec 10000 1 1MEG
.options method=gear reltol=1m minbreak=200ps
.control
run
write results.raw
.if tran: fourier 1k v("/V1")
.if tran: fourier 1k v("/a1")
.if tran: fourier 1k v("/a2")
.if tran: quit
.if ac: plot 180/PI*(cph("/vf")-cph("/vd"))
.endc
will produce a netlist that contains:
.title PP7591
.config ac
.ac dec 10000 1 1MEG
.options method=gear reltol=1m minbreak=200ps
.control
run
write results.raw
plot 180/PI*(cph("/vf")-cph("/vd"))
.endc
Best regards,
JKB
--- netlist_exporter_pspice.cpp.orig 2019-03-09 10:26:28.153565666 +0100
+++ netlist_exporter_pspice.cpp 2019-03-09 12:10:48.417449513 +0100
@@ -382,6 +382,8 @@
m_directives.clear();
bool controlBlock = false;
+ wxString currentConfig( "" );
+ wxString localConfig( "" );
for( unsigned i = 0; i < sheetList.size(); i++ )
{
@@ -409,11 +411,29 @@
line.Trim( true ).Trim( false );
// Convert to lower-case for parsing purposes only
wxString lowercaseline = line;
+
lowercaseline.MakeLower();
+ if ( lowercaseline.StartsWith( ".if " ) )
+ {
+ localConfig = lowercaseline.AfterFirst( ' ' )
+ .BeforeFirst( ':' ).Trim( false );
+
+ if ( ! localConfig.IsSameAs(currentConfig) )
+ {
+ continue;
+ }
+ else
+ {
+ lowercaseline = lowercaseline.AfterFirst( ':' )
+ .Trim( false );
+ line = line.AfterFirst( ':' ).Trim( false );
+ }
+ }
+
// 'Include' directive stores the library file name, so it
// can be later resolved using a list of paths
- if( lowercaseline.StartsWith( ".inc" ) )
+ if( lowercaseline.StartsWith( ".inc" ) )
{
wxString lib = line.AfterFirst( ' ' );
@@ -437,6 +457,11 @@
m_title = line.AfterFirst( ' ' );
}
+ else if( lowercaseline.StartsWith( ".config " ) )
+ {
+ currentConfig = lowercaseline.AfterFirst( ' ' );
+ }
+
// Handle .control .. .endc blocks
else if( lowercaseline.IsSameAs( ".control" ) && ( !controlBlock ) )
{
Follow ups