summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* netlist: small memory system cleanup. (nw) couriersud2020-05-251-4/+4
|
* netlist: move netlist parsing where it belongs. (nw) couriersud2020-05-251-1/+8
|
* netlist: improve performance. [Couriersud] couriersud2020-05-241-0/+2
| | | | | | | 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.
* netlist: move penum into own header file. (nw) couriersud2020-05-241-2/+4
|
* netlist: various clang-tidy-11 fixes. (nw) couriersud2020-05-241-2/+2
|
* netlist: Add tristate support for rom devices. [Couriersud] couriersud2020-05-201-30/+35
| | | | | | | | | 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.
* netlist: simplify factory call structure. (nw) couriersud2020-05-201-6/+4
| | | | | This change will make it a lot easier to add enhanced functionality to the factory infrastructure. Using integral constants also improves linking stability.
* netlist: improve typesafety for source locations. (nw) couriersud2020-05-171-4/+4
| | | | | | During object creation netlist tracks the source files which provide object creation. This is later used e.g. by nltool to create documentation from source.
* netlist: Add working 74125 and 74126 implementations. [Couriersud] couriersud2020-05-171-0/+22
| | | | | | | | | | | These tristate buffers natively support tristate outputs. For use cases with fixed enable inputs the devices support a parameter FORCE_TRISTATE_LOGIC which if being set to 1 makes the device behave like a logic output. Added additional syntax and consistency checks for tristate outputs. Updated the example and added dip implementations including documentation.
* netlist: rewrite rom devices from scratch. [Couriersud] couriersud2020-05-171-2/+6
| | | | | | | | | | | | | 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.
* netlist: code cleanup and development stage tristate [Couriersud] couriersud2020-05-151-57/+94
| | | | | | | | | | 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.
* netlist: Extended functionality and code cleanup. [Couriersud] couriersud2020-05-121-135/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - working macro level parameters - simplified code significantly - fixed a number of hidden issue - dead code removal It is now possible to define netlist level parameters using: static NETLIST_START(chip) DEFPARAM(parameter, 123) RES(R1, $(@.parameter)) .... NETLIST_END() NETLIST_START(main) chip(X1) PARAM(X1.parameter, 1000) ... NETLIST_END() This will pass on 1000 to R1 as a parameter. "@." will resolve to the current namespace. In this case it is X1, thus "X1.parameter. This is during parsing. During evalution, i.e. device creation, $(X1.parameter) is evaluated to 1000. This also means, that global parameters are possible and accessible ... DEFPARAM(P, 234) ... RES(R1, $(P)) or going forward RES(R1, 1000) CAP(C1, 1.0 / $(R1.R)) This opens up the path to more possibilities ... static NETLIST_START(DM9456_DIP) DEFPARAM(MODEL, "74XX") DM9456_GATE(X1) DM9456_GATE(X2) PARAM(X1.MODEL, $(@.MODEL)) PARAM(X2.MODEL, $(@.MODEL)) ... NETLIST_END() NETLIST_START(main) DM9456_DIP(X1) PARAM(X1.MODEL, "LS74XX") ... NETLIST_END() The code also has been prepared to allow something along the lines of LIBENTRY_MODEL(DM74LS00_DIP, DM7400_DIP, "LS74XX") to define a LS version on top of an DM7400_DIP bare TTL implementation. This however will need more efforts to existing devices to honour some timing adjustment in the model definition. It will already honour different output specifications between LS series and bare TTL if connected to analog components.
* netlist: more family/model alignment. (nw) couriersud2020-05-101-32/+60
| | | | Also remove dead code and dead comments.
* netlist: logic devices now support model parameter. [Couriersud] couriersud2020-05-101-18/+32
| | | | | | This a big forward to allow reuse of code. Still a longer way to go but the foundation there. Also brings quite a number of simplifications and dead code removal.
* netlist: provide more information for warning ... [Couriersud] couriersud2020-05-101-0/+39
| | | | on connecting two terminals already on the same net.
* netlist: Fix some tidy warnings. (nw) couriersud2020-05-031-1/+15
| | | moving over to clang-tidy-11 and enabling more warnings.
* netlist: Unknown parameters really should be fatal. [Couriersud] couriersud2020-05-011-6/+22
| | | | Unknown parameters like Solver.ABCD now will cause a fatal error to be generated.
* netlist: Removed more magic numbers from the code. (nw) couriersud2020-05-011-1/+1
|
* netlist: more code maintenance. (nw) couriersud2020-04-281-12/+2
| | | | | | | 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.
* netlist: improve const-awareness and tidy changes. (nw) couriersud2020-04-281-17/+17
| | | | Identified a number of code locations which could accept const arguments.
* netlist: More clang-tidy fixes. (nw) couriersud2020-04-281-12/+12
|
* netlist: Fix clang-tidy warnings. (nw) couriersud2020-04-281-27/+26
|
* netlist: improve readability. (nw) couriersud2020-04-251-1/+1
| | | | The purpose here is to make clear what is actually done and to reduce usage of calls to update.
* netlist: Fix a segfault happening only under for certain netlists. couriersud2020-04-221-3/+46
| | | This seems to be a compiler/standard library issues.
* netlist: rename some camel case names. (nw) couriersud2020-04-191-12/+12
|
* netlist: clang-tidy, srcclean and pedantic warnings fixed. (nw) couriersud2020-04-181-2/+2
|
* netlist: Reduce memory allocation calls in non-core code. (nw) couriersud2020-04-101-3/+3
|
* netlist: Fix some clang-tidy-10 warnings. (nw) couriersud2020-04-051-14/+14
|
* netlist: fix log file option in nltool. (nw) couriersud2020-02-171-16/+17
|
* netlist: Code symplification and bugfixes. (nw) couriersud2020-01-311-4/+4
| | | | | - Fixes performance regression and net_splitter struct. - Fixes nltool time measurements - pstream simplification
* netlist: Parameters evaluated when netlist is created. [Couriersud] couriersud2020-01-291-9/+12
| | | | | | | | | | | | Parameters are now passed to the netlist core as strings. During netlist creation they are evaluated as functions. This opens the path to parameters on subdevice level. Examples: PARAM(device.XY, (1+2*0.005)) RES(R1, 2.05*RES_K(1)+1) In addition the commit contains dead code removal.
* netlist: Code maintenance. (nw) couriersud2020-01-271-1/+0
| | | | | | | | | - Fixed some clang lint warnings - Removed dead code - Experimental parser code to allow calculations in parameter value. This already works for compiled netlists. These changes are currently disabled. Updated pong netlist (and CRC/SHA) to work with this new code.
* netlist: clang lint readability fixes. (nw) couriersud2020-01-251-98/+76
|
* netlist: code maintenance. (nw) couriersud2020-01-201-41/+47
| | | | | | - remove pthrow trampline as proposed by Vas. - identify throwing code by adding noexcept(false) - move "connected term" information to setup code. - srcclean
* netlist: more code maintenance. (nw) couriersud2019-11-161-1/+0
| | | | | | - refactor error messages. - Fix some drivers to cope with outputted added my the mame driver for video and sound. - Fix validation.
* netlist: maintenance and bug fixes, remove DUMMY_INPUT. [Couriersud] couriersud2019-11-151-15/+15
| | | | | | | | | | - Removed DUMMY_INPUT. NC (not connected) pins should now use NC_PIN. If a NC_PIN is actually connected, an error will be logged and validation will fail. - Enabled "extended" validation. This will catch now if power terminals are not connected. - Added const and noexcept where appropriate. - Removed dead code. - Fixed the 7414 Schmitt-Trigger device to use nld_power_pins
* netlist: Proxy and power terminal hack removal. [Couriersud] couriersud2019-11-141-25/+36
| | | | | | | | | | | | | | | | | | - Devices ttlhigh and ttlhow are no longer automatically created. - All logic input devices (e.g. TTL_INPUT, LOGIC_INPUT) now need to have their power terminals (VCC, GND) connected. This opens the route for more appropriate proxy devices but comes at a cost. If the connections are omitted your circuit will not work as expected. Example: LOGIC_INPUT(I_SD0, 1, "AY8910PORT") NET_C(VCC, I_SD0.VCC) NET_C(GND, I_SD0.GND) - Updated all netlists. - Removed proxy information from terminal objects. This was replaced by a lookup hash whose life-span does not exceed netlest setup. These changes enable the removal of a number of hacks from the source going forward.
* netlist: bug fix, code maintenance and performance improvement. (nw) couriersud2019-11-131-1/+2
| | | | | | | | | - fixed a code in the netlist creation which caused multiple proxies to be created for output->terminal connections. A nice side effect of this fix is a performance increase ~9% for kidniki and ~4% for pong. Speaking about pong ... maximum is 490%. Dice is running at 280 FPS/60 FPS = 466%, however without any analog emulation. - Replaced NL_NOEXCEPT with noexcept. assert is now exception-free. - cppcheck and lint fixes.
* netlist: code maintenance. (nw) couriersud2019-11-131-6/+6
| | | | | | - move memory pool to netlist_state_t removing one static allocation. - add memory allocation stats to verbose output - nl_assert no longer throws, first step to remove NL_EXCEPT macro.
* netlist: maintenance. (nw) couriersud2019-11-111-3/+8
| | | | | | | - Fix automatic header generation - clang lint fixes. - srcclean - remove dead code
* netlist: first steps on the way to calculated parameters. [Couriersud] couriersud2019-11-101-1/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit is a first step towards using formulas in parameters, i.e. MAINCLOCK(clock, 20 * 30) The intention is to improve readability and scalability. Since device registration already provides all necessary information about parameters, the code to create an include file for all devices has been improved. Long term, this will remove the need for device specific header files. In addition going forward devices will accept either no connections or all specified connections, i.e. TTL_7400_NAND(name, chip1.2, chip2.3) or TTL_7400_NAND(name) NET_C(...) NET_C(...) This will allow to remove all duplicate definitions which are currently necessary, i.e. TTL_7400_NAND/TTL_7400_GATE
* netlist: code maintenance and bug fixes. (nw) couriersud2019-11-081-2/+2
| | | | | | | - 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: maintenance. (nw) couriersud2019-11-081-22/+18
| | | | | - switch to VS 2019 community and fix standalone build. - more migration to C++ comment style. - add some more doxygen markup.
* netlist: more consistent exception handling. (nw) couriersud2019-11-051-10/+10
| | | | Still not optimal, but better than what we had previously. No exception logging comes closer.
* netlist: code maintenance. (nw) couriersud2019-11-041-17/+76
| | | | | | | | - 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: code maintenance. (nw) couriersud2019-11-031-2/+0
| | | | | | - Separate code out into pmath.h and pstonum.h. - Fix VC build error - optimize pfmtlog.h a bit
* netlist: Completed __float128 support. [Couriersud] couriersud2019-11-031-3/+3
| | | | | | Both compiling the core and the shaders with __float128 now work. The support was added to be ready to deal with academic edge cases. Performance drops to 10% of double - thus disabled by default.
* netlist: improve readability. (nw) couriersud2019-11-021-14/+14
| | | | | | | Renamed cast member of the constants struct to magic to clearly identify magic numbers. Introduced nlconst struct inheriting from plib::constants<nl_fptype> to make code better understandable.
* netlist: add RELTOL/VNTOL solver parameters. Type safety. [Couriersud] couriersud2019-11-021-12/+14
| | | | | | | | | 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: code maintenance and bugfixes. (nw) couriersud2019-11-011-1/+1
| | | | - fixed a bug in the parray constructor - replaced NL_NOEXCEPT with noexcept where appropriate