mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
netlist: build system improvements
* Medium term this will significantly ease adding devices to netlist.
This commit is contained in:
parent
2880eea644
commit
8335c1bed5
85
src/lib/netlist/build/create_devinc.py
Normal file
85
src/lib/netlist/build/create_devinc.py
Normal file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/python
|
||||
##
|
||||
## license:BSD-3-Clause
|
||||
## copyright-holders:Couriersud
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import re
|
||||
import sys
|
||||
import xml.sax
|
||||
import xml.sax.saxutils
|
||||
import zlib
|
||||
|
||||
|
||||
# workaround for version incompatibility
|
||||
if sys.version_info > (3, ):
|
||||
long = int
|
||||
|
||||
# globals
|
||||
|
||||
last_src = ""
|
||||
|
||||
def process_entry(srcfile, name, params):
|
||||
global last_src
|
||||
if (last_src != srcfile):
|
||||
last_src = srcfile
|
||||
print("// ---------------------------------------------------------------------")
|
||||
print("// Source: {}".format(srcfile))
|
||||
print("// ---------------------------------------------------------------------")
|
||||
|
||||
p = re.sub("\+","",params)
|
||||
ps = p.split(",")
|
||||
pusage = ""
|
||||
pauto = ""
|
||||
for x in ps:
|
||||
if x[0:1] == "@":
|
||||
pauto = pauto + ", " + x[1:]
|
||||
else:
|
||||
pusage = pusage + ", " + x
|
||||
print("// usage : {}(name{})".format(name, pusage))
|
||||
if len(pauto) > 0:
|
||||
print("// auto connect: {}".format(pauto[2:]))
|
||||
print("#define {}(...) \\".format(name))
|
||||
print(" NET_REGISTER_DEVEXT({}, __VA_ARGS__)".format(name))
|
||||
|
||||
|
||||
def process_file(srcfile):
|
||||
src = open(srcfile,'r')
|
||||
lines = src.readlines()
|
||||
for line in lines:
|
||||
ls = re.sub("\s+","",line.strip())
|
||||
ls = re.sub("^\s*//.*","",ls)
|
||||
ls = re.sub("\"","",ls)
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL\((\w+),(\w+),([a-zA-Z0-9_+@,]*)", ls)
|
||||
#print("Line{}: {}".format(count, line.strip()))
|
||||
if m != None:
|
||||
process_entry(srcfile, m.group(2), m.group(3))
|
||||
else:
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL_ALIAS\((\w+),(\w+),(\w+),([a-zA-Z0-9_+@,]*)", ls)
|
||||
if m != None:
|
||||
process_entry(srcfile, m.group(3), m.group(4))
|
||||
else:
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL_NS\((\w+),(\w+),(\w+),([a-zA-Z0-9_+@,]*)", ls)
|
||||
if m != None:
|
||||
process_entry(srcfile, m.group(3), m.group(4))
|
||||
else:
|
||||
m = re.match(r"LOCAL_LIB_ENTRY\((\w+)\)", ls)
|
||||
if m != None:
|
||||
process_entry(srcfile, m.group(1), "")
|
||||
else:
|
||||
m = re.match(r"TRUTHTABLE_START\((\w+),(\w+),(\w+),([a-zA-Z0-9_+@,]*)", ls)
|
||||
if m != None:
|
||||
process_entry(srcfile, m.group(1), m.group(4))
|
||||
|
||||
src.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
if (len(sys.argv) == 0):
|
||||
print('Usage:')
|
||||
print(' create_devinc files ...')
|
||||
sys.exit(0)
|
||||
|
||||
for argno in range(1, len(sys.argv)):
|
||||
process_file(sys.argv[argno])
|
||||
|
57
src/lib/netlist/build/create_lib_entries.py
Normal file
57
src/lib/netlist/build/create_lib_entries.py
Normal file
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/python
|
||||
##
|
||||
## license:BSD-3-Clause
|
||||
## copyright-holders:Couriersud
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import re
|
||||
import sys
|
||||
import xml.sax
|
||||
import xml.sax.saxutils
|
||||
import zlib
|
||||
|
||||
|
||||
# workaround for version incompatibility
|
||||
if sys.version_info > (3, ):
|
||||
long = int
|
||||
|
||||
# globals
|
||||
devices = []
|
||||
|
||||
def process_file(srcfile):
|
||||
src = open(srcfile,'r')
|
||||
lines = src.readlines()
|
||||
for line in lines:
|
||||
ls = re.sub("\s+","",line.strip())
|
||||
ls = re.sub("^\s*//.*","",ls)
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL\((\w+),", ls)
|
||||
#print("Line{}: {}".format(count, line.strip()))
|
||||
if m != None:
|
||||
n = m.group(1)
|
||||
devices.append(n)
|
||||
else:
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL_ALIAS\((\w+),", ls)
|
||||
if m != None:
|
||||
n = m.group(1)
|
||||
devices.append(n)
|
||||
else:
|
||||
m = re.match(r"NETLIB_DEVICE_IMPL_NS\((\w+),(\w+),", ls)
|
||||
if m != None:
|
||||
n = m.group(2)
|
||||
devices.append(n)
|
||||
src.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
if (len(sys.argv) == 0):
|
||||
print('Usage:')
|
||||
print(' extract files ...')
|
||||
sys.exit(0)
|
||||
|
||||
for argno in range(1, len(sys.argv)):
|
||||
process_file(sys.argv[argno])
|
||||
|
||||
devices.sort()
|
||||
for d in devices:
|
||||
print("LIB_ENTRY({})".format(d))
|
||||
|
@ -49,7 +49,7 @@ TIDY_FLAGSX += -llvmlibc-restrict-system-libc-headers,-llvmlibc-implementation-i
|
||||
space :=
|
||||
space +=
|
||||
TIDY_FLAGS = -p $(OBJ) $(subst $(space),,$(TIDY_FLAGSX))
|
||||
TIDY_SOURCES = $(SOURCES)
|
||||
TIDY_SOURCES = $(ALLSOURCES)
|
||||
|
||||
#TIDY_SOURCES = $(SRC)/devices/nld_7442.cpp $(SRC)/devices/nld_7492.cpp
|
||||
|
||||
@ -71,6 +71,8 @@ DOXYGEN = @./doxygen
|
||||
HOSTARCH = NIX
|
||||
endif
|
||||
|
||||
PYTHON=@python
|
||||
|
||||
TIDY_DB = $(OBJ)/compile_commands.json
|
||||
|
||||
|
||||
@ -120,7 +122,7 @@ OBJDIRS = $(OBJ) \
|
||||
$(OBJ)/generated \
|
||||
|
||||
|
||||
OBJS = $(POBJS) $(NLOBJS) $(TESTOBJS)
|
||||
OBJS = $(POBJS) $(NLOBJS) $(NLDEVOBJS) $(TESTOBJS)
|
||||
|
||||
POBJS := \
|
||||
$(POBJ)/pstring.o \
|
||||
@ -136,20 +138,22 @@ POBJS := \
|
||||
PMAIN := $(POBJ)/pmain.o
|
||||
|
||||
NLOBJS := \
|
||||
$(NLOBJ)/solver/nld_solver.o \
|
||||
$(NLOBJ)/solver/nld_matrix_solver.o \
|
||||
$(NLOBJ)/nl_base.o \
|
||||
$(NLOBJ)/nl_parser.o \
|
||||
$(NLOBJ)/nl_setup.o \
|
||||
$(NLOBJ)/nl_factory.o \
|
||||
$(NLOBJ)/tools/nl_convert.o \
|
||||
$(NLOBJ)/generated/static_solvers.o \
|
||||
|
||||
NLDEVOBJS := \
|
||||
$(NLOBJ)/solver/nld_solver.o \
|
||||
$(NLOBJ)/analog/nld_bjt.o \
|
||||
$(NLOBJ)/analog/nld_mosfet.o \
|
||||
$(NLOBJ)/analog/nlid_fourterm.o \
|
||||
$(NLOBJ)/analog/nld_switches.o \
|
||||
$(NLOBJ)/analog/nlid_twoterm.o \
|
||||
$(NLOBJ)/analog/nld_opamps.o \
|
||||
$(NLOBJ)/tools/nl_convert.o \
|
||||
$(NLOBJ)/generated/static_solvers.o \
|
||||
$(NLOBJ)/devices/nld_2102A.o \
|
||||
$(NLOBJ)/devices/nld_tms4800.o \
|
||||
$(NLOBJ)/devices/nld_4006.o \
|
||||
@ -240,11 +244,12 @@ DOCS = \
|
||||
ALL_OBJS = $(OBJS) $(PMAIN) $(NLOBJ)/prg/nltool.o $(NLOBJ)/prg/nlwav.o
|
||||
|
||||
ALL_TIDY_FILES = $(ALL_OBJS:.o=.json)
|
||||
SOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp))
|
||||
ALLFILES = $(SOURCES) $(VSBUILDS) $(DOCS)
|
||||
|
||||
MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree tidy runtests
|
||||
ALLSOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp))
|
||||
DEVSOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(NLDEVOBJS:.o=.cpp))
|
||||
ALLFILES = $(ALLSOURCES) $(VSBUILDS) $(DOCS)
|
||||
|
||||
MAKEFILE_TARGETS_WITHOUT_INCLUDE := all gcc9 clang clang-5 mingw doc native maketree tidy runtests generated manpages
|
||||
BUILD_DIRS = $(OBJDIRS) man html
|
||||
|
||||
# git archive HEAD --prefix=project-name-version/ \
|
||||
# --format=zip -o project-name-version.zip
|
||||
@ -253,7 +258,7 @@ MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree
|
||||
# PHONY
|
||||
#-------------------------------------------------
|
||||
|
||||
.PHONY: all gcc9 clang clang-5 mingw doc man native maketree $(DEPEND) depend runtests
|
||||
.PHONY: $(MAKEFILE_TARGETS_WITHOUT_INCLUDE)
|
||||
|
||||
#-------------------------------------------------
|
||||
# all
|
||||
@ -285,10 +290,10 @@ nlwav$(EXESUFFIX): $(OBJ)/prg/nlwav.o $(PMAIN) $(OBJS)
|
||||
# directories
|
||||
#-------------------------------------------------
|
||||
|
||||
$(sort $(OBJDIRS)):
|
||||
$(sort $(BUILD_DIRS)):
|
||||
$(MD) -p $@
|
||||
|
||||
maketree: $(sort $(OBJDIRS))
|
||||
maketree: $(sort $(BUILD_DIRS))
|
||||
|
||||
#-------------------------------------------------
|
||||
# Special targets
|
||||
@ -338,53 +343,60 @@ nvcc:
|
||||
-Xcompiler -O6 -Xcompiler -march=native -ccbin g++-8 " \
|
||||
DEPENDCC=g++
|
||||
|
||||
runtests:
|
||||
./nltool$(EXESUFFIX) -c tests
|
||||
|
||||
tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
|
||||
|
||||
#
|
||||
# Mostly done: -Wno-weak-vtables -Wno-cast-align
|
||||
# FIXME: -Wno-weak-vtables -Wno-weak-template-vtables -Wno-exit-time-destructors
|
||||
# FIXME: -Winconsistent-missing-destructor-override : c++ community has diverging opinions on this https://github.com/isocpp/CppCoreGuidelines/issues/721
|
||||
# FIXME: -Wunreachable-code : False warnings, this a documented clang bug: https://llvm.org/bugs/show_bug.cgi?id=28994
|
||||
# -Wweak-template-vtables
|
||||
#
|
||||
# These have to be given:
|
||||
# -Wno-missing-variable-declarations : Device factory code, on purpose
|
||||
|
||||
mingw:
|
||||
$(MAKE) CEXTRAFLAGS="-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0501 \
|
||||
-DWIN32_LEAN_AND_MEAN" LDEXTRAFLAGS="-Wl,--subsystem,console \
|
||||
-municode" LIBS= MD=@mkdir.exe SHELL=sh.exe DOXYGEN=doxygen.exe $(PARAMS)
|
||||
|
||||
#
|
||||
# FIXME: Unicode
|
||||
# CEXTRAFLAGS = -DUNICODE -D_UNICODE -municode
|
||||
# LDEXTRAFLAGS = -municode
|
||||
#
|
||||
#-------------------------------------------------
|
||||
# regression tests
|
||||
#-------------------------------------------------
|
||||
|
||||
man: nltool$(EXESUFFIX) nlwav$(EXESUFFIX)
|
||||
@mkdir -p man
|
||||
@mkdir -p html
|
||||
help2man --include=nltool.help2man --no-info ./nltool$(EXESUFFIX) > man/nltool.1
|
||||
groff -mandoc -Thtml man/nltool.1 > html/nltool.html
|
||||
runtests:
|
||||
./nltool$(EXESUFFIX) -c tests
|
||||
|
||||
#-------------------------------------------------
|
||||
# man pages
|
||||
#-------------------------------------------------
|
||||
|
||||
manpages: maketree man/nltool.1 man/nlwav.1 html/nltool.html html/nlwav.html
|
||||
|
||||
#-------------------------------------------------
|
||||
# documentation
|
||||
#-------------------------------------------------
|
||||
|
||||
doc:
|
||||
./nltool$(EXESUFFIX) -c docheader > ../documentation/devsyn.dox.h
|
||||
$(DOXYGEN) doxygen.conf
|
||||
|
||||
#-------------------------------------------------
|
||||
# generated
|
||||
#-------------------------------------------------
|
||||
|
||||
../generated/lib_entries.hxx: $(DEVSOURCES)
|
||||
@echo creating $@
|
||||
$(PYTHON) create_lib_entries.py $^ > $@
|
||||
|
||||
../generated/nld_devinc.h: $(DEVSOURCES)
|
||||
@echo creating $@
|
||||
$(PYTHON) create_devinc.py $^ > $@
|
||||
|
||||
.PHONY: generated
|
||||
generated: ../generated/lib_entries.hxx ../generated/nld_devinc.h
|
||||
|
||||
#-------------------------------------------------
|
||||
# depends
|
||||
#-------------------------------------------------
|
||||
|
||||
$(DEPEND): maketree $(SOURCES)
|
||||
.PHONY: $(DEPEND)
|
||||
$(DEPEND): maketree $(ALLSOURCES)
|
||||
@echo creating $(DEPEND)
|
||||
@rm -f $(DEPEND)
|
||||
@for i in $(SOURCES); do \
|
||||
@for i in $(ALLSOURCES); do \
|
||||
$(DEPENDCC) $(CCOREFLAGS) -MM $$i -MT `echo $$i | sed -e 's+$(SRC)+$(OBJ)+' -e 's+.cpp+.o+' ` >> $(DEPEND); \
|
||||
done
|
||||
|
||||
.PHONY: depend
|
||||
depend: $(DEPEND)
|
||||
|
||||
# Include only if the goal needs it
|
||||
@ -395,15 +407,15 @@ endif
|
||||
#-------------------------------------------------
|
||||
# clang tidy
|
||||
#-------------------------------------------------
|
||||
|
||||
tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
|
||||
|
||||
tidy: tidy_db
|
||||
@echo running tidy
|
||||
@for i in $(TIDY_SOURCES); do \
|
||||
$(CLANG_TIDY) $$i $(TIDY_FLAGS) -header-filter=.*; \
|
||||
done
|
||||
|
||||
tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
|
||||
|
||||
|
||||
#-------------------------------------------------
|
||||
# generic rules
|
||||
#-------------------------------------------------
|
||||
@ -432,6 +444,14 @@ $(OBJ)/%.json: $(SRC)/%.cpp
|
||||
@echo \"file\": \"$(CURDIR)/$<\" } >> $(TIDY_DB)
|
||||
@echo "," >> $(TIDY_DB)
|
||||
|
||||
man/%.1: %$(EXESUFFIX)
|
||||
@echo Building $@...
|
||||
@help2man --include=$*.help2man --no-info ./$< > $@
|
||||
|
||||
html/%.html: man/%.1
|
||||
@echo Building $@...
|
||||
@groff -mandoc -Thtml $< > $@
|
||||
|
||||
compile_commands_prefix:
|
||||
@echo "[" > $(TIDY_DB)
|
||||
|
||||
|
5
src/lib/netlist/build/nlwav.help2man
Normal file
5
src/lib/netlist/build/nlwav.help2man
Normal file
@ -0,0 +1,5 @@
|
||||
[see also]
|
||||
More documentation for the
|
||||
.B nlwav
|
||||
program is available in doxygen format.
|
||||
|
@ -11,20 +11,11 @@
|
||||
/// here directly (e.g. nld_nc_pin).
|
||||
///
|
||||
|
||||
#if 0
|
||||
#include "core/base_objects.h"
|
||||
#include "core/logic.h"
|
||||
#include "core/logic_family.h"
|
||||
#include "core/netlist_state.h"
|
||||
#include "core/nets.h"
|
||||
#include "core/object_array.h"
|
||||
#include "core/param.h"
|
||||
#include "core/state_var.h"
|
||||
#include "core/exec.h"
|
||||
#endif
|
||||
#include "analog.h"
|
||||
#include "device.h"
|
||||
#include "device_macros.h"
|
||||
#include "logic.h"
|
||||
#include "param.h"
|
||||
|
||||
//============================================================
|
||||
// Namespace starts
|
||||
|
@ -25,135 +25,10 @@ namespace devices
|
||||
{
|
||||
// The following is from a script which automatically creates
|
||||
// the entries.
|
||||
// FIXME: the list should be either include or the whole
|
||||
// FIXME: the list should be either included or the whole
|
||||
// initialize factory code should be created programmatically.
|
||||
#if 0
|
||||
LIB_ENTRY(2102A)
|
||||
LIB_ENTRY(2716)
|
||||
LIB_ENTRY(4538)
|
||||
LIB_ENTRY(74107)
|
||||
LIB_ENTRY(74107A)
|
||||
LIB_ENTRY(74113)
|
||||
LIB_ENTRY(74113A)
|
||||
LIB_ENTRY(74121)
|
||||
LIB_ENTRY(74123)
|
||||
LIB_ENTRY(74125)
|
||||
LIB_ENTRY(74126)
|
||||
LIB_ENTRY(74153)
|
||||
LIB_ENTRY(74161)
|
||||
LIB_ENTRY(74161_fixme)
|
||||
LIB_ENTRY(74163)
|
||||
LIB_ENTRY(74164)
|
||||
LIB_ENTRY(74165)
|
||||
LIB_ENTRY(74166)
|
||||
LIB_ENTRY(74174)
|
||||
LIB_ENTRY(74174_GATE)
|
||||
LIB_ENTRY(74175)
|
||||
LIB_ENTRY(74175_dip)
|
||||
LIB_ENTRY(74192)
|
||||
LIB_ENTRY(74192_dip)
|
||||
LIB_ENTRY(74193)
|
||||
LIB_ENTRY(74193_dip)
|
||||
LIB_ENTRY(74194)
|
||||
LIB_ENTRY(74194_dip)
|
||||
LIB_ENTRY(74365)
|
||||
LIB_ENTRY(74365_dip)
|
||||
LIB_ENTRY(74377_GATE)
|
||||
LIB_ENTRY(74393)
|
||||
LIB_ENTRY(7448)
|
||||
LIB_ENTRY(7450)
|
||||
LIB_ENTRY(7473)
|
||||
LIB_ENTRY(7473A)
|
||||
LIB_ENTRY(7474)
|
||||
LIB_ENTRY(7475_GATE)
|
||||
LIB_ENTRY(7477_GATE)
|
||||
LIB_ENTRY(7483)
|
||||
LIB_ENTRY(7485)
|
||||
LIB_ENTRY(7490)
|
||||
LIB_ENTRY(7492)
|
||||
LIB_ENTRY(7493)
|
||||
LIB_ENTRY(7497)
|
||||
LIB_ENTRY(74S287)
|
||||
LIB_ENTRY(82S115)
|
||||
LIB_ENTRY(82S123)
|
||||
LIB_ENTRY(82S126)
|
||||
LIB_ENTRY(82S16)
|
||||
LIB_ENTRY(9310)
|
||||
LIB_ENTRY(9314)
|
||||
LIB_ENTRY(9314_dip)
|
||||
LIB_ENTRY(9316)
|
||||
LIB_ENTRY(9322)
|
||||
LIB_ENTRY(9322_GATE)
|
||||
LIB_ENTRY(9334)
|
||||
LIB_ENTRY(9334_dip)
|
||||
LIB_ENTRY(9602)
|
||||
LIB_ENTRY(AM2847)
|
||||
LIB_ENTRY(AM2847_dip)
|
||||
LIB_ENTRY(analog_input)
|
||||
LIB_ENTRY(C)
|
||||
LIB_ENTRY(CCCS)
|
||||
LIB_ENTRY(CCVS)
|
||||
LIB_ENTRY(CD4006)
|
||||
LIB_ENTRY(CD4013)
|
||||
LIB_ENTRY(CD4017)
|
||||
LIB_ENTRY(CD4020)
|
||||
LIB_ENTRY(CD4020_WI)
|
||||
LIB_ENTRY(CD4022)
|
||||
LIB_ENTRY(CD4024)
|
||||
LIB_ENTRY(CD4053_GATE)
|
||||
LIB_ENTRY(CD4066_GATE)
|
||||
LIB_ENTRY(CD4316_GATE)
|
||||
LIB_ENTRY(clock)
|
||||
LIB_ENTRY(CS)
|
||||
LIB_ENTRY(D)
|
||||
LIB_ENTRY(extclock)
|
||||
LIB_ENTRY(frontier)
|
||||
LIB_ENTRY(function)
|
||||
LIB_ENTRY(gnd)
|
||||
LIB_ENTRY(L)
|
||||
LIB_ENTRY(log)
|
||||
LIB_ENTRY(logD)
|
||||
LIB_ENTRY(logic_input)
|
||||
LIB_ENTRY(logic_input8)
|
||||
LIB_ENTRY(logic_input_ttl)
|
||||
LIB_ENTRY(LVCCS)
|
||||
LIB_ENTRY(mainclock)
|
||||
LIB_ENTRY(MC1455P)
|
||||
LIB_ENTRY(MC1455P_dip)
|
||||
LIB_ENTRY(MM5837_dip)
|
||||
LIB_ENTRY(MOSFET)
|
||||
LIB_ENTRY(nc_pin)
|
||||
LIB_ENTRY(NE555)
|
||||
LIB_ENTRY(NE555_dip)
|
||||
LIB_ENTRY(netlistparams)
|
||||
LIB_ENTRY(nicDelay)
|
||||
LIB_ENTRY(nicRSFF)
|
||||
LIB_ENTRY(opamp)
|
||||
LIB_ENTRY(POT)
|
||||
LIB_ENTRY(POT2)
|
||||
LIB_ENTRY(QBJT_EB)
|
||||
LIB_ENTRY(QBJT_switch)
|
||||
LIB_ENTRY(R)
|
||||
LIB_ENTRY(r2r_dac)
|
||||
LIB_ENTRY(schmitt_trigger)
|
||||
LIB_ENTRY(SN74LS629)
|
||||
LIB_ENTRY(solver)
|
||||
LIB_ENTRY(switch1)
|
||||
LIB_ENTRY(switch2)
|
||||
LIB_ENTRY(sys_compd)
|
||||
LIB_ENTRY(sys_dsw1)
|
||||
LIB_ENTRY(sys_dsw2)
|
||||
LIB_ENTRY(sys_noise_mt_n)
|
||||
LIB_ENTRY(sys_noise_mt_u)
|
||||
LIB_ENTRY(TMS4800)
|
||||
LIB_ENTRY(TMS4800_dip)
|
||||
LIB_ENTRY(tristate)
|
||||
LIB_ENTRY(tristate3)
|
||||
LIB_ENTRY(varclock)
|
||||
LIB_ENTRY(VCCS)
|
||||
LIB_ENTRY(VCVS)
|
||||
LIB_ENTRY(VS)
|
||||
LIB_ENTRY(Z)
|
||||
#if (NL_AUTO_DEVICES)
|
||||
#include "../generated/lib_entries.hxx"
|
||||
#else
|
||||
LIB_ENTRY(R)
|
||||
LIB_ENTRY(POT)
|
||||
|
@ -31,7 +31,8 @@
|
||||
NETLIST_EXTERNAL(base_lib)
|
||||
|
||||
#if NL_AUTO_DEVICES
|
||||
#include "nld_devinc.h"
|
||||
|
||||
#include "../generated/nld_devinc.h"
|
||||
|
||||
#else
|
||||
|
||||
|
@ -82,8 +82,6 @@ namespace netlist
|
||||
nld_power_pins m_supply;
|
||||
};
|
||||
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL(CD4066_GATE, "CD4066_GATE", "")
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -211,5 +211,5 @@ private:
|
||||
nld_power_pins m_supply;
|
||||
};
|
||||
|
||||
NETLIB_DEVICE_IMPL(CD4066_GATE_DYNAMIC, "CD4066_GATE_DYNAMIC", "")
|
||||
// NETLIB_DEVICE_IMPL(CD4066_GATE_DYNAMIC, "CD4066_GATE_DYNAMIC", "")
|
||||
|
||||
|
1106
src/lib/netlist/generated/nld_devinc.h
Normal file
1106
src/lib/netlist/generated/nld_devinc.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -31,6 +31,7 @@
|
||||
#define PEXPECT_FALSE(exp1) PINT_EXPECT(eq, exp1, false)
|
||||
|
||||
#define PEXPECT_THROW(exp, excep) PINT_EXPECT_THROW(exp, excep)
|
||||
#define PEXPECT_NO_THROW(exp) PINT_EXPECT_NO_THROW(exp)
|
||||
|
||||
#define PTEST(name, desc) PINT_TEST(name, desc)
|
||||
#define PTEST_F(name, desc) PINT_TEST_F(name, desc, name)
|
||||
@ -61,6 +62,14 @@
|
||||
catch (...) { std::cout << ptest_f << ":" << __LINE__ << ":1: error: unexpected exception thrown\n"; } \
|
||||
} else do {} while (0)
|
||||
|
||||
#define PINT_EXPECT_NO_THROW(exp) \
|
||||
if (const char *ptest_f = __FILE__) \
|
||||
{ \
|
||||
try { exp; std::cout << "\tOK: got no exception for " # exp "\n";} \
|
||||
catch (std::exception &ptest_e) { std::cout << ptest_f << ":" << __LINE__ << ":1: error: unexpected exception thrown: " << ptest_e.what() << "\n"; } \
|
||||
catch (...) { std::cout << ptest_f << ":" << __LINE__ << ":1: error: unexpected exception thrown\n"; } \
|
||||
} else do {} while (0)
|
||||
|
||||
namespace plib
|
||||
{
|
||||
namespace testing
|
||||
|
@ -33,7 +33,7 @@ PTEST(pfunction, func_if)
|
||||
{
|
||||
PFUNCEXPECT("if(1>0, 2, 0)", 2.0);
|
||||
PFUNCEXPECT("if(0>1, 2, 3)", 3.0);
|
||||
PFUNCEXPECT("if(sin(1)>0, 2, 3)", 3.0); // fail
|
||||
PFUNCEXPECT("if(sin(1)>0, 2, 3)", 2.0); // fail
|
||||
PEXPECT_EQ( 1.0, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,-1.0,3.0}));
|
||||
PEXPECT_EQ(-0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,1.0,1.0}));
|
||||
PEXPECT_EQ( 0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({3.0,1.0,1.0}));
|
||||
@ -51,5 +51,5 @@ PTEST(pfunction, unary_minus)
|
||||
PFUNCEXPECT("3*-(3*2)", -18.0);
|
||||
PFUNCEXPECT("3*-(2*1)^2", -12.0);
|
||||
PEXPECT_THROW(plib::pfunction<double>("(3, 4)")(), plib::pexception);
|
||||
PEXPECT_THROW(plib::pfunction<double>("(3)")(), plib::pexception); // fail
|
||||
PEXPECT_NO_THROW(plib::pfunction<double>("(3)")()); // fail
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user