| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
- move code to more appropriate locations
- apply clang-format to modified files
- fixed some cspell errors
- Applied emu.h rule.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- added support parameter FORCE_TRISTATE_LOGIC on mk28000
- add system device SYS_PULSE to generate pulse based on input changes
parameters are delay, pulse width, input polarity and output polarity
- add USE_SPEED_HACKS define to gtrak10 to enable the use of the above
Brings gtrak10 from 18% to 120%.
- Improved interlaced video support in fixfreq.cpp
Added two interlace modes: progressive and interlaced which can
be selected in machine configuration.
- more clang format work
- rename link to connection
- introduced typed aliases. This information may be used later to
rewrite netlists.
- added a three terminal base device
This will allow the analog code to be more easily comparable to
literature about MNA (Modal node analysis).
BJT code is now a lot better readable.
- fix doxygen consistency
- added an example for a cmos inverter based on NMOS/PMOS fets.
- TRUTHTABLE_START was renamed to TRUTH_TABLE
- truth tables are now enclosed in braces
- netlists are now enclosed in braces
- TRUTHTABLE_END() and NETLIST_END() removed from files
- Fixed static solver script
- Add file path to includes in nltool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* netlist: fix bug, prepare for future changes and improve readability
- fix a bug where a net processing error may trigger a nullptr access
- applied some clang-tidy recommendations
- add no_return to plib::terminate
- properly encapsulate dynamic_cast usage
- more review of noexcept
- added a clang-format file. Over time, all source files will be
processed with clang-format
- Used clang format on a number of files
- Rewrote 74174
- all device constructors now use a struct to pass data on
to base classes. Neither netlist state nor the name are intended
to be used in a constructor. After the base class was
constructed, they can be accessed by state() and name().
- The device construction macros can now be removed. Changes to
the core will not need to be reflected in constructors.
- Change truth table macros so that going forward NETLIST_END and
TRUTH_TABLE_END can be replaced by a closing curly brace. netlists can
than use curly braces enclosed blocks.
- more clang-format
- removed some macros completely
- all derived classes from base_device_t now don't use macros
any longer.
- as a result, delegator_t was removed. This class was only used
to support macros :-(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* netlist: fix bugs and more cpp instead of macros
- C-style comments converted to c++
- Fix crash in state saving code when an abort queue processing event
is pending.
- Fix a bug where a net could be twice in the queue.
- Convert more macros to c++
- fixed SUBTARGET=nl build
- fixed potential bugs which would allow a terminal to belong to more
than one net. This is not possible even for a short time.
- moved some member function definitions out-of-class.
- moved code out-of-class
- added constexpr where appropriate
- fixed mamenl build
- Cleanup and indentation
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
|
|
|
|
|
|
|
|
| |
- Added more documentation to palloc.h
- Made the use of allocation arenas more transparent throughout code
- palloc now uses c++17 alignment aware operator new.
This required further changes to the arena_deleter object to
track alignment and size of allocated objects to avoid the use
of alignment and size of base classes in case a unique_ptr was
cast to a unique_ptr of the base class.
|
|
|
|
|
| |
- added cstddef to includes in ppmf.h
- more explicit comments in ppmf.h
- Fixed more typos and improved readiability
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- More c++, less macros
* Significantly reduced the use of unused_var and replaced it with
[[maybe_unused]]
* use enum class in ppmf.h
- Changes to testing code in ptest.h
* Catch exceptions in more places
* The verbosity of the output can now be controlled
* Display of test stats totals
- added support for cspell
- fixed various typos
- fixed SUBTARGET=nl build
- fixed more file permissions
- srcclean and add fix_permissions target to netlist makefile
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
* Under cirtum circumstances the splitter would create "ghost" solvers
consisting of terminals already used in another and complete
solver. This may impact all netlist which use opamps and thus
is committed early in the cycle.
* This commit adds functionality to instruct the splitter code to
include terminals which will not create matrix elements into
the parsing of net groups for solvers.
|
|
|
|
|
|
| |
* use default move and copy constructors
* various minor edits like adding noexcept
* removed a lot of inline keywords - you can't beat the compiler
|
|
|
|
| |
* where possible rely on forward declarations to optimiuze compile time.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
| |
* also fix an issue with netlist vs build
|
|
|
|
|
|
|
|
|
|
|
| |
* rename some misleading type names
* remove callback_t and replace by better scalable approach
* hide implementations details
* move sources classes from putil.h to psources.h
* reduce code complexity
* improve parsing performance, parsing netlists now is twice as fast.
* fix issues around multi-byte string support
* moved psplit into pstrutil.h
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
| |
* Exposing sub-device members is not best practice.
* The need for sub-devices is a clear indication that a netlist language
implementation would be a better solution.
|
|
|
|
|
| |
* moved dead code into examples/lostfound.cpp
* This work didn't improve performance but still may serve as examples
for complex truth table implementations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* All solver scheduling is now handled by nld_solver.
* Previously, for dynamic timestepping the sub solvers would be
responsible for their scheduling themselves.
- This prevented any attemps to use parallel execution of solvers.
* Now the route is free towards experiments to use parallel execution of
solvers.
* Uses ptimed_queue_linear in solver scheduling
* Improved netlist queue implementation (template now)
* Added const delegates.
* Added subsolver stats
* Removed dead code.
|
|
|
|
|
|
|
|
|
| |
* Removed update and NETLIB_UPDATE completely.
* Startup initialization order may change.
* This may cause regression tests to trigger. This is expected. Logic
TTL devices do not have a defined power-up state. That's why reset
circuits exist which create a reset signal *after* all power supply
lines are stable.
|
|
|
|
|
| |
* This is a long term transition goal. Documented in source (see
NL_USE_BACKWARD_EULER).
|
| |
|
|
|
|
|
|
| |
* more handler alignment
* dead code removal
* remove update calls which do nothing
|
| |
|
|
|
| |
* all inputs now explicitly specify a signal handler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* No changes for well-behaved netlists.
* Netlists reporting "newton loops exceeded" messages should now report
a lot less of these messages.
* In case newton-raphson does not converge, netlist will reset the state
back to the beginning of the timestep. It will than use a number of very
small timesteps to hopefully deal with the non-convergence due to a too
big timesteps. Afterwards solving continues using dynamic timestepping
until the time-slice is complete.
* This is a lot better than the previous approach.
* This is meant as a performance optimization helper. Ideally, your
netlists never produce "newton loops exceeded" messages.
* Any events for connected analog and digital inputs will happen after
the timeslice is complete. Thus this approach - as the previous one -
are not suited for high-frequency (such as video outputs) situations. In
these case, only dynamic timestepping or reducing the fixed timestep are
a suitable solution.
|
|
|
|
|
|
|
|
| |
* Electronic circuits and base components like resistors or capacitors
do not have a reset line. You can use them to create reset circuits.
There is thus no point to support soft reset, the equivalent to pressing
the reset button.
* Fixed some bugs around reset and start up logic.
* This also fixes the "scramble F3" crash.
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
| |
pongf now peaks at 589% compared to 570% before.
Amongst a number of improvements in nl_base.h, the 7493 was touched.
Also has some code cleanup and hopefully faster compilation due to
extern template declarations.
|
| |
|
|
|
|
|
|
|
|
|
| |
Rom and prom devices now properly support tristate outputs. Native OC
output still on the todo list.
In addition this commit fixes a number of bugs around dealing with macro
level parameters and improves documentation by adding a parameter table.
Also srcclean.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Also remove dead code and dead comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- removed family_setter
- naming alignment, family becomes model.
- architecture cleanups.)
- reviewed reset logic.
- pass truthtable family as string to factory.
This is another set of changes on the path to align logic families and
models. As a side effect, the object model now makes a clear
distinction between analog models and logic models.
The number of macros in nl_base.h has decreased significantly due to
these changes.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Reduce the usage of NETLIB_CONSTRUCTOR_DERIVED to implement
dip package objects. This aligns the programmatic approach
with the approach used in the macro folder, i.e. using netlists.
Untangle model definition and interpretation as well.
This changes are a first step in aligning models and families and thus
simplify the source further.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change makes state saving contract based. Objects which need to
save state need to have the following template member:
template <typename ST>
void save_state(ST &st)
{
/* Example */
st.save_item(m_p, "m_p");
st.save_item(m_buf, "m_buf");
}
This member function is called when the object is passed to the
state manager save function.
|
|
|
| |
Removes dependency on pstate.h.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The model is driven by three additional model parameters: NBV, IBV, BV.
Example code how to define a typical 7.5V Zener diode:
ZDIODE(ZD, "D(BV=7.5 IBV=0.01 NBV=3)")
or
NET_MODEL("A1234 D(BV=7.5 IBV=0.01 NBV=3)")
ZDIODE(ZD, "A1234")
|
| |
|
| |
|
|
|
|
| |
Note: This affects all use cases of CCCS. I have changed all uses in
MAME.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Make some calls private which were public before.
Eliminate functions which would be executed only once.
Make terminal reference functions in twoterm.h return const.
Clearly identify the use cases which need a non-const ref
to terminals.
|