Skip to content

Commit e9b3aba

Browse files
committed
Add vendor drop of version 2.5.0
1 parent c87548b commit e9b3aba

22 files changed

+332
-1441
lines changed

.gitignore

Lines changed: 0 additions & 22 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,14 @@ set(CMAKE_LEGACY_CYGWIN_WIN32 0)
2020
# Process the Version Numbers
2121
#------------------------------------
2222
set(XDM_MAJOR_VERSION "2")
23-
set(XDM_MINOR_VERSION "4")
23+
set(XDM_MINOR_VERSION "5")
2424
set(XDM_PATCH_VERSION "0")
2525
if( NOT XDM_MAJOR_VERSION MATCHES "[0-9]+" )
2626
set( XDM_MAJOR_VERSION "X" CACHE STRING "The major version number for this build." )
2727
endif()
2828
if( NOT XDM_MINOR_VERSION MATCHES "[0-9]+" )
2929
set( XDM_MINOR_VERSION "X" CACHE STRING "The minor version number for this build." )
3030
endif()
31-
if( NOT XDM_PATCH_VERSION MATCHES "[0-9]+" )
32-
set( XDM_PATCH_VERSION "X" CACHE STRING "The patch version number for this build." )
33-
endif()
3431

3532
# Setup "GIT_COMMIT_HASH" to store the current commit.
3633
# This also requires setting up a target that will check the current commit
@@ -399,6 +396,7 @@ else()
399396
set( BOOST_LIBS_TO_COPY "${Boost_${Boost_PYTHON_VERSION}_LIBRARY_RELEASE}" )
400397
endif()
401398
foreach( file_i "${BOOST_LIBS_TO_COPY}" )
399+
message(STATUS "file_i ${file_i}")
402400
if( WIN32 )
403401
get_filename_component( FILE_DIR "${file_i}" DIRECTORY )
404402
get_filename_component( FILE_NAME "${file_i}" NAME_WE )

README.md

Lines changed: 37 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# Xyce(TM) XDM Netlist Translator
2+
13
Xyce(TM) XDM Netlist Translator
24
Copyright 2002-2020 National Technology & Engineering Solutions of
35
Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
@@ -17,7 +19,6 @@ You should have received a copy of the GNU General Public License
1719
along with this program. If not, see <http://www.gnu.org/licenses/>.
1820

1921

20-
# Xyce(TM) XDM Netlist Translator
2122

2223
XDM uses CMake, the Boost Spirit header files, the Boost Python libraries, and
2324
Python 3 to create a mixed language Python/C++ tool called xdm_bdl that can
@@ -29,76 +30,66 @@ along with the XDM User's Guide. Source code for XDM and Xyce can be found here
2930

3031
There are two ways to run xdm_bdl both are available with the released version
3132
of XDM:
32-
33-
2. As a standalone executable built from xdm_bdl.py and the aforementioned
34-
binaries using PyInstaller. Both are available in the release of XDM
35-
3633
1. As a python script xdm_bdl.py that loads the compiled XDM libraries
3734
SpiritCommon, SpiritExprCommon, and XdmRapidXmlReader. These are C++
3835
libraries that can be imported as Python 3 modules.
39-
36+
2. As a standalone executable built from xdm_bdl.py and the aforementioned
37+
binaries using PyInstaller. Both are available in the release of XDM
4038

4139
# Building XDM
4240

43-
Building XDM and it's dependents can be tricky since there are many versions of
44-
Boost, Python 3, and C++ compilers available not all of which are compatible
45-
with each other. In particular older versions of Boost (before Boost 1.70.0)
46-
don't have CMake support and XDM developers may have trouble building
47-
pre-1.70.0 Boost against later versions of Python 3 and recent C++ compilers.
48-
XDM is developed with Boost 1.70.0 and later, Python 3.8 and 3.9, Clang 12, and
49-
GCC 8.3 XDM's only C++11 restriction is having a C++11 compatible compiler. As
50-
such, older compilers may work but aren't supported. Experience has shown that
51-
more modern compilers can yield noticeable speed improvements which may be a
52-
factor when converting large files.
41+
Building XDM can be tricky since there are many versions of Boost, Python 3,
42+
and C++ compilers available not all of which are compatible with each other. In
43+
particular older versions of Boost (before Boost 1.70.0) don't have CMake
44+
support and XDM developers may have trouble building against later versions of
45+
Python 3 and recent C++ compilers. XDM is developed with Boost 1.70.0 and
46+
later, Python 3.8 and 3.9, Clang 12, and GCC 8.X.X. XDM's only C++11
47+
restriction is having a C++11 compatible compiler. As such, older compilers may
48+
work as well but aren't supported. Experience has shown that more modern
49+
compilers can yield noticeable speed improvements, which may be a factor when
50+
converting large files.
5351

5452

55-
# CMake configure
53+
## CMake configure
5654

