summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/solver/nld_ms_w.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* netlist: static solver work and improve code readability (#9841) couriersud2022-05-301-2/+2
| | | | | | | | | | | - nltool: Added support for building individual static solver files. - Added pre-built documentation files for nltool and nlwav. - plib: Extended typed_version to have patchlevel as well. - plib: Compile more of ppmf.h with nvcc. - create_devinc.py: Add include guards to the generated files. - makefile: Recreate generated files when python code has changed. - Reduced nld_base.h usage in the core. - <oved extern template class declarations to where they belong. - Generally improved code readability and fixed a lot of issues cspell reported.
* netlist: Address comments from PR #9794, partially fix issue #9801 (#9805) couriersud2022-05-231-23/+30
| | | | | - added cstddef to includes in ppmf.h - more explicit comments in ppmf.h - Fixed more typos and improved readiability
* netlist: standalone makefile and prototype modifications (#9708) couriersud2022-05-081-5/+2
| | | | | | - update netlist makefile to more recent compilers - prototypes for NETLISTs in macros are now created create_devinc.py - apply ctidy recommendations - Python None in create_device.py
* Netlist lint, first version of a FAQ and small code changes. (#9684) couriersud2022-05-061-1/+1
| | | | | - Added a first version of a FAQ. - Use better error messages in pfunction. - Made member functions static where appropriate in nld_solver.
* netlist: Relicensing of the GPL code to BSD-3 with the blessing of the Olivier Galibert2021-03-091-1/+1
| | | | | | | | | | copyright owners. Much thanks for that Couriersud, the main creator and contributor, but also to Jonathan Gevaryahu and Sergey Svishchev. There are small remnants in machine/NL_*, specifially breakout, pong doubles and rebound that are also copyrighted by the DICE team, whoever that means. They're not critical since they only concern these drivers and not an important core subsystem.
* netlist: nld_matrix_solver is now owned by nld_solver. couriersud2020-07-251-2/+2
|
* netlist: include file refactoring. couriersud2020-06-281-2/+1
| | | | | | | | The purpose of this ongoing exercise is to remove unnecessary dependencies in header files. netlist implementations should only have access to what they need. The same applies to device implementations. Core stuff will be moved to the core subdirectory going forward.
* netlist: Performance improvement and refactoring. [Couriersud] couriersud2020-06-131-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | Kidniki now achieves up to 910% when run with static solvers and with nltool. That is significant better than the 860% we have seen previously. This increase is driven by using a global memory pool in the solver code. In addition the following refactoring and code maintenance work is included. Please excuse the large commit, some of this took interfered with other work and the detail development steps were ugly. - gsl support: This commit adds pgsl.h which implements a very limited number of the functionality of the gsl header described in the c++ core guidelines. - clang-tidy fixes - A significant refactoring of palloc.h. Aligned hints were removed, they added complexity without a significant performance gain. Vector operations should better be done on special spans/views. The code has been tested on linux with g++-7, g++-9, clang-11. On Windows mingw-10 and VS2019, OSX clang-11.
* netlist: more family/model alignment. (nw) couriersud2020-05-101-2/+0
| | | | Also remove dead code and dead comments.
* netlist: remove code duplication. (nw) couriersud2020-04-181-11/+6
|
* netlist: clang lint readability fixes. (nw) couriersud2020-01-251-4/+4
|
* netlist: Change visibility to private for some members. [Couriersud] couriersud2019-11-261-1/+0
| | | | Interesting observation to note: since MAME 208 bench 30 results for pongf increased from 450% to 580%.
* netlist: code maintenance and bug fixes. (nw) couriersud2019-11-081-54/+54
| | | | | | | - comment style migration continues. - Fixed a two bugs in the truthtable ignore inputs code - refactored the truthtable code a bit for better readability. - updated netlist specific gitignore.
* netlist: code maintenance. (nw) couriersud2019-11-041-2/+1
| | | | | | | | - more const - explicitly raise exceptions instead of leaving this to log.fatal() - correct a number of cppcheck findings. - dead code removal - clang lint corrections, e.g. include order
* netlist: fix regression, preliminary __float128 support. (nw) couriersud2019-11-031-2/+2
| | | | | __float128 is a gnu extension delivering true 128 bit floating point support. Currently not supported by clang. In addition, the quadmath library needs to be linked. For the time being therefore disabled.
* netlist: add RELTOL/VNTOL solver parameters. Type safety. [Couriersud] couriersud2019-11-021-11/+11
| | | | | | | | | The newly added RELTOL and VNTOL parameters implement Newton convergence checks comparable following other SPICE implementations. The ACCURACY solver parameter now is only used for convergence checks in iterative solvers. In addition, type safety was significantly improved and a lot of "magic" numbers are identifiable now.
* netlist: Support for float, double and long double solvers. [Couriersud] couriersud2019-11-021-19/+24
| | | | | | | | | | | | | - Added new solver parameter FPTYPE. This determines in which floating point domain the linear system is solved. May be one of "FLOAT", "DOUBLE" or "LONGDOUBLE" - Added option "--fperr" to nltool. This enables floating point exceptions. This helps debugging the code under gdb. The purpose of this going forward is to have more choice in optimization. Non-dynamic systems should be just fine in the float domain. Dynamic systems (i.e. diodes, bjts, mosfets) should in general work with double. Certain edge cases may require long double resolution.
* netlist: further solver refactoring. (nw) couriersud2019-11-011-24/+15
|
* netlist: maintenance and simplifcation. (nw) couriersud2019-10-311-6/+5
| | | | | | | - solver: align matrix population along the various solvers - solver: delete dead code - renamed nl_double to nl_fptype and use nl_fptype where previously double has been used. - renamed param_double_t to param_fp_t
* netlist: move solver stuff into separate namespace. (nw) couriersud2019-10-311-244/+244
| | | | | - new namespace "solver" - minor ptime modifications
* netlist solvers: fix some bad design. (nw) couriersud2019-10-301-23/+11
|
* netlist: improve localized storage. (nw) couriersud2019-10-291-5/+5
|
* netlist: maintenance and lint fixes. (nw) couriersud2019-10-061-3/+6
|
* netlist: more code cleanup. (nw) couriersud2019-10-051-1/+1
| | | | | - avoid duplication in solver parameter code - matrix sort type is now a parameter
* netlist: code maintenance (nw) couriersud2019-10-041-1/+1
| | | | | | | | - Fix SUBMODEL - move to strongly typed matrix sort constant - extend maximum matrix size to 512x512 - optionally do parallel processing based on total operations - templatize GMRES solver loops
* netlist: more lint corrections. (nw) couriersud2019-09-281-6/+8
| | | | - fixed lint corrections - added NOLINT where needed
* netlist: clang lint fixes and pedantic warning fixes. (nw) couriersud2019-04-121-8/+8
|
* (nw) Clean up the mess on master Vas Crabb2019-03-261-89/+76
| | | | | | | | | | | | | This effectively reverts b380514764cf857469bae61c11143a19f79a74c5 and c24473ddff715ecec2e258a6eb38960cf8c8e98e, restoring the state at 598cd5227223c3b04ca31f0dbc1981256d9ea3ff. Before pushing, please check that what you're about to push is sane. Check your local commit log and ensure there isn't anything out-of-place before pushing to mainline. When things like this happen, it wastes everyone's time. I really don't need this in a week when real work™ is busting my balls and I'm behind where I want to be with preparing for MAME release.
* Revert "conflict resolution (nw)" andreasnaive2019-03-251-76/+89
| | | | | This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
* netlist: cosmetic changes - mostly indentation. (nw) couriersud2019-03-011-2/+2
|
* netlist: tidy changes and better constexpr support for ptime class. (nw) couriersud2019-02-241-1/+1
|
* Move ptime struct into plib namespace and fix relative includes. (nw) couriersud2019-02-231-1/+1
|
* netlist: More cpp core guidelines alignment. (nw) couriersud2019-02-111-4/+2
|
* netlist: more core guidelines work. (nw) couriersud2019-02-091-4/+4
|
* netlist: Refactoring after adding clang-tidy support to netlist makefile couriersud2019-02-071-18/+14
| | | | | | | - convert macros to c++ code. - order of device creation should not depend on std lib. - some state saving cleanup. - added support for clang-tidy to makefile. - modifications triggered by clang-tidy-9.
* netlist: Refactoring continues ... plus some innovations (nw) couriersud2019-01-311-19/+9
| | | | | | | | | | | | | | | | | | Still some work ahead to separate interface from execution. This is a preparation to switch to another sparse matrix format easily which may be better suited for parallel processing. On the linear algebra side there are some nice additions: - Two additional sort modes: One tries to obtain a upper left identity matrix, the other prefers a diagonal band matrix structure. Both deliver slightly better performance than just sorting. - Parallel execution analysis for Gaussian elimination and LU solve. This determines which operations may be done independently. All of this is not really useful right now. The matrix sizes are below 100 nets. I estimate that we at least need four times more so that CPU parallel processing overhead pays off. For GPU, add another order. But it's nice to have code which may scale.
* netlist: refactor code for better scalability and flexibility. (nw) couriersud2019-01-271-53/+56
| | | | | | These changes aim to remove some of the duplication of code in the various solvers. Tested with gcc-7 clang-8 and nvcc-9.2
* netlist: More run/setup separation. (nw) couriersud2019-01-181-2/+2
| | | Still some distance ahead in properly separating execution and setup.
* netlist: refactored netlist creation. (nw) couriersud2019-01-151-2/+2
| | | | | | This is an effort to separate netlist creation from netlist execution. The primary target is to avoid that code which will only run during execution is able to call setup code and thus create ugly hacks.
* Removed most inlines not necessary ... (nw) couriersud2019-01-121-6/+6
| | | | | On some I wasn't entirely sure :-( Thanks Vas: https://github.com/mamedev/mame/commit/0f0e8853f33bef49bc6f5bd8b53444d209699e44#r31909683
* Cleanup of solver code. (nw) couriersud2017-05-271-12/+3
|
* Netlist code refactoring: couriersud2017-04-091-1/+1
| | | | | | | | | | | | | | | | | | | - more use of c++ features - some CRTP in pfmtlog - demangled code for truthtables - use more constexpr - rewrite main loop - use default constructors and assignment operators were applicable. - optimized 7448 and 9316 All of this has decreased startup time by approx. 25% to 30%. Complex netlists like pong or kidniki are parsed, analyzed and constructed in around 15 ms. Run performance has increased by about 5%. All in all not to bad. A game like pong uses a clock of 7 MHz (after division by 2). Thats 14 MHz clock invocations. Running at over 200%, 28 MHz. On a 3.9 GHz Machine about 140 cycles/clock change. [Couriersud]
* Fix clang warnings in netlist code. couriersud2017-03-051-1/+1
| | | | | | Fixed -Winconsistent-missing-destructor-override warnings. Made some constructors of template classes and classes with virtual .. = 0 methods protected. Fixed src/lib/netlist/build/makefile (nw)
* Make sure netlist includes are not found directly on include path. couriersud2017-02-101-3/+3
| | | | Instead, they have to be prefixed by "netlist/". Removed unneeded link librariers for nltool and nlwav along the way. (nw)
* Fix a hidden bug in the GMRES solver and more optimization. (nw) couriersud2017-01-281-30/+30
|
* Converted warnings and fatal log messages to constants. couriersud2017-01-201-3/+0
| | | Also refactored some code to ease the exercise. (nw)
* cstr() ==> c_str() (nw) couriersud2016-12-301-2/+2
|
* Netlist updates: couriersud2016-07-211-11/+11
| | | | | | | | | | | | | | | - Removed trampolines (OUTLOGIC, INPLOGIC and friends). - Started using doxygen comment and documentation style. Added doxygen files to documentation folder. - Refactored code triggered by doxygen output. - Moved internal and support classes into namespace detail. - Use an anordered map in parser. - -Wconversion fixes - All done now. - Fixed -Wold-style-cast warnings in netlist code. - Added iterators to pstring. - Moved two macros, added more RAII and improved exceptions. Fixed some bugs in parser code. - Fixed a number of bugs in parser code and exception handling. [Couriersud]
* Netlist improvements: couriersud2016-07-011-1/+1
| | | | | | | | | | | | | | | | | | | - nltool now accepts -Ddefine=value to pass on to netlists - improved option handling and added "dummy" options to add grouping and examples in help output. - improved --cmd=listdevices output - Fix dynamic timestepping. This will work with breakout using real capacitor modelling instead of delay devices. Really slow, but very useful to calibrate timings. - Fix an awful bug in timing for delay devices. - Switched to clang 3.8 and made code compile with -Weverything -Werror -Wno-old-style-cast -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wno-conversion -Wno-c++98-compat -Wno-float-equal -Wno-cast-align -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-exit-time-destructors -Wno-format-nonliteral -Wno-weak-template-vtables This was a helpful exercise since it brought forward some serious issues with implicit constructors. [Couriersud]
* Cleanup and version bumpmame0175 Miodrag Milanovic2016-06-291-1/+1
|