SimplHDL 0.7.2__tar.gz → 0.8.2__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 (225) hide show
  1. {simplhdl-0.7.2 → simplhdl-0.8.2}/PKG-INFO +1 -1
  2. {simplhdl-0.7.2 → simplhdl-0.8.2}/pyproject.toml +33 -2
  3. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/SimplHDL.egg-info/PKG-INFO +1 -1
  4. simplhdl-0.8.2/src/SimplHDL.egg-info/SOURCES.txt +141 -0
  5. simplhdl-0.8.2/src/SimplHDL.egg-info/entry_points.txt +21 -0
  6. simplhdl-0.8.2/src/SimplHDL.egg-info/top_level.txt +13 -0
  7. simplhdl-0.8.2/src/simplhdl/__init__.py +5 -0
  8. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/__main__.py +8 -8
  9. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/cli}/info.py +6 -6
  10. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/cli}/run.py +3 -4
  11. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/cocotb.py +13 -7
  12. simplhdl-0.8.2/src/simplhdl/plugin/__init__.py +5 -0
  13. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/plugin}/flow.py +6 -11
  14. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/plugin}/generator.py +6 -11
  15. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl/plugin}/implementationflow.py +2 -2
  16. simplhdl-0.8.2/src/simplhdl/plugin/loader.py +81 -0
  17. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/plugin}/parser.py +11 -16
  18. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl/plugin}/simulationflow.py +23 -13
  19. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/project.py +1 -1
  20. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl/pyedaa}/repo.py +1 -1
  21. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/simplhdl.py +3 -3
  22. {simplhdl-0.7.2/src/simplhdl/generators → simplhdl-0.8.2/src/simplhdl_chisel}/chisel.py +4 -21
  23. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_encrypt}/encrypt/encryptflow.py +12 -10
  24. {simplhdl-0.7.2/src/simplhdl/parsers → simplhdl-0.8.2/src/simplhdl_fusesocparser}/fusesocparser.py +6 -8
  25. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/flake8/flake8flow.py +7 -6
  26. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/lint/lintflow.py +7 -7
  27. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/verible/veribleflow.py +12 -7
  28. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/vsg/vsgflow.py +6 -6
  29. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_modelsim}/modelsim/modelsimflow.py +10 -10
  30. {simplhdl-0.7.2/src/simplhdl/parsers → simplhdl-0.8.2/src/simplhdl_parser}/simplhdlparser.py +26 -13
  31. {simplhdl-0.7.2/src/simplhdl/generators → simplhdl-0.8.2/src/simplhdl_peakrdl}/systemrdl.py +37 -21
  32. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_quartus}/quartusdse/quartusdseflow.py +6 -8
  33. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_quartus}/quartusexport/quartusexportflow.py +15 -17
  34. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_quartus}/quartusflow.py +6 -8
  35. {simplhdl-0.7.2/src/simplhdl/generators → simplhdl-0.8.2/src/simplhdl_quartus}/spd.py +24 -20
  36. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_questasim}/questasim/questasimflow.py +13 -14
  37. simplhdl-0.8.2/src/simplhdl_questasim/resources/templates/questasim/__init__.py +0 -0
  38. simplhdl-0.8.2/src/simplhdl_rivierapro/__init__.py +0 -0
  39. simplhdl-0.8.2/src/simplhdl_rivierapro/resources/__init__.py +0 -0
  40. simplhdl-0.8.2/src/simplhdl_rivierapro/resources/templates/__init__.py +0 -0
  41. simplhdl-0.8.2/src/simplhdl_rivierapro/resources/templates/rivierapro/__init__.py +0 -0
  42. simplhdl-0.8.2/src/simplhdl_rivierapro/rivierapro/__init__.py +0 -0
  43. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_rivierapro}/rivierapro/rivieraproflow.py +10 -11
  44. simplhdl-0.8.2/src/simplhdl_vcs/__init__.py +0 -0
  45. simplhdl-0.8.2/src/simplhdl_vcs/resources/__init__.py +0 -0
  46. simplhdl-0.8.2/src/simplhdl_vcs/resources/templates/__init__.py +0 -0
  47. simplhdl-0.8.2/src/simplhdl_vcs/resources/templates/vcs/__init__.py +0 -0
  48. simplhdl-0.8.2/src/simplhdl_vcs/vcs/__init__.py +0 -0
  49. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_vcs}/vcs/vcsflow.py +10 -12
  50. simplhdl-0.8.2/src/simplhdl_vivado/__init__.py +0 -0
  51. {simplhdl-0.7.2/src/simplhdl/generators → simplhdl-0.8.2/src/simplhdl_vivado}/ipxact.py +21 -16
  52. simplhdl-0.8.2/src/simplhdl_vivado/resources/__init__.py +0 -0
  53. simplhdl-0.8.2/src/simplhdl_vivado/resources/templates/__init__.py +0 -0
  54. simplhdl-0.8.2/src/simplhdl_vivado/resources/templates/vivado/__init__.py +0 -0
  55. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/vivado/project.tcl.j2 +1 -1
  56. simplhdl-0.8.2/src/simplhdl_vivado/resources/templates/xsim/__init__.py +0 -0
  57. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_vivado}/vivadoflow.py +20 -10
  58. simplhdl-0.8.2/src/simplhdl_vivado/xsim/__init__.py +0 -0
  59. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_vivado}/xsim/xsimflow.py +9 -10
  60. simplhdl-0.7.2/.github/workflows/publish.yml +0 -39
  61. simplhdl-0.7.2/.gitignore +0 -95
  62. simplhdl-0.7.2/.readthedocs.yaml +0 -28
  63. simplhdl-0.7.2/docs/_static/simplhdl_dark.png +0 -0
  64. simplhdl-0.7.2/docs/_static/simplhdl_light.png +0 -0
  65. simplhdl-0.7.2/docs/_static/simplhdl_light_1.png +0 -0
  66. simplhdl-0.7.2/docs/conf.py +0 -65
  67. simplhdl-0.7.2/docs/drawing.svg +0 -305
  68. simplhdl-0.7.2/docs/flows/ghdl.rst +0 -2
  69. simplhdl-0.7.2/docs/flows/icarus.rst +0 -2
  70. simplhdl-0.7.2/docs/flows/quartus.rst +0 -2
  71. simplhdl-0.7.2/docs/flows/questasim.rst +0 -2
  72. simplhdl-0.7.2/docs/flows/vcs.rst +0 -2
  73. simplhdl-0.7.2/docs/flows/vivado.rst +0 -48
  74. simplhdl-0.7.2/docs/flows/xsim.rst +0 -2
  75. simplhdl-0.7.2/docs/flows.rst +0 -16
  76. simplhdl-0.7.2/docs/index.rst +0 -32
  77. simplhdl-0.7.2/docs/intel-ips.md +0 -22
  78. simplhdl-0.7.2/docs/introduction.rst +0 -4
  79. simplhdl-0.7.2/docs/plugins.rst +0 -55
  80. simplhdl-0.7.2/docs/requirements.txt +0 -33
  81. simplhdl-0.7.2/examples/hdl/adder/adder.yml +0 -3
  82. simplhdl-0.7.2/examples/hdl/adder/hdl/adder.sv +0 -19
  83. simplhdl-0.7.2/examples/hdl/adder/sim/testbench.sv +0 -10
  84. simplhdl-0.7.2/examples/hdl/adder/sim/testbench.yml +0 -14
  85. simplhdl-0.7.2/examples/hdl/adder/syn/build.yml +0 -18
  86. simplhdl-0.7.2/examples/hdl/adder/syn/placement.xdc +0 -23
  87. simplhdl-0.7.2/examples/hdl/adder/syn/timing.xdc +0 -1
  88. simplhdl-0.7.2/examples/hdl/adder/syn/top.sv +0 -21
  89. simplhdl-0.7.2/examples/hdl/alu/alu.yml +0 -6
  90. simplhdl-0.7.2/examples/hdl/alu/hdl/add.sv +0 -11
  91. simplhdl-0.7.2/examples/hdl/alu/hdl/alu.sv +0 -116
  92. simplhdl-0.7.2/examples/hdl/alu/hdl/mul.sv +0 -11
  93. simplhdl-0.7.2/examples/hdl/alu/hdl/sub.sv +0 -11
  94. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -7
  95. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -26
  96. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -11
  97. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -40
  98. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -31
  99. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -43
  100. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -7
  101. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -3
  102. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -29
  103. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -8
  104. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -9
  105. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/test/env.py +0 -14
  106. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -35
  107. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/test/test.py +0 -52
  108. simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/testbench.py +0 -8
  109. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -40
  110. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -22
  111. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -9
  112. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -51
  113. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -4
  114. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -135
  115. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -27
  116. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -22
  117. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -37
  118. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -13
  119. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -13
  120. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -22
  121. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -26
  122. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -77
  123. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -52
  124. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -9
  125. simplhdl-0.7.2/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -9
  126. simplhdl-0.7.2/examples/hdl/alu/syn/build.yml +0 -12
  127. simplhdl-0.7.2/examples/hdl/alu/syn/placement.xdc +0 -34
  128. simplhdl-0.7.2/examples/hdl/alu/syn/timing.xdc +0 -4
  129. simplhdl-0.7.2/examples/hdl/hello/build.sbt +0 -11
  130. simplhdl-0.7.2/examples/hdl/hello/hello.yml +0 -3
  131. simplhdl-0.7.2/examples/hdl/hello/src/main/scala/Hello.scala +0 -33
  132. simplhdl-0.7.2/examples/hdl/hello/syn/build.yml +0 -8
  133. simplhdl-0.7.2/examples/plugins/simple_parser/setup.py +0 -18
  134. simplhdl-0.7.2/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -4
  135. simplhdl-0.7.2/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -41
  136. simplhdl-0.7.2/src/SimplHDL.egg-info/SOURCES.txt +0 -200
  137. simplhdl-0.7.2/src/SimplHDL.egg-info/entry_points.txt +0 -2
  138. simplhdl-0.7.2/src/SimplHDL.egg-info/top_level.txt +0 -1
  139. simplhdl-0.7.2/src/simplhdl/__init__.py +0 -1
  140. simplhdl-0.7.2/src/simplhdl/plugins.py +0 -72
  141. simplhdl-0.7.2/tox.ini +0 -62
  142. {simplhdl-0.7.2 → simplhdl-0.8.2}/LICENSE +0 -0
  143. {simplhdl-0.7.2 → simplhdl-0.8.2}/README.md +0 -0
  144. {simplhdl-0.7.2 → simplhdl-0.8.2}/setup.cfg +0 -0
  145. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
  146. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/SimplHDL.egg-info/requires.txt +0 -0
  147. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/__init__.py +0 -0
  148. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/attributes.py +0 -0
  149. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/design.py +0 -0
  150. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/fileset.py +0 -0
  151. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/filetypes.py +0 -0
  152. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/target.py +0 -0
  153. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/pyedaa/vhdllibrary.py +0 -0
  154. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/tools.py +0 -0
  155. {simplhdl-0.7.2 → simplhdl-0.8.2}/src/simplhdl/utils.py +0 -0
  156. {simplhdl-0.7.2/examples/hdl/alu/sim/pyuvm/test → simplhdl-0.8.2/src/simplhdl_encrypt}/__init__.py +0 -0
  157. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_encrypt/encrypt}/__init__.py +0 -0
  158. {simplhdl-0.7.2/src/simplhdl/flows/encrypt → simplhdl-0.8.2/src/simplhdl_fusesocparser}/__init__.py +0 -0
  159. {simplhdl-0.7.2/src/simplhdl/flows/modelsim → simplhdl-0.8.2/src/simplhdl_lint}/__init__.py +0 -0
  160. {simplhdl-0.7.2/src/simplhdl/flows/quartusdse → simplhdl-0.8.2/src/simplhdl_lint/resources}/__init__.py +0 -0
  161. {simplhdl-0.7.2/src/simplhdl/flows/quartusexport → simplhdl-0.8.2/src/simplhdl_lint/resources/templates}/__init__.py +0 -0
  162. {simplhdl-0.7.2/src/simplhdl/flows/questasim → simplhdl-0.8.2/src/simplhdl_lint/resources/templates/flake8}/__init__.py +0 -0
  163. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_lint}/resources/templates/flake8/setup.cfg.j2 +0 -0
  164. {simplhdl-0.7.2/src/simplhdl/flows/rivierapro → simplhdl-0.8.2/src/simplhdl_lint/resources/templates/verible}/__init__.py +0 -0
  165. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_lint}/resources/templates/verible/rules.cfg.j2 +0 -0
  166. {simplhdl-0.7.2/src/simplhdl/flows/vcs → simplhdl-0.8.2/src/simplhdl_lint/resources/templates/vsg}/__init__.py +0 -0
  167. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_lint}/resources/templates/vsg/files.json.j2 +0 -0
  168. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_lint}/resources/templates/vsg/rules.yml.j2 +0 -0
  169. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/verible/__init__.py +0 -0
  170. {simplhdl-0.7.2/src/simplhdl/flows → simplhdl-0.8.2/src/simplhdl_lint}/vsg/__init__.py +0 -0
  171. {simplhdl-0.7.2/src/simplhdl/flows/xsim → simplhdl-0.8.2/src/simplhdl_modelsim}/__init__.py +0 -0
  172. {simplhdl-0.7.2/src/simplhdl/generators → simplhdl-0.8.2/src/simplhdl_modelsim/modelsim}/__init__.py +0 -0
  173. {simplhdl-0.7.2/src/simplhdl/parsers → simplhdl-0.8.2/src/simplhdl_modelsim/resources}/__init__.py +0 -0
  174. {simplhdl-0.7.2/src/simplhdl/resources → simplhdl-0.8.2/src/simplhdl_modelsim/resources/templates}/__init__.py +0 -0
  175. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/Makefile.j2 +0 -0
  176. {simplhdl-0.7.2/src/simplhdl/resources/templates → simplhdl-0.8.2/src/simplhdl_modelsim/resources/templates/modelsim}/__init__.py +0 -0
  177. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/cocotb.mk.j2 +0 -0
  178. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/dependencies.mk.j2 +0 -0
  179. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/files.j2 +0 -0
  180. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/fileset.j2 +0 -0
  181. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/modelsim.tcl.j2 +0 -0
  182. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/project.mk.j2 +0 -0
  183. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_modelsim}/resources/templates/modelsim/run.do.j2 +0 -0
  184. {simplhdl-0.7.2/src/simplhdl/resources/templates/flake8 → simplhdl-0.8.2/src/simplhdl_parser}/__init__.py +0 -0
  185. {simplhdl-0.7.2/src/simplhdl/resources/templates/modelsim → simplhdl-0.8.2/src/simplhdl_peakrdl}/__init__.py +0 -0
  186. {simplhdl-0.7.2/src/simplhdl/resources/templates/quartus → simplhdl-0.8.2/src/simplhdl_quartus/quartusdse}/__init__.py +0 -0
  187. {simplhdl-0.7.2/src/simplhdl/resources/templates/questasim → simplhdl-0.8.2/src/simplhdl_quartus/quartusexport}/__init__.py +0 -0
  188. {simplhdl-0.7.2/src/simplhdl/resources/templates/rivierapro → simplhdl-0.8.2/src/simplhdl_quartus/resources}/__init__.py +0 -0
  189. {simplhdl-0.7.2/src/simplhdl/resources/templates/vcs → simplhdl-0.8.2/src/simplhdl_quartus/resources/templates}/__init__.py +0 -0
  190. {simplhdl-0.7.2/src/simplhdl/resources/templates/verible → simplhdl-0.8.2/src/simplhdl_quartus/resources/templates/quartus}/__init__.py +0 -0
  191. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_quartus}/resources/templates/quartus/project.tcl.j2 +0 -0
  192. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_quartus}/resources/templates/quartus/run.tcl.j2 +0 -0
  193. {simplhdl-0.7.2/src/simplhdl/resources/templates/vivado → simplhdl-0.8.2/src/simplhdl_questasim/questasim}/__init__.py +0 -0
  194. {simplhdl-0.7.2/src/simplhdl/resources/templates/vsg → simplhdl-0.8.2/src/simplhdl_questasim/resources}/__init__.py +0 -0
  195. {simplhdl-0.7.2/src/simplhdl/resources/templates/xsim → simplhdl-0.8.2/src/simplhdl_questasim/resources/templates}/__init__.py +0 -0
  196. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_questasim}/resources/templates/questasim/modelsim.tcl.j2 +0 -0
  197. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_questasim}/resources/templates/questasim/project.qrun.j2 +0 -0
  198. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_questasim}/resources/templates/questasim/visualizer.tcl.j2 +0 -0
  199. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_questasim}/resources/templates/questasim/vsim-run.do.j2 +0 -0
  200. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/Makefile.j2 +0 -0
  201. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
  202. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
  203. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/files.j2 +0 -0
  204. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/fileset.j2 +0 -0
  205. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_rivierapro}/resources/templates/rivierapro/project.mk.j2 +0 -0
  206. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/Makefile.j2 +0 -0
  207. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/cocotb.mk.j2 +0 -0
  208. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/dependencies.mk.j2 +0 -0
  209. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/files.j2 +0 -0
  210. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/fileset.j2 +0 -0
  211. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/pli.tab.j2 +0 -0
  212. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/project.mk.j2 +0 -0
  213. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/simv-run.do.j2 +0 -0
  214. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
  215. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vcs}/resources/templates/vcs/vcs.parameters.j2 +0 -0
  216. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/vivado/launch_run.sh.j2 +0 -0
  217. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/vivado/run.tcl.j2 +0 -0
  218. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/vivado/steps.tcl.j2 +0 -0
  219. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/Makefile.j2 +0 -0
  220. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/cocotb.mk.j2 +0 -0
  221. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/dependencies.mk.j2 +0 -0
  222. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/files.j2 +0 -0
  223. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/fileset.j2 +0 -0
  224. {simplhdl-0.7.2/src/simplhdl → simplhdl-0.8.2/src/simplhdl_vivado}/resources/templates/xsim/project.mk.j2 +0 -0
  225. {simplhdl-0.7.2 → simplhdl-0.8.2}/tests/test_dummy.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimplHDL
