From 3cf2f2444ffd14fe5a8cdf647f0196dd865cef48 Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 8 Jun 2015 01:37:06 +0200 Subject: [PATCH] Added some more discrete components. (nw) --- nl_examples/kidniki.c | 298 ++++++++++++++++++++++++------------------ 1 file changed, 172 insertions(+), 126 deletions(-) diff --git a/nl_examples/kidniki.c b/nl_examples/kidniki.c index c03cf00af81..8beb47c8249 100644 --- a/nl_examples/kidniki.c +++ b/nl_examples/kidniki.c @@ -1,6 +1,10 @@ #include "netlist/devices/net_lib.h" +#include "netlist/devices/nld_system.h" #include "netlist/analog/nld_bjt.h" +#define USE_FRONTIERS 0 +#define USE_FIXED_STV 0 +/* 1.767 */ NETLIST_START(dummy) // EESCHEMA NETLIST VERSION 1.1 (SPICE FORMAT) CREATION DATE: SAT 06 JUN 2015 01:06:26 PM CEST @@ -11,9 +15,9 @@ NETLIST_START(dummy) // .END SOLVER(Solver, 12000) PARAM(Solver.ACCURACY, 1e-7) -PARAM(Solver.NR_LOOPS, 50) +PARAM(Solver.NR_LOOPS, 200) PARAM(Solver.GS_LOOPS, 4) -PARAM(Solver.SOR_FACTOR, 1.0) +PARAM(Solver.SOR_FACTOR, 1) #if 0 PARAM(Solver.SOR_FACTOR, 1) PARAM(Solver.DYNAMIC_TS, 1) @@ -30,7 +34,7 @@ NET_MODEL(".model 1S1588 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m * model the internals of the inputs. */ -ANALOG_INPUT(VWORKAROUND, 1.821) +ANALOG_INPUT(VWORKAROUND, 2.061) RES(RWORKAROUND, RES_K(27)) NET_C(VWORKAROUND.Q, RWORKAROUND.1) NET_C(XU1.6, RWORKAROUND.2) @@ -54,162 +58,203 @@ TTL_INPUT(I_BD0, 1) CLOCK(I_CH0, 50) TTL_INPUT(I_OH0, 1) TTL_INPUT(I_SOUNDIC0, 1) -ANALOG_INPUT(I_OKI0, 0) +ANALOG_INPUT(I_MSM2K0, 0) +ANALOG_INPUT(I_MSM3K0, 0) TTL_INPUT(I_SOUND0, 1) TTL_INPUT(I_SINH0, 1) #endif -RES(R95, RES_K(330)) -TTL_7404_DIP(XU3) -CAP(C69, CAP_N(10)) -RES(R96, RES_K(150)) -RES(R103, RES_K(470)) -CAP(C73, CAP_N(10)) -RES(R102, RES_K(150)) -RES(R105, RES_K(470)) -CAP(C72, CAP_N(12)) -RES(R106, RES_K(150)) -RES(R108, RES_K(560)) -CAP(C77, CAP_N(12)) -RES(R107, RES_K(150)) -RES(R100, RES_K(560)) -CAP(C67, CAP_N(15)) -RES(R101, RES_K(150)) -RES(R98, RES_K(650)) -CAP(C68, CAP_N(15)) -RES(R97, RES_K(150)) -RES(R65, RES_K(1)) -CAP(C63, CAP_N(1)) -RES(R65_1, RES_K(27)) -RES(R30, RES_K(10)) -RES(R44, RES_K(100)) +INCLUDE(kidniki_schematics) + +#if (USE_FRONTIERS) +OPTIMIZE_FRONTIER(C63.2, RES_K(27), RES_K(1)) +OPTIMIZE_FRONTIER(R31.2, RES_K(5.1), 50) +OPTIMIZE_FRONTIER(R29.2, RES_K(2.7), 50) +#endif + +NETLIST_END() + +NETLIST_START(kidniki_schematics) + +CAP(C200, CAP_N(100)) +CAP(C28, CAP_U(1)) +CAP(C31, CAP_N(470)) +CAP(C32, CAP_N(3.3)) +CAP(C33, CAP_U(1)) +CAP(C34, CAP_N(1)) +CAP(C35, CAP_N(1)) +CAP(C36, CAP_N(6.5)) +CAP(C37, CAP_N(22)) CAP(C38, CAP_N(1)) CAP(C39, CAP_N(1)) -RES(R38, 820) CAP(C40, CAP_P(12)) -SUBMODEL(LM324_DIP,XU1) -RES(R48_2, RES_K(100)) -CAP(C45, CAP_N(22)) -RES(R54, RES_K(680)) -RES(R55, RES_K(510)) -RES(R45, RES_K(1)) -CAP(C44, CAP_U(1)) -RES(R66, RES_M(1)) -QBJT_EB(Q4, "2SC945") -RES(R70, RES_K(10)) -RES(R63, RES_K(1)) -RES(R69, RES_K(1)) -CAP(C49, CAP_N(3.3)) -CAP(C42, CAP_N(1.2)) -RES(R58, RES_K(39)) -RES(R57, 560) -CAP(C47, CAP_U(1)) -QBJT_EB(Q6, "2SC945") -CAP(C50, CAP_N(22)) -RES(R72, RES_K(100)) -RES(R67, RES_K(100)) -RES(R61, RES_K(100)) -CAP(C51, CAP_N(22)) -RES(R71, RES_K(100)) -RES(R68, RES_K(100)) -RES(R62, RES_K(100)) -QBJT_EB(Q5, "2SC945") -RES(R60, RES_K(39)) -RES(R59, 560) -CAP(C48, CAP_U(1)) -CAP(C43, CAP_N(1.2)) -RES(R46, RES_K(12)) -CAP(C35, CAP_N(1)) -CAP(C34, CAP_N(1)) -RES(R39, RES_K(22)) -RES(R41, RES_K(10)) -RES(R32, RES_K(4.7)) -CAP(C31, CAP_N(470)) -RES(R40, RES_K(10)) -RES(R27, RES_K(6.8)) -CAP(C28, CAP_U(1)) -RES(R28, RES_K(150)) -RES(R29, RES_K(2.7)) -RES(R31, RES_K(5.1)) -RES(R42, RES_K(150)) -RES(R51, RES_K(150)) -CAP(C36, CAP_N(6.5)) -CAP(C32, CAP_N(3.3)) CAP(C41, CAP_U(1)) -RES(R43, 470) -SUBMODEL(LM358_DIP,XU2) -RES(R50, RES_K(22)) -CAP(C56, CAP_N(6.8)) -RES(R75, RES_K(10)) -RES(R74, RES_K(10)) -CAP(C53, CAP_N(27)) +CAP(C42, CAP_N(1.2)) +CAP(C43, CAP_N(1.2)) +CAP(C44, CAP_U(1)) +CAP(C45, CAP_N(22)) +CAP(C47, CAP_U(1)) +CAP(C48, CAP_N(470)) +CAP(C49, CAP_N(3.3)) +CAP(C50, CAP_N(22)) +CAP(C51, CAP_N(22)) CAP(C52, CAP_N(27)) -RES(R73, RES_K(10)) -RES(R76, RES_K(10)) -RES(R78, RES_K(3.3)) -RES(R77, RES_K(2.2)) -CAP(C58, CAP_U(47)) -RES(R49, RES_K(10)) -RES(R48, 470) -QBJT_EB(Q9, "2SC945") -QBJT_EB(Q10, "2SC945") -RES(R84, RES_K(1)) -CAP(C61, CAP_N(22)) +CAP(C53, CAP_N(27)) +CAP(C56, CAP_N(6.8)) +CAP(C57, CAP_N(6.8)) +CAP(C59, CAP_N(6.8)) CAP(C60, CAP_N(22)) -RES(R87, RES_K(68)) -RES(R86, RES_K(10)) -RES(R93, RES_K(1)) -RES(R85, RES_M(2.2)) +CAP(C61, CAP_N(22)) +CAP(C62, CAP_N(6.8)) +CAP(C63, CAP_N(1)) CAP(C64, CAP_N(68)) CAP(C65, CAP_N(68)) CAP(C66, CAP_N(68)) -CAP(C76, CAP_N(68)) -RES(R94, RES_K(22)) -RES(R119, RES_K(22)) -RES(R104, RES_K(22)) -RES(R53, RES_K(100)) -RES(R34, RES_K(100)) -RES(R52, RES_K(100)) -CAP(C37, CAP_N(22)) -RES(R83, RES_K(12)) -RES(R81, 220) -RES(R82, RES_M(2.2)) -RES(R92, RES_K(22)) -RES(R89, RES_K(22)) -CAP(C62, CAP_N(6.8)) -CAP(C57, CAP_N(6.8)) -CAP(C59, CAP_N(6.8)) -RES(R90, RES_K(390)) -CAP(C33, CAP_U(1)) -RES(R37, RES_K(47)) -QBJT_EB(Q3, "2SC945") -RES(R35, RES_K(100)) -RES(R36, RES_K(100)) -RES(R91, RES_K(100)) +CAP(C67, CAP_N(15)) +CAP(C68, CAP_N(15)) +CAP(C69, CAP_N(10)) CAP(C70, CAP_N(22)) +CAP(C72, CAP_N(12)) +CAP(C73, CAP_N(10)) +CAP(C76, CAP_N(68)) +CAP(C77, CAP_N(12)) + +DIODE(D3, "1S1588") DIODE(D4, "1S1588") DIODE(D5, "1S1588") -DIODE(D3, "1S1588") + POT(RV1, RES_K(50)) + +QBJT_EB(Q10, "2SC945") +QBJT_EB(Q3, "2SC945") +QBJT_EB(Q4, "2SC945") +QBJT_EB(Q5, "2SC945") +QBJT_EB(Q6, "2SC945") QBJT_EB(Q7, "2SC945") +QBJT_EB(Q9, "2SC945") + +SUBMODEL(LM324_DIP,XU1) +SUBMODEL(LM358_DIP,XU2) + +TTL_7404_DIP(XU3) + +RES(R100, RES_K(560)) +RES(R101, RES_K(150)) +RES(R102, RES_K(150)) +RES(R103, RES_K(470)) +RES(R104, RES_K(22)) +RES(R105, RES_K(470)) +RES(R106, RES_K(150)) +RES(R107, RES_K(150)) +RES(R108, RES_K(560)) +RES(R119, RES_K(22)) +RES(R200, RES_K(100)) +RES(R201, RES_K(100)) +RES(R27, RES_K(6.8)) +RES(R28, RES_K(150)) +RES(R29, RES_K(2.7)) +RES(R30, RES_K(10)) +RES(R31, RES_K(5.1)) +RES(R32, RES_K(4.7)) +RES(R34, RES_K(100)) +RES(R35, RES_K(100)) +RES(R36, RES_K(100)) +RES(R37, RES_K(47)) +RES(R38, 820) +RES(R39, RES_K(22)) +RES(R40, RES_K(10)) +RES(R41, RES_K(10)) +RES(R42, RES_K(150)) +RES(R43, 470) +RES(R44, RES_K(100)) +RES(R45, RES_K(1)) +RES(R46, RES_K(12)) +RES(R48, 470) +RES(R48_2, RES_K(100)) +RES(R49, RES_K(10)) +RES(R50, RES_K(22)) +RES(R51, RES_K(150)) +RES(R52, RES_K(100)) +RES(R53, RES_K(100)) +RES(R54, RES_K(680)) +RES(R55, RES_K(510)) +RES(R57, 560) +RES(R58, RES_K(39)) +RES(R59, 560) +RES(R60, RES_K(39)) +RES(R61, RES_K(100)) +RES(R62, RES_K(100)) +RES(R63, RES_K(1)) +RES(R65, RES_K(1)) +RES(R65_1, RES_K(27)) +RES(R66, RES_M(1)) +RES(R67, RES_K(100)) +RES(R68, RES_K(100)) +RES(R69, RES_K(1)) +RES(R70, RES_K(10)) +RES(R71, RES_K(100)) +RES(R72, RES_K(100)) +RES(R73, RES_K(10)) +RES(R74, RES_K(10)) +RES(R75, RES_K(10)) +RES(R76, RES_K(10)) +RES(R81, 220) +RES(R82, RES_M(2.2)) +RES(R83, RES_K(12)) +RES(R84, RES_K(1)) +RES(R85, RES_M(2.2)) +RES(R86, RES_K(10)) +RES(R87, RES_K(68)) +RES(R89, RES_K(22)) +RES(R90, RES_K(390)) +RES(R91, RES_K(100)) +RES(R92, RES_K(22)) +RES(R93, RES_K(1)) +RES(R94, RES_K(22)) +RES(R95, RES_K(330)) +RES(R96, RES_K(150)) +RES(R97, RES_K(150)) +RES(R98, RES_K(650)) + +#if USE_FIXED_STV +ANALOG_INPUT(STV, 2) +#else +RES(R78, RES_K(3.3)) +RES(R77, RES_K(2.2)) +CAP(C58, CAP_U(47)) +#endif + NET_C(R95.1, XU3.2, R96.2) NET_C(R95.2, XU3.1, C69.1) NET_C(XU3.3, R103.2, C73.1) NET_C(XU3.4, R103.1, R102.2) NET_C(XU3.5, R105.2, C72.1) NET_C(XU3.6, R105.1, R106.2) +#if USE_FIXED_STV +//FIXME: We should have a NET_C_REMOVE +NET_C(/*XU3.7,*/ C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1,/* R77.2, C58.1, */ R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3) +#else NET_C(/*XU3.7,*/ C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1, R77.2, C58.1, R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3) +#endif NET_C(XU3.8, R108.1, R107.2) NET_C(XU3.9, R108.2, C77.1) NET_C(XU3.10, R100.1, R101.2) NET_C(XU3.11, R100.2, C67.1) NET_C(XU3.12, R98.1, R97.2) NET_C(XU3.13, R98.2, C68.1) +#if USE_FIXED_STV +NET_C(/*XU3.14,*/ XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, /* R78.1, */ R86.1, R83.1, Q3.C, I_V5.Q) +#else NET_C(/*XU3.14,*/ XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, R78.1, R86.1, R83.1, Q3.C, I_V5.Q) +#endif NET_C(R96.1, R102.1, R106.1, R107.1, R101.1, R97.1, R65.1, C63.2) NET_C(C63.1, R65_1.2) NET_C(R65_1.1, R44.2, C38.2, C40.2, XU1.6) +#if USE_FIXED_STV +NET_C(R30.1, R41.1, R40.1, STV, R76.2, /* R78.2, R77.1, C58.2*/ STV) +#else NET_C(R30.1, R41.1, R40.1, R76.2, R78.2, R77.1, C58.2) +#endif NET_C(R30.2, XU1.5) NET_C(R44.1, C39.1, C40.1, R48_2.2) NET_C(C38.1, C39.2, R38.1) @@ -250,7 +295,7 @@ NET_C(R42.2, R51.1, C36.1) NET_C(R51.2, C41.1) NET_C(C41.2, R43.1, I_SOUNDIC0.Q) NET_C(XU2.1, XU2.2, R73.1) -NET_C(XU2.3, R76.1, I_OKI0.Q) +NET_C(XU2.3, R76.1, C200.2) NET_C(XU2.5, C56.2, R75.1) NET_C(XU2.6, XU2.7, R50.1, C53.2) NET_C(R75.2, R74.1, C53.1) @@ -275,10 +320,11 @@ NET_C(R89.1, C57.2, C59.2, R90.1) NET_C(Q3.B, R35.1) NET_C(R35.2, R36.2, C70.1) NET_C(R91.2, C70.2, I_SD0.Q) +NET_C(I_MSM3K0.Q, R200.2) +NET_C(I_MSM2K0.Q, R201.2) +NET_C(R200.1, R201.1, C200.1) NETLIST_END() - - NETLIST_START(opamp) /* Opamp model from