5755
The XDM build should be simple given a system where the Boost Python libraries
5856
are installed with CMake support and built against Python 3. Something like the
5957
CMake command below should work from an empty directory intended to be the
60-
XDM build directory.
58+
build XDM.
6159

6260

63-
## Configure with Boost with CMake Support
61+
### Configure with Boost with CMake Support
6462

65-
```
63+
```
6664
cmake <path to XDM source> \
6765
-DBOOST_ROOT=<top level boost intallation location> \
68-
-DPYINSTALLER_PATH=<path to pyinstaller>
69-
```
66+
-DPyInstaller_PATH=${PyInstaller_PATH}
67+
```
7068

7169

72-
## Configure with Boost without CMake Support
73-
74-
In some cases the Boost CMake configuration files may not be helpful in
75-
building XDM. In particular Windows builds of Boost seem to be missing
76-
information required to copy the Boost Python libraries to the XDM build
77-
directory. (This is required for the Boost-Pytnon modules on Windows). In those
78-
cases it helps to tell CMake to not use the Boost CMake configuration files and
79-
instead explicitly specify the Boost headers and Boost Python libraries.
70+
### Configure with Boost without CMake Support
71+
72+
The following should also work in the above case but also if Boost doesn't have
73+
CMake support:
8074

81-
```
75+
```
8276
cmake <path to XDM source> \
8377
-DBoost_NO_BOOST_CMAKE=ON \
84-
-DBoost_INCLUDE_DIR=<path to boost include directory> \
85-
-DBoost_PYTHON38_LIBRARY_RELEASE=<path to boost-python release dir> \
86-
-DBoost_PYTHON38_LIBRARY_DEBUG=<path to boost-python release dir> \
87-
-DPYINSTALLER_PATH=<path to pyinstaller>
88-
```
89-
90-
In the above either the Debug or Release version of the libraries are required
91-
depending on which CMAKE_BUILD_TYPE is choosen. Of course the "38" in the above
92-
snippet refers to the Python 3 major and minor version numbers used to build
93-
the Boost Python libraries.
94-
78+
-DBOOST_INCLUDEDIR=<top level boost installation locations>/include \
79+
-DBOOST_LIBARYDIR=<top level boost installation location>k/lib \
80+
-DPyInstaller_PATH=${PyInstaller_PATH}
81+
```
82+
83+
The "top level boost installation location" should contain the typical
84+
"include" and "lib" directories and with a "lib/cmake" sub-directory that
85+
contains a number of CMake files if CMake support is available.
9586

96-
# Notes:
87+
Notes:
9788