3
- Version: 0.7.2
3
+ Version: 0.8.2
4
4
  Summary: A framework for simulating and implementing HDL designs
5
5
  Author-email: Rasmus Grøndahl Olsen <simplhdl@gmail.com>
6
6
  Maintainer-email: Rasmus Grøndahl Olsen <simplhdl@gmail.com>
@@ -1,12 +1,23 @@
1
1
  [build-system]
2
2
  requires = [
3
- "setuptools>=60",
4
- "setuptools-scm>=8.0"]
3
+ "setuptools>=64.0",
4
+ "wheel"]
5
5
  build-backend = "setuptools.build_meta"
6
6
 
7
7
  [tool.setuptools.dynamic]
8
8
  version = {attr = "simplhdl.__version__"}
9
9
 
10
+ [tool.setuptools.package-data]
11
+ "*" = ["*.j2"]
12
+
13
+ [tool.flake8]
14
+ max-line-length = 120
15
+ max_complexity = 10
16
+ per-file-ignores = [
17
+ # Ignore the F401 (unused import) error in all __init__.py files
18
+ "__init__.py:F401",
19
+ ]
20
+
10
21
  [project]
11
22
  name = "SimplHDL"
12
23
  description = "A framework for simulating and implementing HDL designs"
@@ -62,3 +73,23 @@ Homepage = "https://github.com/SimplHDL"
62
73
  Documentation = "https://simplhdl.readthedocs.io/en/latest/"
