Commit graph

40 commits

Author SHA1 Message Date
couriersud
3a8d682827 Added two more models to netlist:
OPAMP: Generic opamp model. This does all the annoying calculations.
Just pass the the datasheet values.

LVCCS: A limited current voltage control current source. This will allow
slew rate limiting going forward. 

In addition:

- add a (small) parallel conductance to all capacitors to improve
convergence.
- some initial work to use "long double".
2015-07-11 16:15:17 +02:00
couriersud
82735c0e36 Move updates based on model to update_param. (nw) 2015-07-11 16:15:15 +02:00
couriersud
78917506f2 Document progress on congo bongo. Gorilla sound now works. Performance
up from 30% to 170%. Use
./nltool -c run -f nl_examples/congoBongo.c -t 2
to test.
Minor enhancements and bugfixes.
[Couriersud]
2015-07-08 00:37:59 +02:00
couriersud
4e437c687a Further improvements + two missing files. Congo Bongo netlist now parses
without issues. [Couriersud]
2015-07-04 18:02:18 +02:00
couriersud
07a7c190fd Added MM5837 Noise Generator used by Congo Bongo. [Couriersud] 2015-07-04 13:23:15 +02:00
couriersud
045ffafb42 Added Voltage source and Current source to netlist. [Couriersud] 2015-06-30 21:47:01 +02:00
couriersud
b1a72a3e9f Netlist now compiles with
-std=c++98 -Wall -Wpedantic -Wextra -Wno-long-long -Wno-variadic-macros
and
-std=c++11 -Wall -Wpedantic -Wextra
[Couriersud]
2015-06-30 09:04:19 +02:00
couriersud
a68161ee27 Move solver code into own folder. (nw) 2015-06-19 18:33:14 +02:00
couriersud
dad7a6bab5 From 45% to 60% to 99%. That's the improvement achieved for a 89x89
audio matrix mostly solved by elimination. 
Cleaned up some code as well. [Couriersud]
2015-06-10 21:50:10 +02:00
couriersud
8ba33d8d1e Formatted kidniki.c (nl_examples) to be easier to read. (nw) 2015-06-09 00:34:57 +02:00
couriersud
3cf2f2444f Added some more discrete components. (nw) 2015-06-08 01:41:34 +02:00
couriersud
3db351f5c9 Added kidniki sound board netlist to nl_examples. Currently the netlist
boils down to a 87x87 matrix. This is due to a total of 6 opamps which
all are submodels and thus add their own internal nets. 
Gauss Seidel iterative solving comes to it's limits.
nltool runs this at about 50% speed on my machine. Given the complexity
this is quite good. Yet, any m62 game currently will not be playable.
Time for a new cpu :-)
[Andrew Gardner, Couriersud]
2015-06-07 02:16:55 +02:00
couriersud
1d99211b55 Introduced user definable truth tables:
NETLIST_START(lib)
	TRUTHTABLE_START(TTL_7400A_NAND, 2, 1, 0, "+A,B")
		TT_HEAD(" A , B | Q ")
		TT_LINE(" 0 , X | 1 |22")
		TT_LINE(" X , 0 | 1 |22")
		TT_LINE(" 1 , 1 | 0 |15")
	TRUTHTABLE_END()
NETLIST_END()

This enables the addition of devices without changing the netlist
source code and allows the creation of libraries. Used pong.c as a
proof of concept for the time being. [Couriersud]
2015-05-27 23:18:45 +02:00
couriersud
cef370aa13 Moved all files in src/emu/netlist starting with p into plib folder.
This is a first step to ease synchronisation with a stand alone, e.g.
outside mame, netlist implementation. More signed/unsigned cleanups and
started work on generic truthtable devices. (nw)
2015-05-27 23:18:44 +02:00
couriersud
7fa10acca6 Added 74192, 9316, 9310 and 74193 devices to netlist. Added breakout
(wip) netlist as well, but still have to implement three more devices
until work can really start. [Couriersud]
2015-04-22 00:45:21 +02:00
couriersud
6b8eb847ea Document more work on breakout. Further additions to nl_dice_compat.h.
(nw)
2015-04-20 00:56:16 +02:00
couriersud
2ff982fef7 Added 9602 one-shot to netlist. (nw) 2015-04-19 22:56:56 +02:00
Zoë Blade
1e5c5c9fae Tidy more whitespace 2015-04-08 15:14:01 +01:00
Couriersud
f3cf3a8e78 Preliminary support for LTE dynamic time-stepping based on Local truncation error. This enables the possibility to connect a capacitor between ground and a TTL output and get a e.g. 100 ns delay with a 1nF capacitor.
Added an example circuit (cdelay.c)
Changed the log device to support nano-second granularity.
LTE is not yet enabled due to it's ugly test-state.
2014-05-15 22:50:40 +00:00
Couriersud
fa60c8874d Analog input updates now send to queue. Reduces risk of stack overflows.
Fixed a bug which caused NAND astable multivibrator to oscillate. 
74123 improvements
2014-05-15 00:03:27 +00:00
Couriersud
1f70685652 Added first draft of 74123 to netlist code. 2014-05-06 22:37:20 +00:00
Couriersud
dce5fbf03e Netlist:
- Pong Doubles now working
  Thanks a lot to Adam Bousley for dual licensing DICE netlists.
  Hooked up player inputs
