| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
netlist: pointer to member function code
- Address PR #9752 and issue #8590
- change comments in ppmf.h
- add support for function desciptors (IA64)
- sizeof(size_t) may be different on build targets
make plib::hash use uint64 to ensure consistent static solver
hashes across platforms (EMSCRIPTEN)
- Moved constructor and member functions outside the class declaration
with the exception of "call" member functions.
- Updated comment on accessing RDX
- Added more test cases
* Removed execution bit on certain files
I have separated out the raw processing code into `ppmf.cpp`. I have
also taken first steps to clean the abi identification.
The code submitted now supports:
a) The unknown virtual inheritance case with specific code for MSVC for
simple (i.e. scalar, void, reference, pointer) return types using the
optimized code. This is the test case only supported under MSVC and
which should return 7. Please have a look at the code. Basically
m_vptr_offset is an index into a pointer table. It needs to be
multiplied by `sizeof(void *)`.
b) If you enable PPMF_EXPERIMENTAL complex return type member functions
for MSVC will also use the optimized code path. This is explained in
detail in the code in ppmf, including caveats and possible solutions.
c) Enabling PPMF_USE_MAME_DELEGATES will use `src/lib/util/delegate.h`
as a replacement for `ppmf.h`. This allows to run the same tests
(`nltool -c tests` from standalone build) as for the ppmf code.
d) The code now also supports `clang-cl`
e) sizeof(size_t) may be different on build targets.
Make plib::hash use uint64 to ensure consistent static solver hashes
across platforms. This fixes loading static solvers (if enabled) on
EMSCRIPTEN.
|
|
|
|
| |
references. (#7770)
|
| |
|
| |
|
|
|
|
|
| |
- rename mat_cr.h to pmatrix_cr.h
- Optimization to the gmres solver.
- Simplifcation of vector operation code
|
|
|
|
| |
Nightmare]
|
|
|
|
| |
* Remove code duplication.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Removed device and macro header files.
* All of those can be generated automatically so going forward there is
no need for these any longer.
* Introduced the modules concept. Modules are netlists for which
automatic lib entries are generated.
* Going forward you just store them in macro/modules and they will be
automatically registered as device elements.
* You need to do a "make generated" is src/lib/netlist/build
* Some_device.cpp still needs to be added to netlist.lua
* Added documentation on how to add devices to netlist.
* Please refer to adding_devices.md for more information.
|
|
|
|
|
|
|
|
|
| |
* removed include directory src/lib/netlist from various genie files to
avoid potential issues.
* Code using netlist should use #include "netlist/*".
* Updated includes.
* Fixed standalone makefile depend target to properly deal with relative
paths.
|
|
|
|
| |
speed, unsure why.
|
|
|
|
| |
* nl_base.h now basically only includes files from core.
* all headers in core compile on their own.
|
|
|
|
| |
* Use a consistent naming scheme. This is a preparational step towards
improved parsing performance.
|
| |
|
| |
|
|
|
|
| |
Silence indentation warning in 3rdparty/ under Emscripten (#7031)
|
|
|
|
| |
netlist: Fix crash under Emscripten by disabling aligned optimizations
|
|
|
|
| |
* Also contains squashed clang signedness fixes
|
|
|
|
|
|
|
| |
* Move DIPs for 82S16, 82S115, and 2102A devices into nlm_proms
* Moved 7448 DIP to a macro. Replaced 7442 with truthtable and macro.
* Moved 74LS629 DIP into macro.
* Expand truthtable to handle 10 outputs.
|
|
|
|
|
| |
* Add cd4053 to netlist.lua
* Recreated nld_devinc.h
|
|
|
|
|
|
| |
* This clean-up exercise will hopefully make it easier to navigate the
core code. Another long term goal is to further straighten the object
model.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* palloc.h/pmatrix2d.h: Fix static_assert warnings at the origin.
* Rework hints to broaden their use and fix NC hint.
* 74377: use NC hint
* plists.h: Fix debugging in MSVC
* Include cleanup: Move everything not needed by netlists from
nl_setup.h into core/setup.h
* Fix some clang tidy warnings
* srcclean
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
Factory elements can now pass additional parameters to device
constructors. This makes the design of interface objects like analog
callbacks easier.
The change also allowed to remove some "deep" calls into the core from
the MAME interface in netlist.h
|
|
|
|
|
|
|
|
|
| |
plists.h was splitted into plists.h, pmulti_threading.h and
ptimed_queue.h. In addition removed plists.h from a number of files it
wasn't used in.
Certain minor adjustment needed to be made for cuda toolkit 10.1 and
10.2.
|
| |
|
|
|
|
|
|
| |
For reasons unknown to me compile optimizations do not behave for
template code. If the implementation is in separate compile units, the
code compiles and performs.
|
|
|
|
|
|
|
| |
This needs more attention since for certain compilers there is a
considerable performance degregation. It looks like this is only
triggered if too many variants are declared in one cpp file and the
compiler stops inlining.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Thanks to Aaron Giles who made me think about a different approach.
This is a rewrite from scratch for rom devices. It uses a generic
template to implement rom devices which is used together with a
description struct to define a rom device. This leads to highly
efficient code since all information is available at compile time.
This is also a step forward to support tristate outputs. All rom devices
covered by this approach have tristate or open collector outputs and
thus all code changes to support tristate outputs can now be made
consistently in one file.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup to better separate the following stages:
- parsing
- setup
- run
In addition preliminary native tristate support was added. Not yet
production ready, please don't use it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The two sources act as voltage sources, though noise may also be
injected as conductivy or current noise.
SYS_NOISE_MT_U: Mersenne Twister uniform noise
SYS_NOISE_MT_N: Mersenne Twister normal noise
nld_sys_noise is templated:
using NETLIB_NAME(sys_noise_mt_u) =
NETLIB_NAME(sys_noise)<plib::mt19937_64,
plib::uniform_distribution_t>;
Thus the approach is scalable. The implementation is state save aware,
and thus reproducible results are guaranteed.
An example use case is provided as well, see examples/noise.cpp.
|
| |
|
|
|
|
|
|
|
|
| |
The device can be found in nlm_other.cpp.
Removed nld_ne566.*
Added SYS_SW, SYS_SW2 and SYS_COMP. These are single switch,
alternating switch and a analog comparator with digital outputs.
Renamed RES_SWITCH to SYS_SW.
Added example ne566.cpp in netlist/examples.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Added a define NL_USE_ACADEMIC_SOLVERS and disabled it in the build.
This will not compile in solvers which are either illustrative or only
perform for large sparse matrices like GMRES.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit introduces precompiled static solver code. Due to
additional optimizations the compiler can use because the detail
calculation steps for the solution are known e.g. the kidniki netlist
sees a 100% speed increase.
In all environments (windows/*nix/osx) the source for the static
solver code can be created using
bash src/lib/netlist/nl_create_mame_solvers.sh
This will create src/lib/netlist/generated/static_solvers.cpp which is
compiled into the mame binary.
The script is just a temporary workaround. The intention is that nltool
whill be able to create this file with one call.
There are other improvements in this commit speeding up the processing
of timestep and dynamic calculations.
|
| |
|
|
|
|
|
|
|
|
|
| |
- add CD4006 and CD4070 devices
- add TL084 opamp model
- Clock now supports proxies, i.e. can be connected to
analog devices.
- Fixed netlists using CLOCK
- added some comments
- removed a forgotten header file.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
- Separate code out into pmath.h and pstonum.h.
- Fix VC build error
- optimize pfmtlog.h a bit
|
|
|
|
|
|
|
|
| |
- Removed code no longer used
- Add noexcept where appropriate
- split pparser.[c|h] into ppreprocessor and ptokenizer
- smaller optimizations, e.g. use of std::size_t
- fix lint warnings
|
| |
|
|
|
|
|
|
|
| |
- solver now uses dynamic allocation on systems larger than 512x512
- fixed osx build
- moved nl_lists.h classes to plists.h
- fixed netlist makefile clint section
- readability and typos
|