pyVHDLModel 0.29.2__tar.gz → 0.30.0__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.
Files changed (35) hide show
  1. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/PKG-INFO +37 -24
  2. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Association.py +1 -1
  3. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Base.py +1 -1
  4. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Common.py +1 -1
  5. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Concurrent.py +1 -1
  6. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Declaration.py +1 -1
  7. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/DesignUnit.py +1 -1
  8. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Exception.py +1 -1
  9. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Expression.py +1 -1
  10. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/IEEE.py +163 -32
  11. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Instantiation.py +1 -1
  12. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Interface.py +1 -1
  13. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Name.py +1 -1
  14. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Namespace.py +1 -1
  15. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Object.py +1 -1
  16. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/PSLModel.py +1 -1
  17. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Predefined.py +1 -1
  18. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Regions.py +1 -1
  19. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/STD.py +1 -1
  20. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Sequential.py +1 -1
  21. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Subprogram.py +1 -1
  22. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Symbol.py +1 -1
  23. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/Type.py +1 -1
  24. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/__init__.py +24 -7
  25. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel.egg-info/PKG-INFO +37 -24
  26. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel.egg-info/requires.txt +22 -22
  27. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyproject.toml +5 -2
  28. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/setup.py +1 -1
  29. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/LICENSE.md +0 -0
  30. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/README.md +0 -0
  31. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel/py.typed +0 -0
  32. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel.egg-info/SOURCES.txt +0 -0
  33. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel.egg-info/dependency_links.txt +0 -0
  34. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/pyVHDLModel.egg-info/top_level.txt +0 -0
  35. {pyvhdlmodel-0.29.2 → pyvhdlmodel-0.30.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: pyVHDLModel
3
- Version: 0.29.2
3
+ Version: 0.30.0
4
4
  Summary: An abstract VHDL language model.
5
5
  Home-page: https://GitHub.com/VHDL/pyVHDLModel
6
6
  Author: Patrick Lehmann
@@ -27,45 +27,58 @@ Classifier: Development Status :: 4 - Beta
27
27
  Requires-Python: >=3.9
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE.md
30
- Requires-Dist: pyTooling~=8.0
30
+ Requires-Dist: pyTooling~=8.1
31
31
  Provides-Extra: doc
32
+ Requires-Dist: autoapi>=2.0.1; extra == "doc"
33
+ Requires-Dist: sphinx_rtd_theme~=3.0; extra == "doc"
34
+ Requires-Dist: docutils~=0.21; extra == "doc"
35
+ Requires-Dist: sphinx_design~=0.6.1; extra == "doc"
32
36
  Requires-Dist: docutils_stubs~=0.0.22; extra == "doc"
33
37
  Requires-Dist: sphinxcontrib-mermaid~=1.0; extra == "doc"
34
- Requires-Dist: sphinx_autodoc_typehints~=2.5; extra == "doc"
35
38
  Requires-Dist: sphinx_reports~=0.7; extra == "doc"
36
- Requires-Dist: pyTooling~=8.0; extra == "doc"
37
- Requires-Dist: autoapi>=2.0.1; extra == "doc"
38
- Requires-Dist: sphinx_design~=0.6.1; extra == "doc"
39
- Requires-Dist: sphinx_rtd_theme~=3.0.0; extra == "doc"
40
39
  Requires-Dist: sphinx-copybutton>=0.5.2; extra == "doc"
40
+ Requires-Dist: sphinx_autodoc_typehints~=3.0; extra == "doc"
41
41
  Requires-Dist: sphinx~=8.1; extra == "doc"
42
- Requires-Dist: docutils~=0.21; extra == "doc"
42
+ Requires-Dist: pyTooling~=8.1; extra == "doc"
43
43
  Provides-Extra: test
44
- Requires-Dist: mypy~=1.13; extra == "test"
44
+ Requires-Dist: mypy~=1.15; extra == "test"
45
45
  Requires-Dist: pytest~=8.3; extra == "test"
46
- Requires-Dist: lxml~=5.3; extra == "test"
47
- Requires-Dist: pyTooling~=8.0; extra == "test"
48
46
  Requires-Dist: pytest-cov~=6.0; extra == "test"
49
- Requires-Dist: Coverage~=7.6; extra == "test"
50
47
  Requires-Dist: typing_extensions~=4.12; extra == "test"
48
+ Requires-Dist: lxml~=5.3; extra == "test"
49
+ Requires-Dist: pyTooling~=8.1; extra == "test"
50
+ Requires-Dist: Coverage~=7.6; extra == "test"
51
51
  Provides-Extra: all
52
+ Requires-Dist: autoapi>=2.0.1; extra == "all"
53
+ Requires-Dist: sphinx_rtd_theme~=3.0; extra == "all"
54
+ Requires-Dist: docutils~=0.21; extra == "all"
55
+ Requires-Dist: sphinx_design~=0.6.1; extra == "all"
56
+ Requires-Dist: mypy~=1.15; extra == "all"
57
+ Requires-Dist: pytest~=8.3; extra == "all"
52
58
  Requires-Dist: docutils_stubs~=0.0.22; extra == "all"
53
- Requires-Dist: mypy~=1.13; extra == "all"
54
59
  Requires-Dist: sphinxcontrib-mermaid~=1.0; extra == "all"
55
- Requires-Dist: pytest~=8.3; extra == "all"
60
+ Requires-Dist: sphinx_reports~=0.7; extra == "all"
56
61
  Requires-Dist: sphinx-copybutton>=0.5.2; extra == "all"
62
+ Requires-Dist: sphinx_autodoc_typehints~=3.0; extra == "all"
63
+ Requires-Dist: pytest-cov~=6.0; extra == "all"
57
64
  Requires-Dist: typing_extensions~=4.12; extra == "all"
65
+ Requires-Dist: sphinx~=8.1; extra == "all"
58
66
  Requires-Dist: lxml~=5.3; extra == "all"
59
- Requires-Dist: sphinx_reports~=0.7; extra == "all"
60
- Requires-Dist: pyTooling~=8.0; extra == "all"
61
- Requires-Dist: autoapi>=2.0.1; extra == "all"
62
- Requires-Dist: sphinx_design~=0.6.1; extra == "all"
63
- Requires-Dist: sphinx_rtd_theme~=3.0.0; extra == "all"
64
- Requires-Dist: pytest-cov~=6.0; extra == "all"
67
+ Requires-Dist: pyTooling~=8.1; extra == "all"
65
68
  Requires-Dist: Coverage~=7.6; extra == "all"
66
- Requires-Dist: sphinx_autodoc_typehints~=2.5; extra == "all"
67
- Requires-Dist: sphinx~=8.1; extra == "all"
68
- Requires-Dist: docutils~=0.21; extra == "all"
69
+ Dynamic: author
70
+ Dynamic: author-email
71
+ Dynamic: classifier
72
+ Dynamic: description
73
+ Dynamic: description-content-type
74
+ Dynamic: home-page
75
+ Dynamic: keywords
76
+ Dynamic: license
77
+ Dynamic: project-url
78
+ Dynamic: provides-extra
79
+ Dynamic: requires-dist
80
+ Dynamic: requires-python
81
+ Dynamic: summary
69
82
 
70
83
  <p align="center">
71
84
  <a title="vhdl.github.io/pyVHDLModel" href="https://vhdl.github.io/pyVHDLModel"><img height="80px" src="doc/_static/logo.svg"/></a>
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -30,8 +30,13 @@
30
30
  # ==================================================================================================================== #
31
31
  #
32
32
  """This module contains library and package declarations for VHDL library ``IEEE``."""
33
- from pyTooling.Decorators import export
34
33
 
34
+ from typing import Optional as Nullable
35
+
36
+ from pyTooling.Decorators import export, readonly
37
+
38
+ from pyVHDLModel import IEEEFlavor
39
+ from pyVHDLModel.Exception import VHDLModelException
35
40
  from pyVHDLModel.Expression import EnumerationLiteral
36
41
  from pyVHDLModel.Name import SimpleName
37
42
  from pyVHDLModel.Predefined import PredefinedLibrary, PredefinedPackage, PredefinedPackageBody
@@ -55,7 +60,6 @@ class Ieee(PredefinedLibrary):
55
60
 
56
61
  * :class:`~pyVHDLModel.IEEE.Std_Logic_1164`
57
62
  * :class:`~pyVHDLModel.IEEE.Std_Logic_TextIO`
58
- * :class:`~pyVHDLModel.IEEE.Std_Logic_Misc`
59
63
 
60
64
  * Numeric
61
65
 
@@ -72,18 +76,57 @@ class Ieee(PredefinedLibrary):
72
76
  * :class:`~pyVHDLModel.IEEE.Float_Generic_Pkg`
73
77
  * :class:`~pyVHDLModel.IEEE.Float_Pkg`
74
78
 
79
+ * Mentor Graphics packages
80
+
81
+ * :class:`~pyVHDLModel.IEEE.Std_logic_arith`
82
+
83
+ * Synopsys packages
84
+
85
+ * :class:`~pyVHDLModel.IEEE.Std_logic_arith`
86
+ * :class:`~pyVHDLModel.IEEE.Std_logic_misc`
87
+ * :class:`~pyVHDLModel.IEEE.Std_logic_signed`
88
+ * :class:`~pyVHDLModel.IEEE.Std_logic_textio`
89
+ * :class:`~pyVHDLModel.IEEE.Std_logic_unsigned`
90
+
75
91
  .. seealso::
76
92
 
77
93
  Other predefined libraries:
78
94
  * Library :class:`~pyVHDLModel.STD.Std`
79
95
  """
80
96
 
81
- def __init__(self) -> None:
97
+ _flavor: IEEEFlavor
98
+
99
+ def __init__(self, flavor: Nullable[IEEEFlavor] = None) -> None:
82
100
  super().__init__(PACKAGES)
83
101
 
102
+ self._flavor = IEEEFlavor.IEEE
103
+ if flavor is None or flavor is IEEEFlavor.IEEE:
104
+ pass
105
+ elif flavor is IEEEFlavor.MentorGraphics:
106
+ self.LoadMentorGraphicsPackages()
107
+ elif flavor is IEEEFlavor.Synopsys:
108
+ self.LoadSynopsysPackages()
109
+ else:
110
+ raise VHDLModelException(f"Unknown IEEE library flavor '{flavor}'.")
111
+ self._flavor = flavor
112
+
113
+ @readonly
114
+ def Flavor(self) -> IEEEFlavor:
115
+ return self._flavor
116
+
117
+ def LoadMentorGraphicsPackages(self) -> None:
118
+ if self._flavor is not IEEEFlavor.IEEE:
119
+ raise VHDLModelException(f"IEEE library flavor is '{self._flavor}' and can't be changed to '{IEEEFlavor.MentorGraphics}'.")
120
+
121
+ self._flavor = IEEEFlavor.MentorGraphics
122
+ self.AddPackages(MENTOR_GRAPHICS_PACKAGES)
123
+
84
124
  def LoadSynopsysPackages(self) -> None:
85
- self.AddPackages(PACKAGES_SYNOPSYS)
125
+ if self._flavor is not IEEEFlavor.IEEE:
126
+ raise VHDLModelException(f"IEEE library flavor is '{self._flavor}' and can't be changed to '{IEEEFlavor.MentorGraphics}'.")
86
127
 
128
+ self._flavor = IEEEFlavor.Synopsys
129
+ self.AddPackages(SYNOPSYS_PACKAGES)
87
130
 
88
131
 
89
132
  @export
@@ -125,7 +168,7 @@ class Math_Complex_Body(PredefinedPackageBody):
125
168
 
126
169
 
127
170
  @export
128
- class Std_logic_1164(PredefinedPackage):
171
+ class Std_Logic_1164(PredefinedPackage):
129
172
  """
130
173
  Predefined package ``ieee.std_logic_1164``.
131
174
 
@@ -170,14 +213,14 @@ class Std_logic_1164(PredefinedPackage):
170
213
 
171
214
 
172
215
  @export
173
- class Std_logic_1164_Body(PredefinedPackageBody):
216
+ class Std_Logic_1164_Body(PredefinedPackageBody):
174
217
  """
175
218
  Predefined package body of package ``ieee.std_logic_1164``.
176
219
  """
177
220
 
178
221
 
179
222
  @export
180
- class std_logic_textio(PredefinedPackage):
223
+ class Std_Logic_TextIO(PredefinedPackage):
181
224
  """
182
225
  Predefined package ``ieee.std_logic_textio``.
183
226
  """
@@ -190,26 +233,6 @@ class std_logic_textio(PredefinedPackage):
190
233
  self._AddPackageClause(("IEEE.std_logic_1164.all", ))
191
234
 
192
235
 
193
- @export
194
- class Std_logic_misc(PredefinedPackage):
195
- """
196
- Predefined package ``ieee.std_logic_misc``.
197
- """
198
-
199
- def __init__(self) -> None:
200
- super().__init__()
201
-
202
- self._AddLibraryClause(("IEEE", ))
203
- self._AddPackageClause(("IEEE.std_logic_1164.all", ))
204
-
205
-
206
- @export
207
- class Std_logic_misc_Body(PredefinedPackageBody):
208
- """
209
- Predefined package body of package ``ieee.std_logic_misc``.
210
- """
211
-
212
-
213
236
  @export
214
237
  class Numeric_Bit(PredefinedPackage):
215
238
  """
@@ -404,8 +427,8 @@ class Float_Pkg(PredefinedPackage):
404
427
  PACKAGES = (
405
428
  (Math_Real, Math_Real_Body),
406
429
  (Math_Complex, Math_Complex_Body),
407
- (Std_logic_1164, Std_logic_1164_Body),
408
- (std_logic_textio, None),
430
+ (Std_Logic_1164, Std_Logic_1164_Body),
431
+ (Std_Logic_TextIO, None),
409
432
  (Numeric_Bit, Numeric_Bit_Body),
410
433
  (Numeric_Bit_Unsigned, Numeric_Bit_Unsigned_Body),
411
434
  (Numeric_Std, Numeric_Std_Body),
@@ -417,6 +440,114 @@ PACKAGES = (
417
440
  (Float_Pkg, None),
418
441
  )
419
442
 
420
- PACKAGES_SYNOPSYS = (
421
- (Std_logic_misc, Std_logic_misc_Body),
443
+
444
+ @export
445
+ class Std_Logic_Arith(PredefinedPackage):
446
+ """
447
+ Predefined Mentor Graphics package ``ieee.std_logic_arith``.
448
+ """
449
+
450
+ def __init__(self) -> None:
451
+ super().__init__()
452
+
453
+ self._AddLibraryClause(("IEEE", ))
454
+
455
+ # used inside of package
456
+ # self._AddPackageClause(("IEEE.std_logic_1164.all", ))
457
+
458
+
459
+ @export
460
+ class Std_Logic_Arith_Body(PredefinedPackageBody):
461
+ """
462
+ Predefined package body of Mentor Graphics package ``ieee.std_logic_arith``.
463
+ """
464
+
465
+
466
+ MENTOR_GRAPHICS_PACKAGES = (
467
+ (Std_Logic_Arith, Std_Logic_Arith_Body),
468
+ )
469
+
470
+
471
+ @export
472
+ class Std_Logic_Arith(PredefinedPackage):
473
+ """
474
+ Predefined Synopsys package ``ieee.std_logic_arith``.
475
+ """
476
+
477
+ def __init__(self) -> None:
478
+ super().__init__()
479
+
480
+ self._AddLibraryClause(("IEEE", ))
481
+ self._AddPackageClause(("IEEE.std_logic_1164.all", ))
482
+
483
+
484
+ @export
485
+ class Std_Logic_Misc(PredefinedPackage):
486
+ """
487
+ Predefined Synopsys package ``ieee.std_logic_misc``.
488
+ """
489
+
490
+ def __init__(self) -> None:
491
+ super().__init__()
492
+
493
+ self._AddLibraryClause(("IEEE", ))
494
+ self._AddPackageClause(("IEEE.std_logic_1164.all", ))
495
+
496
+
497
+ @export
498
+ class Std_Logic_Misc_Body(PredefinedPackageBody):
499
+ """
500
+ Predefined package body of Synopsys package ``ieee.std_logic_misc``.
501
+ """
502
+
503
+
504
+ @export
505
+ class Std_Logic_Signed(PredefinedPackage):
506
+ """
507
+ Predefined Synopsys package ``ieee.std_logic_signed``.
508
+ """
509
+
510
+ def __init__(self) -> None:
511
+ super().__init__()
512
+
513
+ self._AddLibraryClause(("IEEE", ))
514
+ self._AddPackageClause(("IEEE.std_logic_1164.all", ))
515
+ self._AddPackageClause(("IEEE.std_logic_arith.all", ))
516
+
517
+
518
+ @export
519
+ class Std_Logic_TextIO(PredefinedPackage):
520
+ """
521
+ Predefined Synopsys package ``ieee.std_logic_textio``.
522
+ """
523
+
524
+ def __init__(self) -> None:
525
+ super().__init__()
526
+
527
+ self._AddPackageClause(("STD.textio.all", ))
528
+
529
+ self._AddLibraryClause(("IEEE", ))
530
+ self._AddPackageClause(("IEEE.std_logic_1164.all", ))
531
+
532
+
533
+ @export
534
+ class Std_Logic_Unsigned(PredefinedPackage):
535
+ """
536
+ Predefined Synopsys package ``ieee.std_logic_unsigned``.
537
+ """
538
+
539
+ def __init__(self) -> None:
540
+ super().__init__()
541
+
542
+ self._AddLibraryClause(("IEEE", ))
543
+ self._AddPackageClause(("IEEE.std_logic_1164.all", ))
544
+ self._AddPackageClause(("IEEE.std_logic_arith.all", ))
545
+
546
+
547
+ SYNOPSYS_PACKAGES = (
548
+ (Std_Logic_Arith, None),
549
+ (Std_Logic_Misc, Std_Logic_Misc_Body),
550
+ (Std_Logic_Signed, None),
551
+ (Std_Logic_TextIO, None),
552
+ (Std_Logic_Unsigned, None),
422
553
  )
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
@@ -40,15 +40,15 @@ on such a model, while supporting multiple frontends.
40
40
 
41
41
  .. admonition:: Copyright Information
42
42
 
43
- :copyright: Copyright 2017-2024 Patrick Lehmann - Bötzingen, Germany
43
+ :copyright: Copyright 2017-2025 Patrick Lehmann - Bötzingen, Germany
44
44
  :copyright: Copyright 2016-2017 Patrick Lehmann - Dresden, Germany
45
45
  :license: Apache License, Version 2.0
46
46
  """
47
47
  __author__ = "Patrick Lehmann"
48
48
  __email__ = "Paebbels@gmail.com"
49
- __copyright__ = "2016-2024, Patrick Lehmann"
49
+ __copyright__ = "2016-2025, Patrick Lehmann"
50
50
  __license__ = "Apache License, Version 2.0"
51
- __version__ = "0.29.2"
51
+ __version__ = "0.30.0"
52
52
 
53
53
 
54
54
  from enum import unique, Enum, Flag, auto
@@ -294,6 +294,13 @@ class VHDLVersion(Enum):
294
294
  return str(self.value)
295
295
 
296
296
 
297
+ @export
298
+ class IEEEFlavor(Enum):
299
+ IEEE = 0
300
+ Synopsys = 1
301
+ MentorGraphics = 2
302
+
303
+
297
304
  @export
298
305
  @unique
299
306
  class ObjectClass(Enum):
@@ -574,19 +581,20 @@ class Design(ModelEntity):
574
581
 
575
582
  return library
576
583
 
577
- def LoadIEEELibrary(self) -> 'Library':
584
+ def LoadIEEELibrary(self, flavor: IEEEFlavor = IEEEFlavor.IEEE) -> 'Library':
578
585
  """
579
586
  Load the predefined VHDL library ``ieee`` into the design.
580
587
 
581
588
  This will create a virtual source code file ``ieee.vhdl`` and register VHDL design units of library ``ieee`` to that file.
582
589
 
583
- :returns: The library object of library ``ieee``.
590
+ :param flavor: Select the IEEE library flavor: IEEE, Synopsys, MentorGraphics.
591
+ :returns: The library object of library ``ieee``.
584
592
  """
585
593
  from pyVHDLModel.IEEE import Ieee
586
594
 
587
595
  doc = Document(Path("ieee.vhdl"), parent=self)
588
596
 
589
- library = Ieee()
597
+ library = Ieee(flavor)
590
598
  for designUnit in library.IterateDesignUnits():
591
599
  doc._AddDesignUnit(designUnit)
592
600
 
@@ -1365,6 +1373,9 @@ class Design(ModelEntity):
1365
1373
  # A library clause can have multiple comma-separated references
1366
1374
  for librarySymbol in libraryReference.Symbols:
1367
1375
  libraryIdentifier = librarySymbol.Name.NormalizedIdentifier
1376
+ if libraryIdentifier == "work":
1377
+ continue
1378
+
1368
1379
  try:
1369
1380
  library = self._libraries[libraryIdentifier]
1370
1381
  except KeyError:
@@ -1525,6 +1536,12 @@ class Design(ModelEntity):
1525
1536
  # QUESTION: Add link in dependency graph as dashed line from component to entity?
1526
1537
  # Currently, component has no _dependencyVertex field
1527
1538
 
1539
+ # FIXME: also link components in architectures (and nested structures like generate statements and block statements
1540
+ # for architecture in self.IterateDesignUnits(DesignUnitKind.Architecture):
1541
+ # library = architecture._parent
1542
+ # for component in architecture._components.values():
1543
+ # pass
1544
+
1528
1545
  def LinkInstantiations(self) -> None:
1529
1546
  for architecture in self.IterateDesignUnits(DesignUnitKind.Architecture): # type: Architecture
1530
1547
  for instance in architecture.IterateInstantiations():
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: pyVHDLModel
3
- Version: 0.29.2
3
+ Version: 0.30.0
4
4
  Summary: An abstract VHDL language model.
5
5
  Home-page: https://GitHub.com/VHDL/pyVHDLModel
6
6
  Author: Patrick Lehmann
@@ -27,45 +27,58 @@ Classifier: Development Status :: 4 - Beta
27
27
  Requires-Python: >=3.9
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE.md
30
- Requires-Dist: pyTooling~=8.0
30
+ Requires-Dist: pyTooling~=8.1
31
31
  Provides-Extra: doc
32
+ Requires-Dist: autoapi>=2.0.1; extra == "doc"
33
+ Requires-Dist: sphinx_rtd_theme~=3.0; extra == "doc"
34
+ Requires-Dist: docutils~=0.21; extra == "doc"
35
+ Requires-Dist: sphinx_design~=0.6.1; extra == "doc"
32
36
  Requires-Dist: docutils_stubs~=0.0.22; extra == "doc"
33
37
  Requires-Dist: sphinxcontrib-mermaid~=1.0; extra == "doc"
34
- Requires-Dist: sphinx_autodoc_typehints~=2.5; extra == "doc"
35
38
  Requires-Dist: sphinx_reports~=0.7; extra == "doc"
36
- Requires-Dist: pyTooling~=8.0; extra == "doc"
37
- Requires-Dist: autoapi>=2.0.1; extra == "doc"
38
- Requires-Dist: sphinx_design~=0.6.1; extra == "doc"
39
- Requires-Dist: sphinx_rtd_theme~=3.0.0; extra == "doc"
40
39
  Requires-Dist: sphinx-copybutton>=0.5.2; extra == "doc"
40
+ Requires-Dist: sphinx_autodoc_typehints~=3.0; extra == "doc"
41
41
  Requires-Dist: sphinx~=8.1; extra == "doc"
42
- Requires-Dist: docutils~=0.21; extra == "doc"
42
+ Requires-Dist: pyTooling~=8.1; extra == "doc"
43
43
  Provides-Extra: test
44
- Requires-Dist: mypy~=1.13; extra == "test"
44
+ Requires-Dist: mypy~=1.15; extra == "test"
45
45
  Requires-Dist: pytest~=8.3; extra == "test"
46
- Requires-Dist: lxml~=5.3; extra == "test"
47
- Requires-Dist: pyTooling~=8.0; extra == "test"
48
46
  Requires-Dist: pytest-cov~=6.0; extra == "test"
49
- Requires-Dist: Coverage~=7.6; extra == "test"
50
47
  Requires-Dist: typing_extensions~=4.12; extra == "test"
48
+ Requires-Dist: lxml~=5.3; extra == "test"
49
+ Requires-Dist: pyTooling~=8.1; extra == "test"
50
+ Requires-Dist: Coverage~=7.6; extra == "test"
51
51
  Provides-Extra: all
52
+ Requires-Dist: autoapi>=2.0.1; extra == "all"
53
+ Requires-Dist: sphinx_rtd_theme~=3.0; extra == "all"
54
+ Requires-Dist: docutils~=0.21; extra == "all"
55
+ Requires-Dist: sphinx_design~=0.6.1; extra == "all"
56
+ Requires-Dist: mypy~=1.15; extra == "all"
57
+ Requires-Dist: pytest~=8.3; extra == "all"
52
58
  Requires-Dist: docutils_stubs~=0.0.22; extra == "all"
53
- Requires-Dist: mypy~=1.13; extra == "all"
54
59
  Requires-Dist: sphinxcontrib-mermaid~=1.0; extra == "all"
55
- Requires-Dist: pytest~=8.3; extra == "all"
60
+ Requires-Dist: sphinx_reports~=0.7; extra == "all"
56
61
  Requires-Dist: sphinx-copybutton>=0.5.2; extra == "all"
62
+ Requires-Dist: sphinx_autodoc_typehints~=3.0; extra == "all"
63
+ Requires-Dist: pytest-cov~=6.0; extra == "all"
57
64
  Requires-Dist: typing_extensions~=4.12; extra == "all"
65
+ Requires-Dist: sphinx~=8.1; extra == "all"
58
66
  Requires-Dist: lxml~=5.3; extra == "all"
59
- Requires-Dist: sphinx_reports~=0.7; extra == "all"
60
- Requires-Dist: pyTooling~=8.0; extra == "all"
61
- Requires-Dist: autoapi>=2.0.1; extra == "all"
62
- Requires-Dist: sphinx_design~=0.6.1; extra == "all"
63
- Requires-Dist: sphinx_rtd_theme~=3.0.0; extra == "all"
64
- Requires-Dist: pytest-cov~=6.0; extra == "all"
67
+ Requires-Dist: pyTooling~=8.1; extra == "all"
65
68
  Requires-Dist: Coverage~=7.6; extra == "all"
66
- Requires-Dist: sphinx_autodoc_typehints~=2.5; extra == "all"
67
- Requires-Dist: sphinx~=8.1; extra == "all"
68
- Requires-Dist: docutils~=0.21; extra == "all"
69
+ Dynamic: author
70
+ Dynamic: author-email
71
+ Dynamic: classifier
72
+ Dynamic: description
73
+ Dynamic: description-content-type
74
+ Dynamic: home-page
75
+ Dynamic: keywords
76
+ Dynamic: license
77
+ Dynamic: project-url
78
+ Dynamic: provides-extra
79
+ Dynamic: requires-dist
80
+ Dynamic: requires-python
81
+ Dynamic: summary
69
82
 
70
83
  <p align="center">
71
84
  <a title="vhdl.github.io/pyVHDLModel" href="https://vhdl.github.io/pyVHDLModel"><img height="80px" src="doc/_static/logo.svg"/></a>
@@ -1,42 +1,42 @@
1
- pyTooling~=8.0
1
+ pyTooling~=8.1
2
2
 
3
3
  [all]
4
+ autoapi>=2.0.1
5
+ sphinx_rtd_theme~=3.0
6
+ docutils~=0.21
7
+ sphinx_design~=0.6.1
8
+ mypy~=1.15
9
+ pytest~=8.3
4
10
  docutils_stubs~=0.0.22
5
- mypy~=1.13
6
11
  sphinxcontrib-mermaid~=1.0
7
- pytest~=8.3
12
+ sphinx_reports~=0.7
8
13
  sphinx-copybutton>=0.5.2
14
+ sphinx_autodoc_typehints~=3.0
15
+ pytest-cov~=6.0
9
16
  typing_extensions~=4.12
17
+ sphinx~=8.1
10
18
  lxml~=5.3
11
- sphinx_reports~=0.7
12
- pyTooling~=8.0
13
- autoapi>=2.0.1
14
- sphinx_design~=0.6.1
15
- sphinx_rtd_theme~=3.0.0
16
- pytest-cov~=6.0
19
+ pyTooling~=8.1
17
20
  Coverage~=7.6
18
- sphinx_autodoc_typehints~=2.5
19
- sphinx~=8.1
20
- docutils~=0.21
21
21
 
22
22
  [doc]
23
+ autoapi>=2.0.1
24
+ sphinx_rtd_theme~=3.0
25
+ docutils~=0.21
26
+ sphinx_design~=0.6.1
23
27
  docutils_stubs~=0.0.22
24
28
  sphinxcontrib-mermaid~=1.0
25
- sphinx_autodoc_typehints~=2.5
26
29
  sphinx_reports~=0.7
27
- pyTooling~=8.0
28
- autoapi>=2.0.1
29
- sphinx_design~=0.6.1
30
- sphinx_rtd_theme~=3.0.0
31
30
  sphinx-copybutton>=0.5.2
31
+ sphinx_autodoc_typehints~=3.0
32
32
  sphinx~=8.1
33
- docutils~=0.21
33
+ pyTooling~=8.1
34
34
 
35
35
  [test]
36
- mypy~=1.13
36
+ mypy~=1.15
37
37
  pytest~=8.3
38
- lxml~=5.3
39
- pyTooling~=8.0
40
38
  pytest-cov~=6.0
41
- Coverage~=7.6
42
39
  typing_extensions~=4.12
40
+ lxml~=5.3
41
+ pyTooling~=8.1
42
+ Coverage~=7.6
@@ -1,8 +1,8 @@
1
1
  [build-system]
2
2
  requires = [
3
- "setuptools ~= 75.3",
3
+ "setuptools ~= 75.8",
4
4
  "wheel ~= 0.45",
5
- "pyTooling ~= 8.0"
5
+ "pyTooling ~= 8.1"
6
6
  ]
7
7
  build-backend = "setuptools.build_meta"
8
8
 
@@ -20,6 +20,9 @@ show_error_codes = true
20
20
  namespace_packages = true
21
21
  html_report = "report/typing"
22
22
 
23
+ [tool.pytest]
24
+ junit_xml = "report/unit/TestReportSummary.xml"
25
+
23
26
  [tool.pytest.ini_options]
24
27
  addopts = "--tb=native"
25
28
  # Don't set 'python_classes = *' otherwise, pytest doesn't search for classes
@@ -11,7 +11,7 @@
11
11
  # #
12
12
  # License: #
13
13
  # ==================================================================================================================== #
14
- # Copyright 2017-2024 Patrick Lehmann - Boetzingen, Germany #
14
+ # Copyright 2017-2025 Patrick Lehmann - Boetzingen, Germany #
15
15
  # Copyright 2016-2017 Patrick Lehmann - Dresden, Germany #
16
16
  # #
17
17
  # Licensed under the Apache License, Version 2.0 (the "License"); #
File without changes
File without changes
File without changes