PyIBIS-AMI 7.2.8__tar.gz → 7.2.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyibis_ami-7.2.8/src/pyibis_ami.egg-info → pyibis_ami-7.2.10}/PKG-INFO +24 -25
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/README.md +23 -24
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/pyproject.toml +1 -2
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10/src/pyibis_ami.egg-info}/PKG-INFO +24 -25
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/IBIS_AMI_Tester.ipynb +9 -7
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/model.py +14 -4
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/parser.py +33 -7
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ibis/model.py +6 -1
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ibis/parser.py +20 -3
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/tools/run_notebook.py +5 -2
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/LICENSE +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/MANIFEST.in +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/ami.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/conf.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/ibis.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/index.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/install.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/modules.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/docs/source/tools.rst +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/all_taps.run +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/bandwidth.run +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/dummy.em +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/examples.md +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/freq_resp.em +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/impulse.em +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/impulse_response_8ma.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/mode.run +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/stratix4_ami_tx_runs/all_taps.run +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/stratix4_ami_tx_runs/test_results.xml +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/examples/test_results/test_results.xsl +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/setup.cfg +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibis_ami.egg-info/SOURCES.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibis_ami.egg-info/dependency_links.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibis_ami.egg-info/entry_points.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibis_ami.egg-info/requires.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibis_ami.egg-info/top_level.txt +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/IBIS_AMI_Checker.ipynb +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/__init__.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/__main__.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/__init__.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/config.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/generic.ami.em +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/generic.ibs.em +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/parameter.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ami/reserved_parameter_names.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/common.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ibis/__init__.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/ibis/file.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/tools/__init__.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/tools/run_tests.py +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/src/pyibisami/tools/test_results.xsl +0 -0
- {pyibis_ami-7.2.8 → pyibis_ami-7.2.10}/tests/test_run_tests.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyibis-ami
|
|
3
|
-
Version: 7.2.
|
|
3
|
+
Version: 7.2.10
|
|
4
4
|
Summary: Facilitates working directly with IBIS-AMI DLLs from the Python command prompt.
|
|
5
5
|
Author-email: David Banas <capn.freako@gmail.com>
|
|
6
6
|
Project-URL: Documentation, https://pyibis-ami.readthedocs.io/en/latest/
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
# PyIBIS-AMI
|
|
41
41
|
|
|
42
42
|
PyIBIS-AMI is a Python package of tools useful in the development and testing of IBIS-AMI models.
|
|
43
|
-
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides
|
|
43
|
+
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides three
|
|
44
44
|
command line applications.
|
|
45
45
|
|
|
46
46
|
It can be installed via: `pip install PyIBIS-AMI`.
|
|
@@ -49,9 +49,23 @@ It can be installed via: `pip install PyIBIS-AMI`.
|
|
|
49
49
|
|
|
50
50
|
## Command Line Tools
|
|
51
51
|
|
|
52
|
-
###
|
|
52
|
+
### AMI Config
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
ami_config -h
|
|
56
|
+
Usage: ami_config [OPTIONS] PY_FILE
|
|
57
|
+
|
|
58
|
+
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
59
|
+
|
|
60
|
+
py_file: name of model configuration file (*.py)
|
|
61
|
+
|
|
62
|
+
Options:
|
|
63
|
+
-h, --help Show this message and exit.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Run (New) IBIS-AMI Model Testing Notebook
|
|
53
67
|
|
|
54
|
-
```
|
|
68
|
+
```
|
|
55
69
|
$ run-notebook -h
|
|
56
70
|
Usage: run-notebook [OPTIONS] IBIS_FILE BIT_RATE
|
|
57
71
|
|
|
@@ -77,46 +91,31 @@ Options:
|
|
|
77
91
|
-h, --help Show this message and exit.
|
|
78
92
|
```
|
|
79
93
|
|
|
80
|
-
###
|
|
81
|
-
|
|
82
|
-
```shell
|
|
83
|
-
ami_config -h
|
|
84
|
-
Usage: ami_config [OPTIONS] PY_FILE
|
|
85
|
-
|
|
86
|
-
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
87
|
-
|
|
88
|
-
py_file: name of model configuration file (*.py)
|
|
94
|
+
### Run (Old Style) Tests
|
|
89
95
|
|
|
90
|
-
Options:
|
|
91
|
-
-h, --help Show this message and exit.
|
|
92
96
|
```
|
|
93
|
-
|
|
94
|
-
### Run Tests
|
|
95
|
-
|
|
96
|
-
```shell
|
|
97
97
|
run_tests -h
|
|
98
98
|
Usage: run_tests [OPTIONS] [TESTS]...
|
|
99
99
|
|
|
100
100
|
Run a series of tests on a AMI model DLL file.
|
|
101
101
|
|
|
102
102
|
If no tests are specified on the command line, run all tests found in
|
|
103
|
-
`test_dir
|
|
103
|
+
`test_dir`. (See `-t` option.)
|
|
104
104
|
|
|
105
105
|
usage: %prog [options] [test1 [test2 ...]]
|
|
106
106
|
|
|
107
107
|
Tests are written in the EmPy templating language, and produce XML output.
|
|
108
|
-
(See the examples provided in the `examples
|
|
108
|
+
(See the examples provided in the `examples` directory of the `pyibisami`
|
|
109
109
|
Python package.)
|
|
110
110
|
|
|
111
111
|
Test results should be viewed by loading the XML output file into a Web
|
|
112
112
|
browser. By default, the XML output file refers to the supplied XSLT file,
|
|
113
|
-
`test_results.xsl
|
|
113
|
+
`test_results.xsl`. It is possible that you may need to copy this file
|
|
114
114
|
from the pyibisami package directory to your local working directory, in
|
|
115
115
|
order to avoid file loading errors in your Web browser.
|
|
116
116
|
|
|
117
117
|
Options:
|
|
118
|
-
-t, --test_dir PATH Sets the name of the directory from which tests are
|
|
119
|
-
taken.
|
|
118
|
+
-t, --test_dir PATH Sets the name of the directory from which tests are taken.
|
|
120
119
|
-m, --model PATH Sets the AMI model DLL file name.
|
|
121
120
|
-p, --params TEXT List of lists of model configurations. Format:
|
|
122
121
|
<filename> or [(name, [(label, ({AMI params., in
|
|
@@ -131,4 +130,4 @@ Options:
|
|
|
131
130
|
results.
|
|
132
131
|
-v, --version TEXT Show program version info and exit.
|
|
133
132
|
-h, --help Show this message and exit.
|
|
134
|
-
|
|
133
|
+
```
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# PyIBIS-AMI
|
|
4
4
|
|
|
5
5
|
PyIBIS-AMI is a Python package of tools useful in the development and testing of IBIS-AMI models.
|
|
6
|
-
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides
|
|
6
|
+
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides three
|
|
7
7
|
command line applications.
|
|
8
8
|
|
|
9
9
|
It can be installed via: `pip install PyIBIS-AMI`.
|
|
@@ -12,9 +12,23 @@ It can be installed via: `pip install PyIBIS-AMI`.
|
|
|
12
12
|
|
|
13
13
|
## Command Line Tools
|
|
14
14
|
|
|
15
|
-
###
|
|
15
|
+
### AMI Config
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
ami_config -h
|
|
19
|
+
Usage: ami_config [OPTIONS] PY_FILE
|
|
20
|
+
|
|
21
|
+
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
22
|
+
|
|
23
|
+
py_file: name of model configuration file (*.py)
|
|
24
|
+
|
|
25
|
+
Options:
|
|
26
|
+
-h, --help Show this message and exit.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Run (New) IBIS-AMI Model Testing Notebook
|
|
16
30
|
|
|
17
|
-
```
|
|
31
|
+
```
|
|
18
32
|
$ run-notebook -h
|
|
19
33
|
Usage: run-notebook [OPTIONS] IBIS_FILE BIT_RATE
|
|
20
34
|
|
|
@@ -40,46 +54,31 @@ Options:
|
|
|
40
54
|
-h, --help Show this message and exit.
|
|
41
55
|
```
|
|
42
56
|
|
|
43
|
-
###
|
|
44
|
-
|
|
45
|
-
```shell
|
|
46
|
-
ami_config -h
|
|
47
|
-
Usage: ami_config [OPTIONS] PY_FILE
|
|
48
|
-
|
|
49
|
-
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
50
|
-
|
|
51
|
-
py_file: name of model configuration file (*.py)
|
|
57
|
+
### Run (Old Style) Tests
|
|
52
58
|
|
|
53
|
-
Options:
|
|
54
|
-
-h, --help Show this message and exit.
|
|
55
59
|
```
|
|
56
|
-
|
|
57
|
-
### Run Tests
|
|
58
|
-
|
|
59
|
-
```shell
|
|
60
60
|
run_tests -h
|
|
61
61
|
Usage: run_tests [OPTIONS] [TESTS]...
|
|
62
62
|
|
|
63
63
|
Run a series of tests on a AMI model DLL file.
|
|
64
64
|
|
|
65
65
|
If no tests are specified on the command line, run all tests found in
|
|
66
|
-
`test_dir
|
|
66
|
+
`test_dir`. (See `-t` option.)
|
|
67
67
|
|
|
68
68
|
usage: %prog [options] [test1 [test2 ...]]
|
|
69
69
|
|
|
70
70
|
Tests are written in the EmPy templating language, and produce XML output.
|
|
71
|
-
(See the examples provided in the `examples
|
|
71
|
+
(See the examples provided in the `examples` directory of the `pyibisami`
|
|
72
72
|
Python package.)
|
|
73
73
|
|
|
74
74
|
Test results should be viewed by loading the XML output file into a Web
|
|
75
75
|
browser. By default, the XML output file refers to the supplied XSLT file,
|
|
76
|
-
`test_results.xsl
|
|
76
|
+
`test_results.xsl`. It is possible that you may need to copy this file
|
|
77
77
|
from the pyibisami package directory to your local working directory, in
|
|
78
78
|
order to avoid file loading errors in your Web browser.
|
|
79
79
|
|
|
80
80
|
Options:
|
|
81
|
-
-t, --test_dir PATH Sets the name of the directory from which tests are
|
|
82
|
-
taken.
|
|
81
|
+
-t, --test_dir PATH Sets the name of the directory from which tests are taken.
|
|
83
82
|
-m, --model PATH Sets the AMI model DLL file name.
|
|
84
83
|
-p, --params TEXT List of lists of model configurations. Format:
|
|
85
84
|
<filename> or [(name, [(label, ({AMI params., in
|
|
@@ -94,4 +93,4 @@ Options:
|
|
|
94
93
|
results.
|
|
95
94
|
-v, --version TEXT Show program version info and exit.
|
|
96
95
|
-h, --help Show this message and exit.
|
|
97
|
-
|
|
96
|
+
```
|
|
@@ -5,12 +5,11 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyibis-ami"
|
|
7
7
|
description = "Facilitates working directly with IBIS-AMI DLLs from the Python command prompt."
|
|
8
|
-
version = "7.2.
|
|
8
|
+
version = "7.2.10"
|
|
9
9
|
authors = [ {name = "David Banas", email = "capn.freako@gmail.com"}
|
|
10
10
|
]
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
requires-python = ">=3.10,<3.13"
|
|
13
|
-
# license = "BSD-3-Clause"
|
|
14
13
|
dependencies = [
|
|
15
14
|
"chaco>=6.0.0",
|
|
16
15
|
"click>=8.1.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyibis-ami
|
|
3
|
-
Version: 7.2.
|
|
3
|
+
Version: 7.2.10
|
|
4
4
|
Summary: Facilitates working directly with IBIS-AMI DLLs from the Python command prompt.
|
|
5
5
|
Author-email: David Banas <capn.freako@gmail.com>
|
|
6
6
|
Project-URL: Documentation, https://pyibis-ami.readthedocs.io/en/latest/
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
# PyIBIS-AMI
|
|
41
41
|
|
|
42
42
|
PyIBIS-AMI is a Python package of tools useful in the development and testing of IBIS-AMI models.
|
|
43
|
-
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides
|
|
43
|
+
This library is used in [PyBERT](https://github.com/capn-freako/PyBERT) and also provides three
|
|
44
44
|
command line applications.
|
|
45
45
|
|
|
46
46
|
It can be installed via: `pip install PyIBIS-AMI`.
|
|
@@ -49,9 +49,23 @@ It can be installed via: `pip install PyIBIS-AMI`.
|
|
|
49
49
|
|
|
50
50
|
## Command Line Tools
|
|
51
51
|
|
|
52
|
-
###
|
|
52
|
+
### AMI Config
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
ami_config -h
|
|
56
|
+
Usage: ami_config [OPTIONS] PY_FILE
|
|
57
|
+
|
|
58
|
+
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
59
|
+
|
|
60
|
+
py_file: name of model configuration file (*.py)
|
|
61
|
+
|
|
62
|
+
Options:
|
|
63
|
+
-h, --help Show this message and exit.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Run (New) IBIS-AMI Model Testing Notebook
|
|
53
67
|
|
|
54
|
-
```
|
|
68
|
+
```
|
|
55
69
|
$ run-notebook -h
|
|
56
70
|
Usage: run-notebook [OPTIONS] IBIS_FILE BIT_RATE
|
|
57
71
|
|
|
@@ -77,46 +91,31 @@ Options:
|
|
|
77
91
|
-h, --help Show this message and exit.
|
|
78
92
|
```
|
|
79
93
|
|
|
80
|
-
###
|
|
81
|
-
|
|
82
|
-
```shell
|
|
83
|
-
ami_config -h
|
|
84
|
-
Usage: ami_config [OPTIONS] PY_FILE
|
|
85
|
-
|
|
86
|
-
Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
|
|
87
|
-
|
|
88
|
-
py_file: name of model configuration file (*.py)
|
|
94
|
+
### Run (Old Style) Tests
|
|
89
95
|
|
|
90
|
-
Options:
|
|
91
|
-
-h, --help Show this message and exit.
|
|
92
96
|
```
|
|
93
|
-
|
|
94
|
-
### Run Tests
|
|
95
|
-
|
|
96
|
-
```shell
|
|
97
97
|
run_tests -h
|
|
98
98
|
Usage: run_tests [OPTIONS] [TESTS]...
|
|
99
99
|
|
|
100
100
|
Run a series of tests on a AMI model DLL file.
|
|
101
101
|
|
|
102
102
|
If no tests are specified on the command line, run all tests found in
|
|
103
|
-
`test_dir
|
|
103
|
+
`test_dir`. (See `-t` option.)
|
|
104
104
|
|
|
105
105
|
usage: %prog [options] [test1 [test2 ...]]
|
|
106
106
|
|
|
107
107
|
Tests are written in the EmPy templating language, and produce XML output.
|
|
108
|
-
(See the examples provided in the `examples
|
|
108
|
+
(See the examples provided in the `examples` directory of the `pyibisami`
|
|
109
109
|
Python package.)
|
|
110
110
|
|
|
111
111
|
Test results should be viewed by loading the XML output file into a Web
|
|
112
112
|
browser. By default, the XML output file refers to the supplied XSLT file,
|
|
113
|
-
`test_results.xsl
|
|
113
|
+
`test_results.xsl`. It is possible that you may need to copy this file
|
|
114
114
|
from the pyibisami package directory to your local working directory, in
|
|
115
115
|
order to avoid file loading errors in your Web browser.
|
|
116
116
|
|
|
117
117
|
Options:
|
|
118
|
-
-t, --test_dir PATH Sets the name of the directory from which tests are
|
|
119
|
-
taken.
|
|
118
|
+
-t, --test_dir PATH Sets the name of the directory from which tests are taken.
|
|
120
119
|
-m, --model PATH Sets the AMI model DLL file name.
|
|
121
120
|
-p, --params TEXT List of lists of model configurations. Format:
|
|
122
121
|
<filename> or [(name, [(label, ({AMI params., in
|
|
@@ -131,4 +130,4 @@ Options:
|
|
|
131
130
|
results.
|
|
132
131
|
-v, --version TEXT Show program version info and exit.
|
|
133
132
|
-h, --help Show this message and exit.
|
|
134
|
-
|
|
133
|
+
```
|
|
@@ -148,14 +148,14 @@
|
|
|
148
148
|
"\n",
|
|
149
149
|
"# Changing these will only have an effect if you are running this notebook manually.\n",
|
|
150
150
|
"\n",
|
|
151
|
-
"ibis_dir = \"
|
|
152
|
-
"ibis_file = \"rx.ibs\"
|
|
153
|
-
"
|
|
154
|
-
"params = \"debug.run\" # Directory or file containing AMI parameter sweep definitions.\n",
|
|
151
|
+
"ibis_dir = \".\"\n",
|
|
152
|
+
"ibis_file = \"rx.ibs\" # IBIS-AMI model to test.\n",
|
|
153
|
+
"params = \"rx_test.run\" # Directory or file containing AMI parameter sweep definitions.\n",
|
|
155
154
|
"is_tx = False # True for Tx; False for Rx.\n",
|
|
156
155
|
"debug = False # Set to 'True' if you're having trouble and need some debugging info.\n",
|
|
157
156
|
"bit_rate = 53.125e9\n",
|
|
158
157
|
"nspui = 32 # vector samples per unit interval\n",
|
|
158
|
+
"no_nspui_swp = False # Skip samples per UI sweeping when true.\n",
|
|
159
159
|
"nbits = 20 # number of bits for AMI_Init() exercising\n",
|
|
160
160
|
"plot_t_max = 0.5e-9 # maximum x-axis extent for time domain plots (s)\n",
|
|
161
161
|
"f_max = 40e9 # maximum frequency (Hz)\n",
|
|
@@ -1177,7 +1177,8 @@
|
|
|
1177
1177
|
}
|
|
1178
1178
|
],
|
|
1179
1179
|
"source": [
|
|
1180
|
-
"
|
|
1180
|
+
"if not no_nspui_swp:\n",
|
|
1181
|
+
" samples_per_bit()\n"
|
|
1181
1182
|
]
|
|
1182
1183
|
},
|
|
1183
1184
|
{
|
|
@@ -1388,7 +1389,8 @@
|
|
|
1388
1389
|
}
|
|
1389
1390
|
],
|
|
1390
1391
|
"source": [
|
|
1391
|
-
"
|
|
1392
|
+
"if not no_nspui_swp:\n",
|
|
1393
|
+
" samples_per_bit()\n"
|
|
1392
1394
|
]
|
|
1393
1395
|
},
|
|
1394
1396
|
{
|
|
@@ -1449,7 +1451,7 @@
|
|
|
1449
1451
|
"name": "python",
|
|
1450
1452
|
"nbconvert_exporter": "python",
|
|
1451
1453
|
"pygments_lexer": "ipython3",
|
|
1452
|
-
"version": "3.
|
|
1454
|
+
"version": "3.11.13"
|
|
1453
1455
|
}
|
|
1454
1456
|
},
|
|
1455
1457
|
"nbformat": 4,
|
|
@@ -332,16 +332,26 @@ class AMIModel: # pylint: disable=too-many-instance-attributes
|
|
|
332
332
|
)
|
|
333
333
|
|
|
334
334
|
# Construct the AMI parameters string.
|
|
335
|
-
def sexpr(pname, pval):
|
|
336
|
-
"""
|
|
337
|
-
|
|
335
|
+
def sexpr(pname: str, pval: Any) -> str:
|
|
336
|
+
"""
|
|
337
|
+
Create an S-expression from a parameter name/value pair, calling
|
|
338
|
+
recursively as needed to elaborate sub-parameter dictionaries.
|
|
339
|
+
|
|
340
|
+
Args:
|
|
341
|
+
pname: Parameter name.
|
|
342
|
+
pval: Parameter value.
|
|
343
|
+
|
|
344
|
+
Returns:
|
|
345
|
+
A string containing the S-expression constructed.
|
|
346
|
+
"""
|
|
338
347
|
if isinstance(pval, str):
|
|
339
348
|
return f'({pname} "{pval}")'
|
|
340
349
|
if isinstance(pval, dict):
|
|
341
350
|
subs = []
|
|
342
351
|
for sname in pval:
|
|
343
352
|
subs.append(sexpr(sname, pval[sname]))
|
|
344
|
-
return sexpr(pname, " ".join(subs))
|
|
353
|
+
# return sexpr(pname, " ".join(subs))
|
|
354
|
+
return f"({pname} {' '.join(subs)})"
|
|
345
355
|
return f"({pname} {pval})"
|
|
346
356
|
|
|
347
357
|
ami_params_in = f"({init_object.ami_params['root_name']} "
|
|
@@ -15,7 +15,7 @@ import numpy as np
|
|
|
15
15
|
from numpy.typing import NDArray
|
|
16
16
|
from parsec import ParseError, generate, many, regex, string
|
|
17
17
|
from traits.api import Bool, Enum, HasTraits, Range, Trait, TraitType
|
|
18
|
-
from traitsui.api import Group,
|
|
18
|
+
from traitsui.api import Group, HGroup, Item, VGroup, View
|
|
19
19
|
from traitsui.menu import ModalButtons
|
|
20
20
|
|
|
21
21
|
from .model import AMIModelInitializer
|
|
@@ -594,18 +594,44 @@ def make_gui(params: ModelSpecificDict) -> tuple[Group, list[TraitType]]:
|
|
|
594
594
|
Notes:
|
|
595
595
|
1. The dictionary passed through ``params`` may have sub-dictionaries.
|
|
596
596
|
The window layout will reflect this nesting.
|
|
597
|
+
2. Some AMI files are written to encode the AMI parameter hierarchy
|
|
598
|
+
via some parameter naming scheme. This function makes a primitive attempt
|
|
599
|
+
to decode one particular example of this: ``<grp>_<param>``.
|
|
597
600
|
"""
|
|
598
601
|
|
|
599
602
|
gui_items: list[Item | Group] = []
|
|
600
603
|
new_traits: list[tuple[str, TraitType]] = []
|
|
604
|
+
|
|
605
|
+
# Place parameters with a common prefix in their names,
|
|
606
|
+
# but no pre-existing enclosing group, in a ``VGroup``.
|
|
607
|
+
# - Generate grouped parameter names and list of unique group names.
|
|
601
608
|
pnames = list(params.keys())
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
609
|
+
pnames_split = list(map(lambda n: n.split('_'), pnames))
|
|
610
|
+
group_names = list(map(lambda xs: xs[0], pnames_split))
|
|
611
|
+
grouped_pnames = list(zip(pnames, group_names))
|
|
612
|
+
# The following doesn't preserve the parameter ordering of the AMI file!
|
|
613
|
+
# for group_name in set(group_names): # Iterate over unique group names.
|
|
614
|
+
unique_group_names = []
|
|
615
|
+
for group_name in group_names:
|
|
616
|
+
if group_name not in unique_group_names:
|
|
617
|
+
unique_group_names.append(group_name)
|
|
618
|
+
# - Process all parameters, trapping those from a non-explicit group for special processing.
|
|
619
|
+
for group_name in unique_group_names:
|
|
620
|
+
pnames_in_group = [pname for pname, grp_name in grouped_pnames if grp_name == group_name]
|
|
621
|
+
if len(pnames_in_group) > 1:
|
|
622
|
+
_gui_items: list[Item | Group] = []
|
|
623
|
+
for pname in pnames_in_group:
|
|
624
|
+
gui_item, new_trait = make_gui_items(pname, params[pname])
|
|
625
|
+
_gui_items.extend(gui_item)
|
|
626
|
+
new_traits.extend(new_trait)
|
|
627
|
+
gui_items.append(VGroup(*_gui_items, label=group_name, show_border=True))
|
|
628
|
+
else:
|
|
629
|
+
pname = pnames_in_group[0]
|
|
630
|
+
gui_item, new_trait = make_gui_items(pname, params[pname])
|
|
631
|
+
gui_items.extend(gui_item)
|
|
632
|
+
new_traits.extend(new_trait)
|
|
607
633
|
|
|
608
|
-
return (
|
|
634
|
+
return (HGroup(*gui_items), new_traits)
|
|
609
635
|
|
|
610
636
|
|
|
611
637
|
def make_gui_items( # pylint: disable=too-many-locals,too-many-branches
|
|
@@ -209,7 +209,8 @@ class Model(HasTraits): # pylint: disable=too-many-instance-attributes
|
|
|
209
209
|
self._slew = (ramp["rising"][0] + ramp["falling"][0]) / 2e9 # (V/ns)
|
|
210
210
|
elif mtype == "input":
|
|
211
211
|
if "gnd_clamp" not in subDict and "power_clamp" not in subDict:
|
|
212
|
-
raise LookupError("Missing clamp curves!")
|
|
212
|
+
# raise LookupError("Missing clamp curves!")
|
|
213
|
+
pass
|
|
213
214
|
|
|
214
215
|
plotdata = ArrayPlotData()
|
|
215
216
|
|
|
@@ -220,6 +221,8 @@ class Model(HasTraits): # pylint: disable=too-many-instance-attributes
|
|
|
220
221
|
plotdata.set_data("gc_ityps", gc_ityps)
|
|
221
222
|
plotdata.set_data("gc_imins", gc_imins)
|
|
222
223
|
plotdata.set_data("gc_imaxs", gc_imaxs)
|
|
224
|
+
else:
|
|
225
|
+
gc_z = 2e6
|
|
223
226
|
|
|
224
227
|
if "power_clamp" in subDict:
|
|
225
228
|
pc_vs, pc_ityps, pc_imins, pc_imaxs, pc_zs = proc_iv(subDict["power_clamp"])
|
|
@@ -232,6 +235,8 @@ class Model(HasTraits): # pylint: disable=too-many-instance-attributes
|
|
|
232
235
|
plotdata.set_data("pc_ityps", pc_ityps)
|
|
233
236
|
plotdata.set_data("pc_imins", pc_imins)
|
|
234
237
|
plotdata.set_data("pc_imaxs", pc_imaxs)
|
|
238
|
+
else:
|
|
239
|
+
pc_z = 2e6
|
|
235
240
|
|
|
236
241
|
plot_iv = Plot(plotdata) # , padding_left=75)
|
|
237
242
|
# The 'line_style' trait of a LinePlot instance must be 'dash' or 'dot dash' or 'dot' or 'long dash' or 'solid'.
|
|
@@ -91,8 +91,11 @@ def word(p):
|
|
|
91
91
|
@generate("remainder of line")
|
|
92
92
|
def rest_line():
|
|
93
93
|
"Parse remainder of line."
|
|
94
|
-
chars = yield many(none_of("\n\r")) << ignore # So that we still function as a lexeme.
|
|
95
|
-
|
|
94
|
+
chars = yield many(none_of("[\n\r")) << ignore # So that we still function as a lexeme.
|
|
95
|
+
rslt = "".join(chars)
|
|
96
|
+
if DEBUG:
|
|
97
|
+
print(f"rest_line(): {rslt}", flush=True)
|
|
98
|
+
return rslt
|
|
96
99
|
|
|
97
100
|
|
|
98
101
|
skip_line = lexeme(rest_line).result("(Skipped.)")
|
|
@@ -348,6 +351,17 @@ def model():
|
|
|
348
351
|
rlc = lexeme(string("R_pin") | string("L_pin") | string("C_pin"))
|
|
349
352
|
|
|
350
353
|
|
|
354
|
+
@generate("[Manufacturer]")
|
|
355
|
+
def manufacturer():
|
|
356
|
+
"Parse manufacturer."
|
|
357
|
+
rslt = yield rest_line
|
|
358
|
+
if not rslt:
|
|
359
|
+
rslt = "(n/a)"
|
|
360
|
+
if DEBUG:
|
|
361
|
+
print(f"Manufacturer: {rslt}", flush=True)
|
|
362
|
+
return rslt
|
|
363
|
+
|
|
364
|
+
|
|
351
365
|
@generate("[Package]")
|
|
352
366
|
def package():
|
|
353
367
|
"Parse package RLC values."
|
|
@@ -392,7 +406,7 @@ def pins():
|
|
|
392
406
|
|
|
393
407
|
|
|
394
408
|
Component_keywords = {
|
|
395
|
-
"manufacturer":
|
|
409
|
+
"manufacturer": manufacturer,
|
|
396
410
|
"package": package,
|
|
397
411
|
"pin": pins,
|
|
398
412
|
"diff_pin": skip_keyword,
|
|
@@ -495,6 +509,9 @@ def parse_ibis_file(ibis_file_contents_str, debug=False):
|
|
|
495
509
|
Dictionary containing keyword definitions (empty upon failure).
|
|
496
510
|
"""
|
|
497
511
|
|
|
512
|
+
global DEBUG # pylint: disable=W0603
|
|
513
|
+
DEBUG = debug
|
|
514
|
+
|
|
498
515
|
try:
|
|
499
516
|
nodes = ibis_file.parse_strict(ibis_file_contents_str) # Parse must consume the entire file.
|
|
500
517
|
if debug:
|
|
@@ -107,6 +107,7 @@ def run_notebook(
|
|
|
107
107
|
@click.option("--debug", is_flag=True, help="Provide extra debugging information.")
|
|
108
108
|
@click.option("--is_tx", is_flag=True, help="Flags a Tx model.")
|
|
109
109
|
@click.option("--nspui", default=32, show_default=True, help="Number of samples per unit interval.")
|
|
110
|
+
@click.option("--no-nspui-swp", is_flag=True, help="Skip samples per UI sweep.")
|
|
110
111
|
@click.option("--nbits", default=200, show_default=True, help="Number of bits to run in simulations.")
|
|
111
112
|
@click.option("--plot-t-max", default=0.5e-9, show_default=True, help="Maximum time value for plots (s).")
|
|
112
113
|
@click.option("--f-max", default=40e9, show_default=True, help="Maximum frequency for transfer functions (Hz).")
|
|
@@ -117,18 +118,20 @@ def run_notebook(
|
|
|
117
118
|
@click.argument("bit_rate", type=float)
|
|
118
119
|
@click.version_option(package_name="PyIBIS-AMI")
|
|
119
120
|
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
120
|
-
def main(notebook, out_dir, params, ibis_file, bit_rate,
|
|
121
|
+
def main(notebook, out_dir, params, ibis_file, bit_rate,
|
|
122
|
+
debug, is_tx, nspui, no_nspui_swp, nbits,
|
|
121
123
|
plot_t_max, f_max, f_step, fig_x, fig_y):
|
|
122
124
|
"Run a *Jupyter* notebook on an IBIS-AMI model file."
|
|
123
125
|
run_notebook(
|
|
124
126
|
Path(ibis_file).resolve(), Path(notebook).resolve(),
|
|
125
|
-
out_dir=out_dir,
|
|
127
|
+
out_dir=Path(out_dir).resolve(),
|
|
126
128
|
notebook_params={
|
|
127
129
|
'ibis_dir': ".",
|
|
128
130
|
'ibis_file': ibis_file,
|
|
129
131
|
'debug': debug,
|
|
130
132
|
'is_tx': is_tx,
|
|
131
133
|
'nspui': nspui,
|
|
134
|
+
'no_nspui_swp': no_nspui_swp,
|
|
132
135
|
'nbits': nbits,
|
|
133
136
|
'plot_t_max': plot_t_max,
|
|
134
137
|
'f_max': f_max,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|