63
74
  Repository = "https://github.com/SimplHDL/simplhdl.git"
64
75
  Issues = "https://github.com/SimplHDL/simplhdl/issues"
76
+
77
+
78
+ [project.entry-points."simplhdl.plugins"]
79
+ chisel_generator = "simplhdl_chisel.chisel:ChiselGenerator"
80
+ encrypt_flow = "simplhdl_encrypt.encrypt.encryptflow:EncryptFlow"
81
+ fusersoc_parser = "simplhdl_fusesocparser.fusesocparser:FuseSocParser"
82
+ lint_flow = "simplhdl_lint.lint.lintflow:LintFlow"
83
+ modelsim = "simplhdl_modelsim.modelsim.modelsimflow:ModelSimFlow"
84
+ peakrdl_generator = "simplhdl_peakrdl.systemrdl:PeakRdlGenerator"
85
+ quartus = "simplhdl_quartus.quartusflow:QuartusFlow"
86
+ quartus_generator = "simplhdl_quartus.spd:QuartusGenerator"
87
+ quartus-dse = "simplhdl_quartus.quartusdse.quartusdseflow:QuartusDseFlow"
88
+ quartus-export = "simplhdl_quartus.quartusexport.quartusexportflow:QuartusExportFlow"
89
+ questasim = "simplhdl_questasim.questasim.questasimflow:QuestaSimFlow"
90
+ rivierapro = "simplhdl_rivierapro.rivierapro.rivieraproflow:RivieraProFlow"
91
+ simplhdl_parser = "simplhdl_parser.simplhdlparser:SimplHdlParser"
92
+ vcs = "simplhdl_vcs.vcs.vcsflow:VcsFlow"
93
+ vivado = "simplhdl_vivado.vivadoflow:VivadoFlow"
94
+ vivado_generator = "simplhdl_vivado.ipxact:VivadoGenerator"
95
+ xsim = "simplhdl_vivado.xsim.xsimflow:XsimFlow"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimplHDL
3
- Version: 0.7.2
3
+ Version: 0.8.2
4
4
  Summary: A framework for simulating and implementing HDL designs