9889
1. CMake can be invoked from the command line on Unix-like systems with the
9990
command ```cmake``` or ```ccmake``` to use an interactive NCurses GUI.
100-
On Windows CMake also has a GUI and it works much like the Unix based
101-
NCurses interface.
91+
On Windows CMake is GUI based and works much like the Unix based NCurses
92+
interface.
10293
2. PyInstaller is optional for building XDM. If is available to CMake it
10394
will be used to create a standalone executable xdm_bdl that can be
10495
relocated and shared with others on compatible systems. If PyInstaller
@@ -121,13 +112,8 @@ the Boost Python libraries.
121112
- [CMAKE_CXX_COMPILER](https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html#variable:CMAKE_%3CLANG%3E_COMPILER)
122113
7. For available CMake build configurations see: [CMake Build Variants](https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html)
123114
8. XDM will not work with Python 2.
124-
9. Adding the CMake flag "-DPython3_FIND_VIRTUALENV=ONLY" helps CMake find
125-
the correct version of Python 3 if you are using a Python virtual
126-
environment. By default CMake finds the latest version of Python whether
127-
there is a Python interpreter in your path or not.
128-
129115
130-
# Common CMake XDM problems:
116+
Common CMake XDM problems:
131117

132118
1. The most common XDM build problem is when Boost is built with a
133119
different version of Python from what CMake found in the configuration

RELEASE_NOTES.md

Lines changed: 17 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Xyce(TM) XDM Netlist Translator
1+
# Xyce(TM) XDM Netlist Translator
22
Copyright 2002-2020 National Technology & Engineering Solutions of
33
Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
44
NTESS, the U.S. Government retains certain rights in this software.
@@ -17,61 +17,28 @@ You should have received a copy of the GNU General Public License
1717
along with this program. If not, see <http://www.gnu.org/licenses/>.
1818

1919

20-
# XDM 2.4.0 Release Notes
20+
# XDM 2.5.0 Release Notes
2121

2222
## General
2323

24-
- Fixed bug where relative path names to files in .lib statements were
25-
incorrect.
26-
- Substitutions done by XDM for the special variable TEMP are no longer
27-
necessary and are taken out in this release.
24+
- Translations of netlists using binned models will no longer have the
25+
\texttt{.OPTION PARSER MODEL\_BINNING=TRUE} statement. This option is
26+
turned on by default in \Xyce{} now and therefore no longer needs to be
27+
explicitly declared.
2828

29-
30-
## PSpice
29+
- Duplicate output variables will now be removed from the \texttt{.PRINT}
30+
line.
3131

32-
- XDM allows the undocumented PSpice syntax of having trailing commas in
33-
entries of "TABLE" statements.
32+
- The expression and function pre-processing capabilities have been
33+
removed from XDM.
3434

35+
## spectre
3536
36-
## HSPICE
37-
38-
- if/else/endif statements in HSPICE are now commented out since
39-
Xyce doesn't currently support this.
40-
- Node names containing brackets, as seen in HSPICE, are now
41-
allowed.
42-
- Forward slashes in HSPICE device and subckt names are now allowed.
43-
- Xyce’s “-hspice-ext” option, which should be used when running HSPICE
44-
netlists translated by XDM, now by default expects the “.” for the
45-
subcircuit hierarchy separator character. Therefore, XDM translations
46-
will leave that character unchanged rather than translating it to
47-
Xyce’s native “:” subcircuit separator character.
48-
- Secondary sweep of .DC analyses should now be translated correctly
49-
into Xyce.
50-
- Xyce can now handle resistors with solution dependent expressions for
51-
their resistance values. Therefore, XDM will no longer translate
52-
solution dependent resistors into behavioral B-element sources.
37+
- The \texttt{else} conditional block in \texttt{if-else} statments will
38+
now be commented out by XDM, since conditional statement support is not
39+
fully mature yet in \Xyce{}.
5340

41+
## PSpice
5442

55-
## spectre
56-
57-
- XDM now translates transient Spectre "sine" specifications.
58-
- XDM comments out Spectre dc analysis statements with no parameters as it
59-
is not clear what the Xyce equivalent should be.
60-
- XDM can now identify Spectre device instantiations of models defined in
61-
SPICE format.
62-
- XDM removes Spectre "trise" parameter for R and C devices since this
63-
isn't available in Xyce.
64-
- Fixed bug in Spectre translation where sometimes the model name would not
65-
appear for a instantiation of a device of that model.
66-
- Fixed XDM crash when processing some Spectre subcircuit definitions.
67-
- Fixed bug in translation of Spectre “include” statements that have the
68-
parameter “section”. These will now be translated into “.LIB” statements
69-
in Xyce.
70-
- Added support for translation of Spectre “port” device instantiations.
71-
Not all instance parameters are translated at this time.
72-
- Translate the "M" unit prefix (mega) in Spectre "AC" statements to
73-
the Xyce equivalent "X".
74-
- XDM comments out Spectre dc analysis statements with no
75-
parameters as it is not clear what the Xyce equivalent should be.
76-
- Fixed bug where XDM aborted when translating Spectre “include”
77-
files with paths containing hyphens.
43+
- Fixed bug where instance parameters for temperature coefficients for
44+
resistors were not translated.

src/c_boost/expr/expr_parser_interface.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,25 +101,9 @@ BOOST_PYTHON_MODULE(SpiritExprCommon)
101101

102102
boost::python::class_<SpectreExprBoostParser>("SpectreExprBoostParser")
103103
.def("parseExpr", &SpectreExprBoostParser::parseExpr)
104-
.def_readwrite("py_dict", &SpectreExprBoostParser::dict)
105-
.def_readwrite("py_list", &SpectreExprBoostParser::list)
106-
.def_readwrite("py_list2", &SpectreExprBoostParser::list2)
107-
.def("import_func_statements", &SpectreExprBoostParser::import_func_statements)
108-
.def("import_func_args", &SpectreExprBoostParser::import_func_args)
109-
.def("import_param_statements", &SpectreExprBoostParser::import_param_statements)
110-
.def("eval_statements", &SpectreExprBoostParser::eval_statements)
111-
.def("print_maps", &SpectreExprBoostParser::print_maps)
112104
;
113105

114106
boost::python::class_<HSPICEExprBoostParser>("HSPICEExprBoostParser")
115107
.def("parseExpr", &HSPICEExprBoostParser::parseExpr)
116-
.def_readwrite("py_dict", &HSPICEExprBoostParser::dict)
117-
.def_readwrite("py_list", &HSPICEExprBoostParser::list)
118-
.def_readwrite("py_list2", &HSPICEExprBoostParser::list2)
119-
.def("import_func_statements", &HSPICEExprBoostParser::import_func_statements)
120-
.def("import_func_args", &HSPICEExprBoostParser::import_func_args)
121-
.def("import_param_statements", &HSPICEExprBoostParser::import_param_statements)
122-
.def("eval_statements", &HSPICEExprBoostParser::eval_statements)
123-
.def("print_maps", &HSPICEExprBoostParser::print_maps)
124108
;
125109
}

0 commit comments

Comments
 (0)