diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/netlist/examples/turkey_shoot.cpp | 212 | ||||
-rw-r--r-- | src/lib/netlist/examples/turkey_shoot.csv | 256 |
2 files changed, 468 insertions, 0 deletions
diff --git a/src/lib/netlist/examples/turkey_shoot.cpp b/src/lib/netlist/examples/turkey_shoot.cpp new file mode 100644 index 00000000000..32f5ac00f1f --- /dev/null +++ b/src/lib/netlist/examples/turkey_shoot.cpp @@ -0,0 +1,212 @@ +// license:CC0 +// copyright-holders:Couriersud + +/* + * This example illustrates how to use netlist to derive RGB output + * levels from complex output circuits. + * + * Create x.cpp: + + #include <cstdio> + + int main() + { + // Change IC86 output every micro second + for (std::size_t i=0;i<256;i++) + printf("%.9f,IC86.D.IN,%d\n", (double) i / 1.0e6, (int)i); + } + + * Run these commands: + * + * c++ x.cpp + * ./a.out > src/lib/netlist/examples/turkey_shoot.csv + * ./nltool -c run -t 0.0003 -f src/lib/netlist/examples/turkey_shoot.cpp -i src/lib/netlist/examples/turkey_shoot.csv -l BLUE + * ./nlwav -f tab -o x.tab -s 0.0000005 -i 0.000001 -n 256 log_BLUE.log + * + * x.tab now contains 256 values representing the different output levels: + * low 4 bits: color value + * high 4 bits: attenuation value + * + */ + + +#include "netlist/devices/net_lib.h" + +/* ---------------------------------------------------------------------------- + * Define + * ---------------------------------------------------------------------------*/ + +/* set to 1 to use optimizations increasing performance significantly */ + +#ifndef USE_OPTIMIZATIONS +#define USE_OPTIMIZATIONS 0 +#endif + +/* ---------------------------------------------------------------------------- + * Library section header START + * ---------------------------------------------------------------------------*/ + +#ifndef __PLIB_PREPROCESSOR__ + +#define SHIM74LS374_DIP(_name) \ + NET_REGISTER_DEV_X(SHIM74LS374_DIP, _name) +#endif + +/* ---------------------------------------------------------------------------- + * Library section header END + * ---------------------------------------------------------------------------*/ + + +NETLIST_START(turkey_shoot_vga) +// EESCHEMA NETLIST VERSION 1.1 (SPICE FORMAT) CREATION DATE: WED 01 JUL 2015 11:09:25 PM CEST +// TO EXCLUDE A COMPONENT FROM THE SPICE NETLIST ADD [SPICE_NETLIST_ENABLED] USER FIELD SET TO: N +// TO REORDER THE COMPONENT SPICE NODE SEQUENCE ADD [SPICE_NODE_SEQUENCE] USER FIELD AND DEFINE SEQUENCE: 2,1,0 +// SHEET NAME:/ +// IGNORED O_AUDIO0: O_AUDIO0 64 0 +// .END + + PARAM(Solver.RELTOL, 1e-3) + PARAM(Solver.VNTOL, 1e-6) + PARAM(Solver.NR_LOOPS, 300) + PARAM(Solver.GS_LOOPS, 99) + PARAM(Solver.METHOD, "MAT_CR") + PARAM(Solver.PARALLEL, 0) + + //PARAM(Solver.METHOD, "GMRES") + //PARAM(Solver.ACCURACY, 1e-5) + //PARAM(Solver.METHOD, "SOR") + +#if USE_OPTIMIZATIONS + SOLVER(Solver, 48000) +#else + SOLVER(Solver, 48000) + PARAM(Solver.DYNAMIC_TS, 1) + PARAM(Solver.PARALLEL, 0) + PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 2e-9) + PARAM(Solver.DYNAMIC_LTE, 1e-4) +#endif + + NET_MODEL("2N3904 NPN(IS=1E-14 VAF=100 Bf=300 IKF=0.4 XTB=1.5 BR=4 CJC=4E-12 CJE=8E-12 RB=20 RC=0.1 RE=0.1 TR=250E-9 TF=350E-12 ITF=1 VTF=2 XTF=3 Vceo=40 Icrating=200m mfg=Philips)") + + LOCAL_SOURCE(SHIM74LS374_DIP) + LOCAL_LIB_ENTRY(SHIM74LS374_DIP) + + INCLUDE(turkey_shoot_schematics) + +NETLIST_END() + +NETLIST_START(turkey_shoot_schematics) + + ANALOG_INPUT(I_V12, 12) + ANALOG_INPUT(I_V5, 5) + + TTL_INPUT(BLANK, 0) + + //IND(L1, 0.0000047) // FIXME:Inductor model needs verification + RES(L1, 1) + RES(L1R, 1) // series resistance of inductor + + CAP(C60, CAP_U(0.1)) + CAP(C54, CAP_P(47)) + CAP(C57, CAP_P(47)) + + RES(R32, RES_K(1)) + RES(R33, RES_K(1)) + RES(R34, 390) + RES(R6, RES_K(8.2)) + RES(R7, RES_K(3.9)) + RES(R8, RES_K(2)) + RES(R9, RES_K(1)) + RES(R10, RES_K(8.2)) + RES(R11, RES_K(3.9)) + RES(R12, RES_K(2)) + RES(R13, RES_K(1)) + + RES(R35, RES_K(2.2)) + RES(R36, RES_K(2.7)) + RES(R31, 270) + RES(R30, RES_K(2)) + RES(R29, RES_K(2)) + RES(R28, RES_K(2)) + RES(R22, 470) + RES(R23, 47) + + DIODE(D1, "1N4148") + DIODE(D2, "1N4148") + DIODE(D3, "1N4148") + DIODE(D4, "1N4148") + DIODE(D5, "1N4148") + DIODE(D6, "1N4148") + DIODE(D7, "1N4148") + DIODE(D8, "1N4148") + DIODE(D17, "1N4148") + + QBJT_EB(Q3, "2N3904") + QBJT_EB(Q4, "2N3904") + QBJT_EB(Q5, "2N3904") + + SHIM74LS374_DIP(IC86) + + NET_C(D8.K, IC86.19) + NET_C(D7.K, IC86.16) + NET_C(D6.K, IC86.15) + NET_C(D5.K, IC86.12) + NET_C(D4.K, IC86.9) + NET_C(D3.K, IC86.6) + NET_C(D2.K, IC86.5) + NET_C(D1.K, IC86.2) + + NET_C(D8.A, R13.1) + NET_C(D7.A, R12.1) + NET_C(D6.A, R11.1) + NET_C(D5.A, R10.1) + NET_C(D4.A, R9.1) + NET_C(D3.A, R8.1) + NET_C(D2.A, R7.1) + NET_C(D1.A, R6.1) + + NET_C(BLANK, C57.1, R32.1) + NET_C(C57.2, R32.2, R33.1, Q5.B) + NET_C(GND, R33.2, Q5.E, R36.2, C60.2) + NET_C(Q5.C, R34.1) + NET_C(R34.2, R13.2, R12.2, R11.2, R10.2, R35.2, R36.1, Q4.B) + NET_C(R35.1, Q4.C, C60.1, L1.2) + + NET_C(I_V12, L1.1) + NET_C(I_V12, L1R.1) + NET_C(L1R.2, L1.1) + + NET_C(Q4.E, R30.1, R29.1, R28.1, R31.1) + + NET_C(GND, R31.2, R29.2, R28.2) + NET_C(R6.2, R7.2, R8.2, R9.2, R30.2, Q3.B) + NET_C(I_V5, Q3.C) + NET_C(GND, C54.2, R22.2) + NET_C(Q3.E, D17.A) + NET_C(D17.K, R22.1, R23.1) + NET_C(R23.2, C54.1) + + NET_C(I_V5, IC86.20, BLANK.VCC) + NET_C(GND, IC86.10, BLANK.GND) + + ALIAS(BLUE, C54.1) + +NETLIST_END() + + +NETLIST_START(SHIM74LS374_DIP) + + LOGIC_INPUT8(D, 0, "74XX") + ALIAS(20, D.VCC) + ALIAS(10, D.GND) + ALIAS( 2, D.Q0) + ALIAS( 5, D.Q1) + ALIAS( 6, D.Q2) + ALIAS( 9, D.Q3) + ALIAS(12, D.Q4) + ALIAS(15, D.Q5) + ALIAS(16, D.Q6) + ALIAS(19, D.Q7) + +NETLIST_END() + diff --git a/src/lib/netlist/examples/turkey_shoot.csv b/src/lib/netlist/examples/turkey_shoot.csv new file mode 100644 index 00000000000..7eaf63d28f9 --- /dev/null +++ b/src/lib/netlist/examples/turkey_shoot.csv @@ -0,0 +1,256 @@ +0.000000000,IC86.D.IN,0 +0.000001000,IC86.D.IN,1 +0.000002000,IC86.D.IN,2 +0.000003000,IC86.D.IN,3 +0.000004000,IC86.D.IN,4 +0.000005000,IC86.D.IN,5 +0.000006000,IC86.D.IN,6 +0.000007000,IC86.D.IN,7 +0.000008000,IC86.D.IN,8 +0.000009000,IC86.D.IN,9 +0.000010000,IC86.D.IN,10 +0.000011000,IC86.D.IN,11 +0.000012000,IC86.D.IN,12 +0.000013000,IC86.D.IN,13 +0.000014000,IC86.D.IN,14 +0.000015000,IC86.D.IN,15 +0.000016000,IC86.D.IN,16 +0.000017000,IC86.D.IN,17 +0.000018000,IC86.D.IN,18 +0.000019000,IC86.D.IN,19 +0.000020000,IC86.D.IN,20 +0.000021000,IC86.D.IN,21 +0.000022000,IC86.D.IN,22 +0.000023000,IC86.D.IN,23 +0.000024000,IC86.D.IN,24 +0.000025000,IC86.D.IN,25 +0.000026000,IC86.D.IN,26 +0.000027000,IC86.D.IN,27 +0.000028000,IC86.D.IN,28 +0.000029000,IC86.D.IN,29 +0.000030000,IC86.D.IN,30 +0.000031000,IC86.D.IN,31 +0.000032000,IC86.D.IN,32 +0.000033000,IC86.D.IN,33 +0.000034000,IC86.D.IN,34 +0.000035000,IC86.D.IN,35 +0.000036000,IC86.D.IN,36 +0.000037000,IC86.D.IN,37 +0.000038000,IC86.D.IN,38 +0.000039000,IC86.D.IN,39 +0.000040000,IC86.D.IN,40 +0.000041000,IC86.D.IN,41 +0.000042000,IC86.D.IN,42 +0.000043000,IC86.D.IN,43 +0.000044000,IC86.D.IN,44 +0.000045000,IC86.D.IN,45 +0.000046000,IC86.D.IN,46 +0.000047000,IC86.D.IN,47 +0.000048000,IC86.D.IN,48 +0.000049000,IC86.D.IN,49 +0.000050000,IC86.D.IN,50 +0.000051000,IC86.D.IN,51 +0.000052000,IC86.D.IN,52 +0.000053000,IC86.D.IN,53 +0.000054000,IC86.D.IN,54 +0.000055000,IC86.D.IN,55 +0.000056000,IC86.D.IN,56 +0.000057000,IC86.D.IN,57 +0.000058000,IC86.D.IN,58 +0.000059000,IC86.D.IN,59 +0.000060000,IC86.D.IN,60 +0.000061000,IC86.D.IN,61 +0.000062000,IC86.D.IN,62 +0.000063000,IC86.D.IN,63 +0.000064000,IC86.D.IN,64 +0.000065000,IC86.D.IN,65 +0.000066000,IC86.D.IN,66 +0.000067000,IC86.D.IN,67 +0.000068000,IC86.D.IN,68 +0.000069000,IC86.D.IN,69 +0.000070000,IC86.D.IN,70 +0.000071000,IC86.D.IN,71 +0.000072000,IC86.D.IN,72 +0.000073000,IC86.D.IN,73 +0.000074000,IC86.D.IN,74 +0.000075000,IC86.D.IN,75 +0.000076000,IC86.D.IN,76 +0.000077000,IC86.D.IN,77 +0.000078000,IC86.D.IN,78 +0.000079000,IC86.D.IN,79 +0.000080000,IC86.D.IN,80 +0.000081000,IC86.D.IN,81 +0.000082000,IC86.D.IN,82 +0.000083000,IC86.D.IN,83 +0.000084000,IC86.D.IN,84 +0.000085000,IC86.D.IN,85 +0.000086000,IC86.D.IN,86 +0.000087000,IC86.D.IN,87 +0.000088000,IC86.D.IN,88 +0.000089000,IC86.D.IN,89 +0.000090000,IC86.D.IN,90 +0.000091000,IC86.D.IN,91 +0.000092000,IC86.D.IN,92 +0.000093000,IC86.D.IN,93 +0.000094000,IC86.D.IN,94 +0.000095000,IC86.D.IN,95 +0.000096000,IC86.D.IN,96 +0.000097000,IC86.D.IN,97 +0.000098000,IC86.D.IN,98 +0.000099000,IC86.D.IN,99 +0.000100000,IC86.D.IN,100 +0.000101000,IC86.D.IN,101 +0.000102000,IC86.D.IN,102 +0.000103000,IC86.D.IN,103 +0.000104000,IC86.D.IN,104 +0.000105000,IC86.D.IN,105 +0.000106000,IC86.D.IN,106 +0.000107000,IC86.D.IN,107 +0.000108000,IC86.D.IN,108 +0.000109000,IC86.D.IN,109 +0.000110000,IC86.D.IN,110 +0.000111000,IC86.D.IN,111 +0.000112000,IC86.D.IN,112 +0.000113000,IC86.D.IN,113 +0.000114000,IC86.D.IN,114 +0.000115000,IC86.D.IN,115 +0.000116000,IC86.D.IN,116 +0.000117000,IC86.D.IN,117 +0.000118000,IC86.D.IN,118 +0.000119000,IC86.D.IN,119 +0.000120000,IC86.D.IN,120 +0.000121000,IC86.D.IN,121 +0.000122000,IC86.D.IN,122 +0.000123000,IC86.D.IN,123 +0.000124000,IC86.D.IN,124 +0.000125000,IC86.D.IN,125 +0.000126000,IC86.D.IN,126 +0.000127000,IC86.D.IN,127 +0.000128000,IC86.D.IN,128 +0.000129000,IC86.D.IN,129 +0.000130000,IC86.D.IN,130 +0.000131000,IC86.D.IN,131 +0.000132000,IC86.D.IN,132 +0.000133000,IC86.D.IN,133 +0.000134000,IC86.D.IN,134 +0.000135000,IC86.D.IN,135 +0.000136000,IC86.D.IN,136 +0.000137000,IC86.D.IN,137 +0.000138000,IC86.D.IN,138 +0.000139000,IC86.D.IN,139 +0.000140000,IC86.D.IN,140 +0.000141000,IC86.D.IN,141 +0.000142000,IC86.D.IN,142 +0.000143000,IC86.D.IN,143 +0.000144000,IC86.D.IN,144 +0.000145000,IC86.D.IN,145 +0.000146000,IC86.D.IN,146 +0.000147000,IC86.D.IN,147 +0.000148000,IC86.D.IN,148 +0.000149000,IC86.D.IN,149 +0.000150000,IC86.D.IN,150 +0.000151000,IC86.D.IN,151 +0.000152000,IC86.D.IN,152 +0.000153000,IC86.D.IN,153 +0.000154000,IC86.D.IN,154 +0.000155000,IC86.D.IN,155 +0.000156000,IC86.D.IN,156 +0.000157000,IC86.D.IN,157 +0.000158000,IC86.D.IN,158 +0.000159000,IC86.D.IN,159 +0.000160000,IC86.D.IN,160 +0.000161000,IC86.D.IN,161 +0.000162000,IC86.D.IN,162 +0.000163000,IC86.D.IN,163 +0.000164000,IC86.D.IN,164 +0.000165000,IC86.D.IN,165 +0.000166000,IC86.D.IN,166 +0.000167000,IC86.D.IN,167 +0.000168000,IC86.D.IN,168 +0.000169000,IC86.D.IN,169 +0.000170000,IC86.D.IN,170 +0.000171000,IC86.D.IN,171 +0.000172000,IC86.D.IN,172 +0.000173000,IC86.D.IN,173 +0.000174000,IC86.D.IN,174 +0.000175000,IC86.D.IN,175 +0.000176000,IC86.D.IN,176 +0.000177000,IC86.D.IN,177 +0.000178000,IC86.D.IN,178 +0.000179000,IC86.D.IN,179 +0.000180000,IC86.D.IN,180 +0.000181000,IC86.D.IN,181 +0.000182000,IC86.D.IN,182 +0.000183000,IC86.D.IN,183 +0.000184000,IC86.D.IN,184 +0.000185000,IC86.D.IN,185 +0.000186000,IC86.D.IN,186 +0.000187000,IC86.D.IN,187 +0.000188000,IC86.D.IN,188 +0.000189000,IC86.D.IN,189 +0.000190000,IC86.D.IN,190 +0.000191000,IC86.D.IN,191 +0.000192000,IC86.D.IN,192 +0.000193000,IC86.D.IN,193 +0.000194000,IC86.D.IN,194 +0.000195000,IC86.D.IN,195 +0.000196000,IC86.D.IN,196 +0.000197000,IC86.D.IN,197 +0.000198000,IC86.D.IN,198 +0.000199000,IC86.D.IN,199 +0.000200000,IC86.D.IN,200 +0.000201000,IC86.D.IN,201 +0.000202000,IC86.D.IN,202 +0.000203000,IC86.D.IN,203 +0.000204000,IC86.D.IN,204 +0.000205000,IC86.D.IN,205 +0.000206000,IC86.D.IN,206 +0.000207000,IC86.D.IN,207 +0.000208000,IC86.D.IN,208 +0.000209000,IC86.D.IN,209 +0.000210000,IC86.D.IN,210 +0.000211000,IC86.D.IN,211 +0.000212000,IC86.D.IN,212 +0.000213000,IC86.D.IN,213 +0.000214000,IC86.D.IN,214 +0.000215000,IC86.D.IN,215 +0.000216000,IC86.D.IN,216 +0.000217000,IC86.D.IN,217 +0.000218000,IC86.D.IN,218 +0.000219000,IC86.D.IN,219 +0.000220000,IC86.D.IN,220 +0.000221000,IC86.D.IN,221 +0.000222000,IC86.D.IN,222 +0.000223000,IC86.D.IN,223 +0.000224000,IC86.D.IN,224 +0.000225000,IC86.D.IN,225 +0.000226000,IC86.D.IN,226 +0.000227000,IC86.D.IN,227 +0.000228000,IC86.D.IN,228 +0.000229000,IC86.D.IN,229 +0.000230000,IC86.D.IN,230 +0.000231000,IC86.D.IN,231 +0.000232000,IC86.D.IN,232 +0.000233000,IC86.D.IN,233 +0.000234000,IC86.D.IN,234 +0.000235000,IC86.D.IN,235 +0.000236000,IC86.D.IN,236 +0.000237000,IC86.D.IN,237 +0.000238000,IC86.D.IN,238 +0.000239000,IC86.D.IN,239 +0.000240000,IC86.D.IN,240 +0.000241000,IC86.D.IN,241 +0.000242000,IC86.D.IN,242 +0.000243000,IC86.D.IN,243 +0.000244000,IC86.D.IN,244 +0.000245000,IC86.D.IN,245 +0.000246000,IC86.D.IN,246 +0.000247000,IC86.D.IN,247 +0.000248000,IC86.D.IN,248 +0.000249000,IC86.D.IN,249 +0.000250000,IC86.D.IN,250 +0.000251000,IC86.D.IN,251 +0.000252000,IC86.D.IN,252 +0.000253000,IC86.D.IN,253 +0.000254000,IC86.D.IN,254 +0.000255000,IC86.D.IN,255 |