5
5
  Author-email: Rasmus Grøndahl Olsen <simplhdl@gmail.com>
6
6
  Maintainer-email: Rasmus Grøndahl Olsen <simplhdl@gmail.com>
@@ -0,0 +1,141 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/SimplHDL.egg-info/PKG-INFO
5
+ src/SimplHDL.egg-info/SOURCES.txt
6
+ src/SimplHDL.egg-info/dependency_links.txt
7
+ src/SimplHDL.egg-info/entry_points.txt
8
+ src/SimplHDL.egg-info/requires.txt
9
+ src/SimplHDL.egg-info/top_level.txt
10
+ src/simplhdl/__init__.py
11
+ src/simplhdl/__main__.py
12
+ src/simplhdl/cocotb.py
13
+ src/simplhdl/simplhdl.py
14
+ src/simplhdl/tools.py
15
+ src/simplhdl/utils.py
16
+ src/simplhdl/cli/info.py
17
+ src/simplhdl/cli/run.py
18
+ src/simplhdl/plugin/__init__.py
19
+ src/simplhdl/plugin/flow.py
20
+ src/simplhdl/plugin/generator.py
21
+ src/simplhdl/plugin/implementationflow.py
22
+ src/simplhdl/plugin/loader.py
23
+ src/simplhdl/plugin/parser.py
24
+ src/simplhdl/plugin/simulationflow.py
25
+ src/simplhdl/pyedaa/__init__.py
26
+ src/simplhdl/pyedaa/attributes.py
27
+ src/simplhdl/pyedaa/design.py
28
+ src/simplhdl/pyedaa/fileset.py
29
+ src/simplhdl/pyedaa/filetypes.py
30
+ src/simplhdl/pyedaa/project.py
31
+ src/simplhdl/pyedaa/repo.py
32
+ src/simplhdl/pyedaa/target.py
33
+ src/simplhdl/pyedaa/vhdllibrary.py
34
+ src/simplhdl_chisel/chisel.py
35
+ src/simplhdl_encrypt/__init__.py
36
+ src/simplhdl_encrypt/encrypt/__init__.py
37
+ src/simplhdl_encrypt/encrypt/encryptflow.py
38
+ src/simplhdl_fusesocparser/__init__.py
39
+ src/simplhdl_fusesocparser/fusesocparser.py
40
+ src/simplhdl_lint/__init__.py
41
+ src/simplhdl_lint/flake8/flake8flow.py
42
+ src/simplhdl_lint/lint/lintflow.py
43
+ src/simplhdl_lint/resources/__init__.py
44
+ src/simplhdl_lint/resources/templates/__init__.py
45
+ src/simplhdl_lint/resources/templates/flake8/__init__.py
46
+ src/simplhdl_lint/resources/templates/flake8/setup.cfg.j2
47
+ src/simplhdl_lint/resources/templates/verible/__init__.py
48
+ src/simplhdl_lint/resources/templates/verible/rules.cfg.j2
49
+ src/simplhdl_lint/resources/templates/vsg/__init__.py
50
+ src/simplhdl_lint/resources/templates/vsg/files.json.j2
51
+ src/simplhdl_lint/resources/templates/vsg/rules.yml.j2
52
+ src/simplhdl_lint/verible/__init__.py
53
+ src/simplhdl_lint/verible/veribleflow.py
54
+ src/simplhdl_lint/vsg/__init__.py
55
+ src/simplhdl_lint/vsg/vsgflow.py
56
+ src/simplhdl_modelsim/__init__.py
57
+ src/simplhdl_modelsim/modelsim/__init__.py
58
+ src/simplhdl_modelsim/modelsim/modelsimflow.py
59
+ src/simplhdl_modelsim/resources/__init__.py
60
+ src/simplhdl_modelsim/resources/templates/__init__.py
61
+ src/simplhdl_modelsim/resources/templates/modelsim/Makefile.j2
62
+ src/simplhdl_modelsim/resources/templates/modelsim/__init__.py
63
+ src/simplhdl_modelsim/resources/templates/modelsim/cocotb.mk.j2
64
+ src/simplhdl_modelsim/resources/templates/modelsim/dependencies.mk.j2
65
+ src/simplhdl_modelsim/resources/templates/modelsim/files.j2
66
+ src/simplhdl_modelsim/resources/templates/modelsim/fileset.j2
67
+ src/simplhdl_modelsim/resources/templates/modelsim/modelsim.tcl.j2
68
+ src/simplhdl_modelsim/resources/templates/modelsim/project.mk.j2
69
+ src/simplhdl_modelsim/resources/templates/modelsim/run.do.j2
70
+ src/simplhdl_parser/__init__.py
71
+ src/simplhdl_parser/simplhdlparser.py
72
+ src/simplhdl_peakrdl/__init__.py
73
+ src/simplhdl_peakrdl/systemrdl.py
74
+ src/simplhdl_quartus/quartusflow.py
75
+ src/simplhdl_quartus/spd.py
76
+ src/simplhdl_quartus/quartusdse/__init__.py
77
+ src/simplhdl_quartus/quartusdse/quartusdseflow.py
78
+ src/simplhdl_quartus/quartusexport/__init__.py
79
+ src/simplhdl_quartus/quartusexport/quartusexportflow.py
80
+ src/simplhdl_quartus/resources/__init__.py
81
+ src/simplhdl_quartus/resources/templates/__init__.py
82
+ src/simplhdl_quartus/resources/templates/quartus/__init__.py
83
+ src/simplhdl_quartus/resources/templates/quartus/project.tcl.j2
84
+ src/simplhdl_quartus/resources/templates/quartus/run.tcl.j2
85
+ src/simplhdl_questasim/questasim/__init__.py
86
+ src/simplhdl_questasim/questasim/questasimflow.py
87
+ src/simplhdl_questasim/resources/__init__.py
88
+ src/simplhdl_questasim/resources/templates/__init__.py
89
+ src/simplhdl_questasim/resources/templates/questasim/__init__.py
90
+ src/simplhdl_questasim/resources/templates/questasim/modelsim.tcl.j2
91
+ src/simplhdl_questasim/resources/templates/questasim/project.qrun.j2
92
+ src/simplhdl_questasim/resources/templates/questasim/visualizer.tcl.j2
93
+ src/simplhdl_questasim/resources/templates/questasim/vsim-run.do.j2
94
+ src/simplhdl_rivierapro/__init__.py
95
+ src/simplhdl_rivierapro/resources/__init__.py
96
+ src/simplhdl_rivierapro/resources/templates/__init__.py
97
+ src/simplhdl_rivierapro/resources/templates/rivierapro/Makefile.j2
98
+ src/simplhdl_rivierapro/resources/templates/rivierapro/__init__.py
99
+ src/simplhdl_rivierapro/resources/templates/rivierapro/cocotb.mk.j2
100
+ src/simplhdl_rivierapro/resources/templates/rivierapro/dependencies.mk.j2
101
+ src/simplhdl_rivierapro/resources/templates/rivierapro/files.j2
102
+ src/simplhdl_rivierapro/resources/templates/rivierapro/fileset.j2
103
+ src/simplhdl_rivierapro/resources/templates/rivierapro/project.mk.j2
104
+ src/simplhdl_rivierapro/rivierapro/__init__.py
105
+ src/simplhdl_rivierapro/rivierapro/rivieraproflow.py
106
+ src/simplhdl_vcs/__init__.py
107
+ src/simplhdl_vcs/resources/__init__.py
108
+ src/simplhdl_vcs/resources/templates/__init__.py
109
+ src/simplhdl_vcs/resources/templates/vcs/Makefile.j2
110
+ src/simplhdl_vcs/resources/templates/vcs/__init__.py
111
+ src/simplhdl_vcs/resources/templates/vcs/cocotb.mk.j2
112
+ src/simplhdl_vcs/resources/templates/vcs/dependencies.mk.j2
113
+ src/simplhdl_vcs/resources/templates/vcs/files.j2
114
+ src/simplhdl_vcs/resources/templates/vcs/fileset.j2
115
+ src/simplhdl_vcs/resources/templates/vcs/pli.tab.j2
116
+ src/simplhdl_vcs/resources/templates/vcs/project.mk.j2
117
+ src/simplhdl_vcs/resources/templates/vcs/simv-run.do.j2
118
+ src/simplhdl_vcs/resources/templates/vcs/synopsys_sim.setup.j2
119
+ src/simplhdl_vcs/resources/templates/vcs/vcs.parameters.j2
120
+ src/simplhdl_vcs/vcs/__init__.py
121
+ src/simplhdl_vcs/vcs/vcsflow.py
122
+ src/simplhdl_vivado/__init__.py
123
+ src/simplhdl_vivado/ipxact.py
124
+ src/simplhdl_vivado/vivadoflow.py
125
+ src/simplhdl_vivado/resources/__init__.py
126
+ src/simplhdl_vivado/resources/templates/__init__.py
127
+ src/simplhdl_vivado/resources/templates/vivado/__init__.py
128
+ src/simplhdl_vivado/resources/templates/vivado/launch_run.sh.j2
129
+ src/simplhdl_vivado/resources/templates/vivado/project.tcl.j2
130
+ src/simplhdl_vivado/resources/templates/vivado/run.tcl.j2
131
+ src/simplhdl_vivado/resources/templates/vivado/steps.tcl.j2
132
+ src/simplhdl_vivado/resources/templates/xsim/Makefile.j2
133
+ src/simplhdl_vivado/resources/templates/xsim/__init__.py
134
+ src/simplhdl_vivado/resources/templates/xsim/cocotb.mk.j2
135
+ src/simplhdl_vivado/resources/templates/xsim/dependencies.mk.j2
136
+ src/simplhdl_vivado/resources/templates/xsim/files.j2
137
+ src/simplhdl_vivado/resources/templates/xsim/fileset.j2
138
+ src/simplhdl_vivado/resources/templates/xsim/project.mk.j2
139
+ src/simplhdl_vivado/xsim/__init__.py
140
+ src/simplhdl_vivado/xsim/xsimflow.py
141
+ tests/test_dummy.py
@@ -0,0 +1,21 @@
1
+ [console_scripts]
2
+ simpl = simplhdl.__main__:main
3
+
4
+ [simplhdl.plugins]
5
+ chisel_generator = simplhdl_chisel.chisel:ChiselGenerator
6
+ encrypt_flow = simplhdl_encrypt.encrypt.encryptflow:EncryptFlow
7
+ fusersoc_parser = simplhdl_fusesocparser.fusesocparser:FuseSocParser
8
+ lint_flow = simplhdl_lint.lint.lintflow:LintFlow
9
+ modelsim = simplhdl_modelsim.modelsim.modelsimflow:ModelSimFlow
10
+ peakrdl_generator = simplhdl_peakrdl.systemrdl:PeakRdlGenerator
11
+ quartus = simplhdl_quartus.quartusflow:QuartusFlow
12
+ quartus-dse = simplhdl_quartus.quartusdse.quartusdseflow:QuartusDseFlow
13
+ quartus-export = simplhdl_quartus.quartusexport.quartusexportflow:QuartusExportFlow
14
+ quartus_generator = simplhdl_quartus.spd:QuartusGenerator
15
+ questasim = simplhdl_questasim.questasim.questasimflow:QuestaSimFlow
16
+ rivierapro = simplhdl_rivierapro.rivierapro.rivieraproflow:RivieraProFlow
17
+ simplhdl_parser = simplhdl_parser.simplhdlparser:SimplHdlParser
18
+ vcs = simplhdl_vcs.vcs.vcsflow:VcsFlow
19
+ vivado = simplhdl_vivado.vivadoflow:VivadoFlow
20
+ vivado_generator = simplhdl_vivado.ipxact:VivadoGenerator
21
+ xsim = simplhdl_vivado.xsim.xsimflow:XsimFlow
@@ -0,0 +1,13 @@
1
+ simplhdl
2
+ simplhdl_chisel
3
+ simplhdl_encrypt
4
+ simplhdl_fusesocparser
5
+ simplhdl_lint
6
+ simplhdl_modelsim
7
+ simplhdl_parser
8
+ simplhdl_peakrdl
9
+ simplhdl_quartus
10
+ simplhdl_questasim
11
+ simplhdl_rivierapro
12
+ simplhdl_vcs
13
+ simplhdl_vivado
@@ -0,0 +1,5 @@
1
+ __version__ = "0.8.2"
2
+
3
+ from .pyedaa.project import Project
4
+ from .pyedaa.fileset import FileSet
5
+ from .pyedaa.design import Design
@@ -1,19 +1,19 @@
1
- import sys
2
1
  import argparse