- Minor performance tweaks
- Separated game netlists from driver. Dice is making extensive use of macros which may conflict
  if these are in one source file.
- Added some rescap.h macros to netlist

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Pong Doubles [DICE Team, Couriersud]
2014-05-05 20:02:26 +00:00
Couriersud
962bf9df8b More work on pong doubles. Working again (if enabled). 2014-05-04 21:38:11 +00:00
Couriersud
4b4b4542b2 Netlist:
- fixed a bug in which the fallback solver was called instead of gauss - seidel.
- matrix solvers are now subdevices of the solver devices
- matrix solvers can now be scheduled independently
- Rename RESCHED_LOOPS to GS_LOOPS (Gauss Seidel)
- Added paragmenter NR_LOOPS (Newton Raphson)
2014-04-18 17:58:35 +00:00
Couriersud
b50d6fff9d Fixed netlist opamp example. 2014-03-04 09:25:39 +00:00
Couriersud
4fcf7b5bcf Implemented CD4066 device - Quad Bilateral Switch. [Couriersud] 2014-03-02 20:23:53 +00:00
Couriersud
3b82caf8ac NPN BJT now working 2014-03-01 16:16:22 +00:00
Couriersud
c32fba0da7 Minor cosmetic changes for netlist 2014-02-26 00:21:06 +00:00
Couriersud
aa0b321b05 Fixed netlist examples. 2014-02-23 14:57:24 +00:00
Couriersud
686d540bad Netlist can now be included as sub-circuits. That's the same approach SPICE uses.
The implementation also supports nesting. 
Opamp emulation now is as easy as

    /* Opamp wired as impedance changer */
    SUBMODEL(op, opamp)

    NET_C(op.GND, GND)
    NET_C(op.PLUS, clk)
    NET_C(op.MINUS, op.OUT)

The missing bit now is a central submodel repository. I'll start a discussion soon on the list.

nl_examples/opamp.c is an example of a impedance changer stage followed by a 1:2 amplifier stage.
System size (= number of voltage levels to be calculated) is between 20 - 30.
Using a simple, yet better opamp model than usually implemented in the old discrete core, I get

./nltool -f nl_examples/opamp.c -t 30
startup time ==> 0.002
runnning ...
30.000000 seconds emulation took 0.438599 real time ==> 6839.96%

Which leaves quite some buffer to emulate even complex mixing and filtering stages in real-time :-)
2014-02-13 00:28:18 +00:00
Couriersud
534348f6a9 Commit current state of netlist examples. Later, these are intended as a basis for regression tests. 2014-02-09 22:43:58 +00:00
Couriersud
4dc77142f9 Major renaming of netlist device macros, like
NETDEV_ALIAS ==> ALIAS
NETDEV_R ==> RES
NETDEV_C ==> CAP
2014-01-19 15:51:25 +00:00
Couriersud
5876abcfaf Netlist:
- Working Ebers Moll model. That's a significant step ahead.
- Simple 2x2|RHS SPICE stamps now supported by two terminal devices.
  This was implicitly contained in the design, but set_mat now shows how
  a two-terminal device fits into a SPICE approach.
- Introduced direct solvers for net groups with 1 or 2 nets.
- Introduced specialized solvers for N=1,2,3,4,5 by using templates.
- nice performance increase for BJTs
2014-01-18 13:58:15 +00:00
Couriersud
a122e599ee Removed some dead code and ambiguous functions in the netlist code. [Couriersud] 2014-01-12 01:12:12 +00:00
Couriersud
02c926d422 Removed two duplicate devices in netlist. 2014-01-11 19:11:05 +00:00
Couriersud
320bb3263a Implemented near-to-proper reset for all netlist devices. Reset now works for improved matrix solving. [couriersud] 2014-01-11 18:32:01 +00:00
Couriersud
f8eac14fa9 Quite a number of simplifications for netlist. Also tested some parallel processing using OpenMP (disabled). No wn 2014-01-10 19:23:42 +00:00
Couriersud
093e3f5f21 Some more netlist examples. 2014-01-06 14:40:43 +00:00
Couriersud
3b28221fd3 Fixed PNP model and added test netlist (bjt.c) [Couriersud] 2014-01-01 20:28:59 +00:00
Couriersud
a8a62c3212 Enhanced the netlist parser and cleaned pong.c. Also added a folder nl_examples which contains standalone netlist examples. [couriersud]
The examples have a ".c" suffix. In eclipse, I get automatic syntax parsing and error notifications. The parser treats "#" preprocessor defines/includes just as comments.

All of these examples can be run through nltool:

./nltool -f nl_examples/opamp.c -t 1 -l OUT

runs the opamp example for 1 second of emulation time and logs the terminal named "OUT" to "netlist_log_OUT.log".

I'll post a simple script to the list to visualize those logs using gnuplot.
2013-12-31 15:35:08 +00:00