Commit Graph

52 Commits

Author SHA1 Message Date
Miodrag Milanovic
823b8cbc1c Add license to files that were not part of build or are containing data to build sources for cpu emulation (nw) 2016-03-05 10:29:28 +01:00
couriersud
1d875f33fe Increase performance from 53% to 69% for matrix size around 30x30. These
matrices are e.g. used in congo bongo without optimisation. (nw)
2015-08-21 01:35:30 +02:00
couriersud
eacd7ef4b2 Converted USE_PIVOT into runtime option PIVOT. Fixed some issues for
nl_double == float. (nw)
2015-08-21 01:35:29 +02:00
couriersud
7b15a99c4b utf8 support for pstring. Opted for a scalable solution which should be
easily extensible to utf16 and utf32 as well. All position related
operations now operate on char code positions instead of byte positions.
[Couriersud]
2015-08-10 22:35:18 +02:00
couriersud
9526556bf8 Improve MB3614 parameters. Changed some opamps to type "idealized" (type
1) in Congo Bongo netlist and got 50% speed improvement.
2015-07-29 23:15:43 +02:00
couriersud
f17cd2d9ca Added a input control file for congo bongo netlist.
This file is a standard csv file specifing times and values of parameter
modifications for specified devices. This file triggers the various
sound inputs using a 10ms impulse.

Use

 ./nltool -f nl_examples/congo_bongo.c -t 8 -l RO.1 -i
nl_examples/congo_bongo.csv
 
to create a netlist log file of the congo bongo mixer stage.

Use

./nlwav -i netlist.log_RO.1.log -o tt.wav -a 17000

to create a wav file tt.wav from the log file using an amplification
factor of 17000.

[Couriersud]
2015-07-26 23:34:01 +02:00
couriersud
8b388e9131 Added nlwav to tools. nlwav converts netlist logs into wav files.
Example usage:

./nlwav -i netlist.log_RO.1.log -o tt.wav

./nlwav -h 

[Couriersud]
2015-07-26 20:03:13 +02:00
couriersud
c2a192ec92 Consolidate the scattered model parsing code. Now models support
recursive models,e.g. DIODE("1N914(IS=1e-15)"). Removed ".model" from
model definitions. (nw)
2015-07-23 22:39:39 +02:00
couriersud
fd0850e016 Changed case for parameter "model" to uppercase to align with rest of
code. (nw)
2015-07-20 22:21:30 +02:00
couriersud
aa5785832c Add macro library for opamp models. (nw) 2015-07-16 23:10:36 +02:00
couriersud
fae860f0dd Changed uppercase filenames to lowercase. (nw) 2015-07-12 17:35:37 +02:00
couriersud
d97724dfb6 Created macro libraries for CD4XXX and 74XX chip families. Going
forward, these will contain all devices which can be described using
truthtables and DIPPINS. [Couriersud]
2015-07-12 17:06:59 +02:00
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