3
- import argcomplete
4
2
  import logging
3
+ import sys
5
4
  import traceback
6
-
7
- from typing import Sequence
8
5
  from pathlib import Path
6
+ from typing import Sequence
7
+
8
+ import argcomplete
9
9
  from rich.logging import RichHandler
10
10
 
11
11
  from . import __version__
12
+ from .plugin.flow import FlowError, FlowFactory
13
+ from .plugin.generator import GeneratorError
14
+ from .plugin.loader import load_plugins
15
+ from .plugin.parser import ParserError
12
16
  from .simplhdl import Simplhdl
13
- from .plugins import load_plugins
14
- from .flow import FlowFactory, FlowError
15
- from .generator import GeneratorError
16
- from .parser import ParserError
17
17
  from .utils import CalledShError
18
18
 
19
19
  logger = logging.getLogger(__name__)
@@ -1,16 +1,16 @@
1
1
  from argparse import Namespace
2
2
  from pathlib import Path
3
+
3
4
  from rich.console import Console
4
- from rich.tree import Tree
5
5
  from rich.style import Style
6
+ from rich.tree import Tree
6
7
 
7
- from simplhdl.pyedaa.project import Project
8
- from .flow import FlowBase, FlowFactory
9
- from .pyedaa.attributes import UsedIn
10
- from .pyedaa.fileset import FileSet
8
+ from ..plugin.flow import FlowBase
9
+ from ..pyedaa.attributes import UsedIn
10
+ from ..pyedaa.fileset import FileSet
11
+ from ..pyedaa.project import Project
11
12
 
12
13
 
13
- @FlowFactory.register('info')
14
14
  class Info(FlowBase):
15
15
 
16
16
  def __init__(self, name, args: Namespace, project: Project, builddir: Path):
@@ -1,10 +1,9 @@
1
1
  from pprint import pprint
2
- from simplhdl.simplhdl import Simplhdl
3
- from simplhdl.flow import FlowBase, FlowFactory, FlowError
4
- from simplhdl.utils import chdir
2
+ from ..simplhdl import Simplhdl
3
+ from ..plugin.flow import FlowBase, FlowError
4
+ from ..utils import chdir
5
5
 
6
6
 
7
- @FlowFactory.register('run')
8
7
  class Run(FlowBase):
9
8
 
10
9
  @classmethod
@@ -1,16 +1,22 @@
1
1
  import logging
2
- import re
3
2
  import os
4
-
5
- from packaging.version import Version
3
+ import re
6
4
  from importlib.metadata import version
7
5
  from pathlib import Path
8
- from typing import Optional, Dict
6
+ from typing import Dict, Optional
9
7
 
10
- from .utils import sh
8
+ from packaging.version import Version
9
+
10
+ from .plugin.flow import FlowError
11
+ from .pyedaa import (
12
+ CocotbPythonFile,
13
+ SystemVerilogSourceFile,
14
+ VerilogIncludeFile,
15
+ VerilogSourceFile,
16
+ VHDLSourceFile,
17
+ )
11
18
  from .pyedaa.project import Project
12
- from .pyedaa import VerilogIncludeFile, VerilogSourceFile, SystemVerilogSourceFile, VHDLSourceFile, CocotbPythonFile
13
- from .flow import FlowError
19
+ from .utils import sh
14
20
 
15
21
  logger = logging.getLogger(__name__)
16
22
 
@@ -0,0 +1,5 @@
1
+ from .parser import ParserBase, ParserError
2
+ from .generator import GeneratorBase, GeneratorError
3
+ from .flow import FlowBase, FlowError, FlowCategory, FlowTools
4
+ from .simulationflow import SimulationFlow
5
+ from .implementationflow import ImplementationFlow
@@ -2,11 +2,11 @@ import logging
2
2
 
3
3
  from argparse import Namespace
4
4
  from pathlib import Path
5
- from typing import Callable, Dict, Set
5
+ from typing import Dict, Set
6
6
  from abc import ABCMeta, abstractmethod
7
7
  from enum import Flag, auto
8
8
 
9
- from .pyedaa.project import Project
9
+ from ..pyedaa.project import Project
10
10
 
11
11
 
12
12
  class FlowBase(metaclass=ABCMeta):
@@ -69,15 +69,10 @@ class FlowFactory:
69
69
  registry: Dict[str, FlowBase] = dict()
70
70
 
71
71
  @classmethod
72
- def register(cls, name: str) -> Callable:
73
-
74
- def inner_wrapper(wrapped_class: FlowBase) -> 'FlowBase':
75
- if name in cls.registry:
76
- raise Exception(f"Flow {name} already exists.")
77
- cls.registry[name] = wrapped_class
78
- return wrapped_class
79
-
80
- return inner_wrapper
72
+ def register(cls, name: str, _class: FlowBase) -> None:
73
+ if name in cls.registry:
74
+ raise Exception(f"Flow {name} already exists.")
75
+ cls.registry[name] = _class
81
76
 
82
77
  @classmethod
83
78
  def get_flow(cls, name: str, args: Namespace, project: Project, builddir: Path) -> 'FlowBase':
@@ -1,9 +1,9 @@
1
1
  from argparse import Namespace
2
2
  from pathlib import Path
3
- from typing import Callable, Dict, Generator
3
+ from typing import Dict, Generator
4
4
  from abc import ABCMeta, abstractmethod
5
5
 
6
- from .pyedaa.project import Project
6
+ from ..pyedaa.project import Project
7
7
  from .flow import FlowCategory
8
8
 
9
9
 
@@ -38,15 +38,10 @@ class GeneratorFactory:
38
38
  registry: Dict[str, GeneratorBase] = dict()
39
39
 
40
40
  @classmethod
41
- def register(cls, name: str) -> Callable:
42
-
43
- def inner_wrapper(wrapped_class: GeneratorBase) -> 'GeneratorBase':
44
- if name in cls.registry:
45
- raise Exception(f"Generator {name} already exists.")
46
- cls.registry[name] = wrapped_class
47
- return wrapped_class
48
-
49
- return inner_wrapper
41
+ def register(cls, name: str, _class: GeneratorBase) -> None:
42
+ if name in cls.registry:
43
+ raise Exception(f"Generator {name} already exists.")
44
+ cls.registry[name] = _class
50
45
 
51
46
  @classmethod
52
47
  def get_generator(
@@ -3,8 +3,8 @@ import logging
3
3
  from argparse import Namespace
4
4
  from pathlib import Path
5
5
 
6
- from simplhdl.flow import FlowBase, FlowCategory
7
- from simplhdl.pyedaa.project import Project
6
+ from .flow import FlowBase, FlowCategory
7
+ from ..pyedaa.project import Project
8
8
 
9
9
  logger = logging.getLogger(__name__)
10
10
 
@@ -0,0 +1,81 @@
1
+ import logging
2
+
3
+ try:
4
+ from importlib.metadata import EntryPoint, entry_points
5
+ except ImportError:
6
+ from importlib_metadata import EntryPoint, entry_points
7
+
8
+ from typing import Iterator
9
+
10
+ from ..cli.info import Info
11
+ from ..cli.run import Run
12
+ from .flow import FlowBase, FlowFactory
13
+ from .generator import GeneratorBase, GeneratorFactory
14
+ from .parser import ParserBase, ParserFactory
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ def get_external_plugins(group_name: str) -> Iterator[EntryPoint]:
20
+ """
21
+ Retrieves all EntryPoint objects registered under a specific group name.
22
+
23
+ Args:
24
+ group_name: The string identifying the entry point group
25
+ (e.g., 'simplhdl.plugins').
26
+
27
+ Returns:
28
+ An iterator of EntryPoint objects.
29
+ """
30
+ try:
31
+ # Use importlib.metadata to find registered entry points
32
+ plugins = entry_points(group=group_name)
33
+ except TypeError:
34
+ # Fallback for older versions of Python that might not support the 'group' argument
35
+ # This requires iterating through all entry points and filtering manually.
36
+ all_entries = entry_points()
37
+ # Note: entry_points() returns a dictionary-like object in Python < 3.10
38
+ plugins = all_entries.get(group_name, [])
39
+
40
+ return plugins
41
+
42
+
43
+ def load_external_plugins() -> None:
44
+ """
45
+ Loads external plugins.
46
+ """
47
+ for plugin in get_external_plugins("simplhdl.plugins"):
48
+
49
+ try:
50
+ # 1. Load the class/function explicitly
51
+ PluginClass = plugin.load()
52
+
53
+ # 2. Check if the class inherits from the expected base (GeneratorBase)
54
+ # You might need to import GeneratorBase here for the check.
55
+ if not issubclass(PluginClass, (ParserBase, GeneratorBase, FlowBase)):
56
+ logger.warning(f"Plugin {plugin.name} is not a valid ParserBase, GeneratorBase, FlowBase.")
57
+ continue
58
+
59
+ if issubclass(PluginClass, ParserBase):
60
+ ParserFactory.register(plugin.name, PluginClass)
61
+ logger.debug(f"Registered external parser: {plugin.name}")
62
+
63
+ if issubclass(PluginClass, GeneratorBase):
64
+ GeneratorFactory.register(plugin.name, PluginClass)
65
+ logger.debug(f"Registered external generator: {plugin.name}")
66
+
67
+ if issubclass(PluginClass, FlowBase):
68
+ FlowFactory.register(plugin.name, PluginClass)
69
+ logger.debug(f"Registered external flow: {plugin.name}")
70
+
71
+ except Exception as e:
72
+ logger.error(f"Failed to load or register plugin {plugin.name}: {e}")
73
+
74
+
75
+ def load_plugins() -> None:
76
+ """
77
+ Loads all plugins, both builtin and external.
78
+ """
79
+ FlowFactory.register('info', Info)
80
+ FlowFactory.register('run', Run)
81
+ load_external_plugins()
@@ -1,12 +1,13 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
4
 
3
5
  from pathlib import Path
4
- from typing import Callable
5
6
  from abc import ABCMeta, abstractmethod
6
7
  from argparse import Namespace
7
8
 
8
- from .pyedaa.fileset import FileSet
9
- from .pyedaa.project import Project
9
+ from ..pyedaa.fileset import FileSet
10
+ from ..pyedaa.project import Project
10
11
 
11
12
  logger = logging.getLogger(__name__)
12
13
 
@@ -21,7 +22,7 @@ class ParserBase(metaclass=ABCMeta):
21
22
  pass
22
23
 
23
24
  @abstractmethod
24
- def parse(self, filename: Path, project: Project, args: Namespace) -> 'FileSet':
25
+ def parse(self, filename: Path, project: Project, args: Namespace) -> FileSet:
25
26
  pass
26
27
 
27
28
 
@@ -32,7 +33,7 @@ class NoParser(ParserBase):
32
33
  def is_valid_format(self, filename: Path) -> bool:
33
34
  return True
34
35
 
35
- def parse(self, filename: Path, project: Project, args: Namespace) -> 'FileSet':
36
+ def parse(self, filename: Path, project: Project, args: Namespace) -> FileSet:
36
37
  return FileSet('Empty')
37
38
 
38
39
 
@@ -44,19 +45,13 @@ class ParserFactory:
44
45
  registry: dict = {}
45
46
 
46
47
  @classmethod
47
- def register(cls) -> Callable:
48
-
49
- def inner_wrapper(wrapped_class: ParserBase) -> 'ParserBase':
50
- name = wrapped_class.__name__ # type: ignore
51
- if name in cls.registry:
52
- raise Exception(f"Parser {name} already exists.")
53
- cls.registry[name] = wrapped_class
54
- return wrapped_class
55
-
56
- return inner_wrapper
48
+ def register(cls, name: str, _class: ParserBase) -> None:
49
+ if name in cls.registry:
50
+ raise Exception(f"Parser {name} already exists.")
51
+ cls.registry[name] = _class
57
52
 
58
53
  @classmethod
59
- def get_parser(cls, filename: Path) -> 'ParserBase':
54
+ def get_parser(cls, filename: Path) -> ParserBase:
60
55
  for parser_class in cls.registry.values():
61
56
  parser = parser_class()
62
57
  if parser.is_valid_format(filename):
@@ -2,25 +2,35 @@ try:
2
2
  from importlib.resources import files as resources_files
3
3
  except ImportError:
4
4
  from importlib_resources import files as resources_files
5
- import os
6
5
  import logging
6
+ import os
7
7
  import shutil
8
-
9
- from typing import Callable, Generator, List, Dict, Tuple, Any
10
- from jinja2 import Environment, FileSystemLoader
11
8
  from argparse import Namespace
12
9
  from pathlib import Path
10
+ from typing import Any, Callable, Dict, Generator, List, Tuple
13
11
 
14
- from simplhdl.flow import FlowBase, FlowCategory, FlowError
15
- from simplhdl.pyedaa.project import Project
16
- from simplhdl.pyedaa.attributes import UsedIn
17
- from simplhdl.cocotb import Cocotb
18
- from simplhdl.pyedaa.fileset import FileSet
19
- from simplhdl.pyedaa import (
20
- File, VerilogSourceFile, VerilogIncludeFile, SystemVerilogSourceFile, VHDLSourceFile,
21
- MemoryInitFile
12
+ from jinja2 import Environment, FileSystemLoader
13
+
14
+ from ..cocotb import Cocotb
15
+ from ..pyedaa import (
16
+ File,
17
+ MemoryInitFile,
18
+ SystemVerilogSourceFile,
19
+ VerilogIncludeFile,
20
+ VerilogSourceFile,
21
+ VHDLSourceFile,
22
+ )
23
+ from ..pyedaa.attributes import UsedIn
24
+ from ..pyedaa.fileset import FileSet
25
+ from ..pyedaa.project import Project
26
+ from ..utils import (
27
+ append_suffix,
28
+ generate_from_template,
29
+ md5check,
30
+ md5sum,
31
+ md5write,
22
32
  )
23
- from simplhdl.utils import generate_from_template, md5sum, md5check, md5write, append_suffix
33
+ from .flow import FlowBase, FlowCategory, FlowError
24
34
 
25
35
  logger = logging.getLogger(__name__)
26
36
 
@@ -3,7 +3,7 @@ import pyEDAA.ProjectModel as pm # type: ignore
3
3
 
4
4
  from typing import Dict, List, Optional
5
5
  from pathlib import Path
6
- from ..repo import Repo
6
+ from .repo import Repo
7
7
  from .design import Design
8
8
  from .target import Target
9
9
  from . import (
@@ -4,7 +4,7 @@ from abc import ABCMeta, abstractmethod
4
4
  from typing import Optional
5
5
  from pathlib import Path
6
6
 
7
- from .utils import sh, lock
7
+ from ..utils import sh, lock
8
8
 
9
9
 
10
10
  class Repo(metaclass=ABCMeta):
@@ -6,9 +6,9 @@ from argparse import Namespace
6
6
  from .pyedaa.project import Project
7
7
  from .pyedaa.design import Design
8
8
  from .pyedaa.vhdllibrary import VHDLLibrary
9
- from .parser import ParserFactory
10
- from .flow import FlowFactory
11
- from .generator import GeneratorFactory
9
+ from .plugin.parser import ParserFactory
10
+ from .plugin.flow import FlowFactory
11
+ from .plugin.generator import GeneratorFactory
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14