SimplHDL 0.2.1__tar.gz → 0.2.3__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 (196) hide show
  1. {simplhdl-0.2.1 → simplhdl-0.2.3}/PKG-INFO +1 -1
  2. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/PKG-INFO +1 -1
  3. simplhdl-0.2.3/src/simplhdl/__init__.py +1 -0
  4. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusflow.py +4 -1
  5. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/questasim/questasimflow.py +5 -2
  6. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/simulationflow.py +4 -2
  7. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vivadoflow.py +10 -6
  8. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/xsim/xsimflow.py +4 -0
  9. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/spd.py +28 -2
  10. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parser.py +1 -2
  11. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/__init__.py +8 -0
  12. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/design.py +2 -1
  13. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/fileset.py +15 -1
  14. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/project.tcl.j2 +4 -1
  15. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/project.tcl.j2 +1 -1
  16. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/run.tcl.j2 +7 -2
  17. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/Makefile.j2 +1 -1
  18. simplhdl-0.2.1/src/simplhdl/__init__.py +0 -1
  19. {simplhdl-0.2.1 → simplhdl-0.2.3}/.github/workflows/publish.yml +0 -0
  20. {simplhdl-0.2.1 → simplhdl-0.2.3}/.gitignore +0 -0
  21. {simplhdl-0.2.1 → simplhdl-0.2.3}/.readthedocs.yaml +0 -0
  22. {simplhdl-0.2.1 → simplhdl-0.2.3}/LICENSE +0 -0
  23. {simplhdl-0.2.1 → simplhdl-0.2.3}/README.md +0 -0
  24. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_dark.png +0 -0
  25. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_light.png +0 -0
  26. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_light_1.png +0 -0
  27. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/conf.py +0 -0
  28. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/drawing.svg +0 -0
  29. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/ghdl.rst +0 -0
  30. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/icarus.rst +0 -0
  31. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/quartus.rst +0 -0
  32. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/questasim.rst +0 -0
  33. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/vcs.rst +0 -0
  34. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/vivado.rst +0 -0
  35. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/xsim.rst +0 -0
  36. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows.rst +0 -0
  37. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/index.rst +0 -0
  38. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/intel-ips.md +0 -0
  39. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/introduction.rst +0 -0
  40. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/plugins.rst +0 -0
  41. {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/requirements.txt +0 -0
  42. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/adder.yml +0 -0
  43. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/hdl/adder.sv +0 -0
  44. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/sim/testbench.sv +0 -0
  45. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/sim/testbench.yml +0 -0
  46. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/build.yml +0 -0
  47. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/placement.xdc +0 -0
  48. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/timing.xdc +0 -0
  49. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/top.sv +0 -0
  50. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/alu.yml +0 -0
  51. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/add.sv +0 -0
  52. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/alu.sv +0 -0
  53. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/mul.sv +0 -0
  54. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/sub.sv +0 -0
  55. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -0
  56. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -0
  57. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -0
  58. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -0
  59. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -0
  60. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -0
  61. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -0
  62. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -0
  63. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -0
  64. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -0
  65. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -0
  66. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/__init__.py +0 -0
  67. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/env.py +0 -0
  68. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -0
  69. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/test.py +0 -0
  70. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/testbench.py +0 -0
  71. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -0
  72. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -0
  73. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -0
  74. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -0
  75. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -0
  76. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -0
  77. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -0
  78. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -0
  79. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -0
  80. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -0
  81. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -0
  82. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -0
  83. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -0
  84. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -0
  85. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -0
  86. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -0
  87. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -0
  88. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/build.yml +0 -0
  89. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/placement.xdc +0 -0
  90. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/timing.xdc +0 -0
  91. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/build.sbt +0 -0
  92. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/hello.yml +0 -0
  93. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/src/main/scala/Hello.scala +0 -0
  94. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/syn/build.yml +0 -0
  95. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/setup.py +0 -0
  96. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -0
  97. {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -0
  98. {simplhdl-0.2.1 → simplhdl-0.2.3}/pyproject.toml +0 -0
  99. {simplhdl-0.2.1 → simplhdl-0.2.3}/setup.cfg +0 -0
  100. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/SOURCES.txt +0 -0
  101. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
  102. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/entry_points.txt +0 -0
  103. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/requires.txt +0 -0
  104. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/top_level.txt +0 -0
  105. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/__main__.py +0 -0
  106. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/cocotb.py +0 -0
  107. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flow.py +0 -0
  108. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/__init__.py +0 -0
  109. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/flake8/flake8flow.py +0 -0
  110. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/implementationflow.py +0 -0
  111. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/lint/lintflow.py +0 -0
  112. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/modelsim/__init__.py +0 -0
  113. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/modelsim/modelsimflow.py +0 -0
  114. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusdse/__init__.py +0 -0
  115. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusdse/quartusdseflow.py +0 -0
  116. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/questasim/__init__.py +0 -0
  117. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/rivierapro/__init__.py +0 -0
  118. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/rivierapro/rivieraproflow.py +0 -0
  119. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vcs/__init__.py +0 -0
  120. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vcs/vcsflow.py +0 -0
  121. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/verible/__init__.py +0 -0
  122. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/verible/veribleflow.py +0 -0
  123. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vsg/__init__.py +0 -0
  124. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vsg/vsgflow.py +0 -0
  125. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/xsim/__init__.py +0 -0
  126. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generator.py +0 -0
  127. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/__init__.py +0 -0
  128. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/chisel.py +0 -0
  129. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/ipxact.py +0 -0
  130. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/systemrdl.py +0 -0
  131. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/info.py +0 -0
  132. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/__init__.py +0 -0
  133. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/fusesocparser.py +0 -0
  134. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/simplhdlparser.py +0 -0
  135. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/plugins.py +0 -0
  136. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/attributes.py +0 -0
  137. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/filetypes.py +0 -0
  138. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/project.py +0 -0
  139. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/vhdllibrary.py +0 -0
  140. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/repo.py +0 -0
  141. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/__init__.py +0 -0
  142. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/__init__.py +0 -0
  143. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/flake8/__init__.py +0 -0
  144. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/flake8/setup.cfg.j2 +0 -0
  145. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/Makefile.j2 +0 -0
  146. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/__init__.py +0 -0
  147. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/cocotb.mk.j2 +0 -0
  148. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/dependencies.mk.j2 +0 -0
  149. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/files.j2 +0 -0
  150. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/fileset.j2 +0 -0
  151. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/modelsim.tcl.j2 +0 -0
  152. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/project.mk.j2 +0 -0
  153. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/run.do.j2 +0 -0
  154. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/__init__.py +0 -0
  155. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/run.tcl.j2 +0 -0
  156. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/__init__.py +0 -0
  157. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2 +0 -0
  158. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/project.qrun.j2 +0 -0
  159. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/visualizer.tcl.j2 +0 -0
  160. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/vsim-run.do.j2 +0 -0
  161. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/Makefile.j2 +0 -0
  162. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/__init__.py +0 -0
  163. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
  164. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
  165. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/files.j2 +0 -0
  166. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/fileset.j2 +0 -0
  167. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/project.mk.j2 +0 -0
  168. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/Makefile.j2 +0 -0
  169. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/__init__.py +0 -0
  170. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/cocotb.mk.j2 +0 -0
  171. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/dependencies.mk.j2 +0 -0
  172. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/files.j2 +0 -0
  173. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/fileset.j2 +0 -0
  174. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/pli.tab.j2 +0 -0
  175. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/project.mk.j2 +0 -0
  176. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
  177. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/vcs.parameters.j2 +0 -0
  178. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/verible/__init__.py +0 -0
  179. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/verible/rules.cfg.j2 +0 -0
  180. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/__init__.py +0 -0
  181. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/launch_run.sh.j2 +0 -0
  182. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/steps.tcl.j2 +0 -0
  183. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/__init__.py +0 -0
  184. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/files.json.j2 +0 -0
  185. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/rules.yml.j2 +0 -0
  186. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/__init__.py +0 -0
  187. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/cocotb.mk.j2 +0 -0
  188. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/dependencies.mk.j2 +0 -0
  189. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/files.j2 +0 -0
  190. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/fileset.j2 +0 -0
  191. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/project.mk.j2 +0 -0
  192. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/simplhdl.py +0 -0
  193. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/tools.py +0 -0
  194. {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/utils.py +0 -0
  195. {simplhdl-0.2.1 → simplhdl-0.2.3}/tests/test_dummy.py +0 -0
  196. {simplhdl-0.2.1 → simplhdl-0.2.3}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimplHDL
3
- Version: 0.2.1
3
+ Version: 0.2.3
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimplHDL
3
- Version: 0.2.1
3
+ Version: 0.2.3
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 @@
1
+ __version__ = "0.2.3"
@@ -17,7 +17,8 @@ from ..utils import sh, generate_from_template
17
17
  from ..pyedaa import (QuartusIPSpecificationFile, VerilogIncludeFile, VerilogSourceFile,
18
18
  SystemVerilogSourceFile, VHDLSourceFile, ConstraintFile,
19
19
  EDIFNetlistFile, NetlistFile, SettingFile, QuartusSignalTapFile,
20
- QuartusIniFile, QuartusQIPSpecificationFile, QuartusQSYSSpecificationFile)
20
+ QuartusIniFile, QuartusQIPSpecificationFile, QuartusQSYSSpecificationFile,
21
+ HDLSearchPath, VerilogIncludeSearchPath)
21
22
  from ..pyedaa.project import Project
22
23
  from ..pyedaa.attributes import UsedIn
23
24
 
@@ -97,6 +98,8 @@ class QuartusFlow(ImplementationFlow):
97
98
  template = environment.get_template('project.tcl.j2')
98
99
  project_updated = generate_from_template(
99
100
  template, self.builddir,
101
+ HDLSearchPath=HDLSearchPath,
102
+ VerilogIncludeSearchPath=VerilogIncludeSearchPath,
100
103
  VerilogIncludeFile=VerilogIncludeFile,
101
104
  VerilogSourceFile=VerilogSourceFile,
102
105
  SystemVerilogSourceFile=SystemVerilogSourceFile,
@@ -168,11 +168,11 @@ class QuestaSimFlow(SimulationFlow):
168
168
  args.add(f"-g{name}={escape(value)}")
169
169
  for name, value in self.project.Parameters.items():
170
170
  args.add(f"-g{name}={escape(value)}")
171
- if self.args.debug:
171
+ if self.args.gui or self.args.debug:
172
172
  args.add('+acc')
173
173
  args.add('-debugdb')
174
174
  args.add('-fsmdebug')
175
- elif self.args.gui or self.args.do or self.args.wavedump or self.cocotb.enabled:
175
+ elif self.args.do or self.args.wavedump or self.cocotb.enabled:
176
176
  args.add('+acc=npr')
177
177
  return ' '.join(list(args) + [self.args.vopt_args])
178
178
 
@@ -259,6 +259,9 @@ class QuestaSimFlow(SimulationFlow):
259
259
  command.append('-visualizer')
260
260
  command.append('-gui')
261
261
  elif self.args.step:
262
+ if step == "elaborate":
263
+ command.append('-optimize')
264
+ return command
262
265
  command.append(f'-{step}')
263
266
 
264
267
  if self.args.do:
@@ -56,6 +56,8 @@ class SimulationFlow(FlowBase):
56
56
  os.environ['MODULE'] = self.cocotb.module()
57
57
 
58
58
  def get_globals(self) -> Dict[str, Any]:
59
+ incdirs = self.project.DefaultDesign.DefaultFileSet.IncludeDirs(usedin='simulation', isrecursive=True)
60
+ incdirpaths = {f.Path.absolute() for f in incdirs}
59
61
  globals = dict()
60
62
  globals['libraries'] = (list(self.project.DefaultDesign.VHDLLibraries.values()))
61
63
  globals['external_libraries'] = list(self.project.DefaultDesign.ExternalVHDLLibraries.values())
@@ -65,7 +67,7 @@ class SimulationFlow(FlowBase):
65
67
  globals['cocotbtop'] = self.cocotb.top
66
68
  globals['cocotbhdltype'] = self.cocotb.duttype
67
69
  globals['cocotbdut'] = self.cocotb.dut
68
- globals['incdirs'] = {f.Path.parent for f in self.project.DefaultDesign.DefaultFileSet.Files(VerilogIncludeFile)} # noqa E501
70
+ globals['incdirs'] = incdirpaths
69
71
  globals['VerilogSourceFile'] = VerilogSourceFile
70
72
  globals['SystemVerilogSourceFile'] = SystemVerilogSourceFile
71
73
  globals['VHDLSourceFile'] = VHDLSourceFile
@@ -139,7 +141,7 @@ class SimulationFlow(FlowBase):
139
141
  hashfile=self.hashfile.name)
140
142
  template = environment.get_template('fileset.j2')
141
143
  output = base.with_suffix('.fileset')
142
- includes = {f.Path.parent.absolute() for f in files if isinstance(f, VerilogIncludeFile)}
144
+ includes = self.get_globals()['incdirs']
143
145
  files = [f.Path.absolute() for f in files if not isinstance(f, VerilogIncludeFile)]
144
146
  generate_from_template(template, output, args=args, includes=includes, files=files)
145
147
  generated.append(output)
@@ -83,6 +83,15 @@ class VivadoFlow(FlowBase):
83
83
  sh(command, cwd=self.builddir, output=True)
84
84
  raise SystemExit
85
85
 
86
+ def get_files(self):
87
+ files = []
88
+ seen = []
89
+ for f in self.project.DefaultDesign.Files():
90
+ if 'implementation' in f[UsedIn] and f.Path not in seen:
91
+ seen.append(f.Path)
92
+ files.append(f)
93
+ return files
94
+
86
95
  def setup(self):
87
96
  self.is_tool_setup()
88
97
  os.makedirs(self.builddir, exist_ok=True)
@@ -94,6 +103,7 @@ class VivadoFlow(FlowBase):
94
103
  trim_blocks=True)
95
104
  template = environment.get_template('project.tcl.j2')
96
105
  generate_from_template(template, self.builddir,
106
+ files=self.get_files(),
97
107
  dict2str=dict2str,
98
108
  VerilogIncludeFile=VerilogIncludeFile,
99
109
  VerilogSourceFile=VerilogSourceFile,
@@ -119,12 +129,6 @@ class VivadoFlow(FlowBase):
119
129
  name = self.project.Name
120
130
  command = f"vivado {name}.xpr -mode batch -notrace -source run.tcl -tclargs {step}".split()
121
131
  sh(command, cwd=self.builddir, output=True)
122
- # jsonfile = self.builddir.joinpath('runs.json')
123
- # with jsonfile.open() as f:
124
- # runs: Dict[str, List[str]] = json.load(f)
125
- # for name, run in runs.items():
126
- # for script in run:
127
- # sh(['bash', 'launch_run.sh', script], output=True, cwd=self.builddir)
128
132
 
129
133
  def run(self) -> None:
130
134
  if self.args.archive:
@@ -133,6 +133,8 @@ class XsimFlow(SimulationFlow):
133
133
  args.add(f"-v {self.args.verbose if self.args.verbose < 2 else 2}")
134
134
  for name, value in self.project.Defines.items():
135
135
  args.add(f"-d {name}={escape(value)}")
136
+ if self.is_uvm():
137
+ args.add('-L uvm')
136
138
  return ' '.join(list(args) + [self.args.xvlog_args]).strip()
137
139
 
138
140
  def xvhdl_args(self) -> str:
@@ -150,6 +152,8 @@ class XsimFlow(SimulationFlow):
150
152
  args.add(f"--generic_top {name}={escape(value)}")
151
153
  for name, value in self.project.Parameters.items():
152
154
  args.add(f"--generic_top {name}={escape(value)}")
155
+ if self.args.wave or self.args.gui:
156
+ args.add('-debug all')
153
157
  return ' '.join(list(args) + [self.args.xelab_args])
154
158
 
155
159
  def xsim_args(self) -> str:
@@ -170,9 +170,11 @@ class QuartusIP(GeneratorBase):
170
170
 
171
171
  return filename
172
172
 
173
- def run(self, flow: FlowBase):
173
+ def run(self, flow: FlowBase) -> None:
174
174
  os.makedirs(self.builddir, exist_ok=True)
175
- for ipfile in self.project.DefaultDesign.DefaultFileSet.Files(fileType=QuartusIPSpecificationFile):
175
+ ipfiles = list(self.project.DefaultDesign.DefaultFileSet.Files(fileType=QuartusIPSpecificationFile))
176
+ ipfiles = filter_duplicated_files(ipfiles)
177
+ for ipfile in ipfiles:
176
178
  if ipfile.FileType == QuartusQIPSpecificationFile:
177
179
  continue
178
180
  newipfile = self.unpack_ip(ipfile)
@@ -183,3 +185,27 @@ class QuartusIP(GeneratorBase):
183
185
  # Add fileset to parent, then set parent to fileset to make a chain
184
186
  parent._fileSets[fileset.Name] = fileset
185
187
  parent = fileset
188
+
189
+
190
+ def filter_duplicated_files(files: List[File]) -> List[File]:
191
+ """
192
+ Filter out duplicated files from a list of files. If a file appears more than once,
193
+ the last one will override the previous ones.
194
+
195
+ Args:
196
+ files (List[File]): The list of files to filter.
197
+
198
+ Returns:
199
+ List[File]: A list of unique files.
200
+
201
+ Example:
202
+ >>> filter_duplicated_files([File('/path1/file1'), File('/path2/file1'), File('/path/file2')]
203
+ [File('/other/path/to/file1'), File('/path/to/file2')]
204
+ """
205
+ unique_files = set(files)
206
+ filtered_files = dict()
207
+ for file in unique_files:
208
+ if file.Path.name in filtered_files:
209
+ logger.warning(f"Duplicate files - {file.Path} will override {filtered_files[file.Path.name].Path}")
210
+ filtered_files[file.Path.name] = file
211
+ return list(filtered_files.values())
@@ -62,8 +62,7 @@ class ParserFactory:
62
62
  if parser.is_valid_format(filename):
63
63
  return parser
64
64
  if filename is None:
65
- logger.info("No project specification found, continue with empty project")
66
- return NoParser()
65
+ raise ParserError("Couldn't find any project specification in current directory")
67
66
  else:
68
67
  raise ParserError(f"Couldn't find Parser for parsing '{filename}'")
69
68
 
@@ -34,6 +34,10 @@ class HDLIncludeFile(SourceFile):
34
34
  pass
35
35
 
36
36
 
37
+ class HDLSearchPath(HDLIncludeFile):
38
+ pass
39
+
40
+
37
41
  class HDLSourceFile(pm.HDLSourceFile, FileMixIn):
38
42
  _library: HDLLibrary
39
43
 
@@ -60,6 +64,10 @@ class HDLSourceFile(pm.HDLSourceFile, FileMixIn):
60
64
  self._library = value
61
65
 
62
66
 
67
+ class VerilogIncludeSearchPath(HDLSearchPath):
68
+ pass
69
+
70
+
63
71
  class VerilogIncludeFile(HDLIncludeFile, pm.HumanReadableContent):
64
72
  pass
65
73
 
@@ -64,5 +64,6 @@ class Design(pm.Design):
64
64
  def VHDLLibraries(self) -> Dict[str, VHDLLibrary]:
65
65
  libraries = dict()
66
66
  libraries.update(self._vhdlLibraries)
67
- libraries.update(self.DefaultFileSet.VHDLLibraries)
67
+ if self.DefaultFileSet:
68
+ libraries.update(self.DefaultFileSet.VHDLLibraries)
68
69
  return libraries
@@ -1,6 +1,6 @@
1
1
  import pyEDAA.ProjectModel as pm # type: ignore
2
2
  from simplhdl.pyedaa.attributes import UsedIn
3
- from simplhdl.pyedaa import File
3
+ from simplhdl.pyedaa import File, HDLSearchPath, VerilogIncludeSearchPath, VerilogIncludeFile
4
4
 
5
5
  from typing import Dict, Generator, List, Optional
6
6
 
@@ -73,3 +73,17 @@ class FileSet(pm.FileSet):
73
73
  for fileset in self.FileSets.values():
74
74
  dependencies += fileset.Dependencies(usedin=usedin, isrecursive=True)
75
75
  return dependencies
76
+
77
+ def IncludeDirs(self, usedin: Optional[str] = None, isrecursive: bool = False) -> List[HDLSearchPath]:
78
+ dirs = list()
79
+ if isrecursive:
80
+ for _, fileset in self.FileSets.items():
81
+ dirs += fileset.IncludeDirs(usedin=usedin, isrecursive=True)
82
+ if usedin:
83
+ items = [i for i in self._files if usedin in i[UsedIn]]
84
+ for item in items:
85
+ if isinstance(item, VerilogIncludeFile):
86
+ dirs.append(VerilogIncludeSearchPath(item.Path.parent.absolute()))
87
+ elif isinstance(item, HDLSearchPath):
88
+ dirs.append(HDLSearchPath(item.Path.parent.absolute()))
89
+ return dirs
@@ -12,8 +12,11 @@ set_parameter -name {{generic}} {{value}}
12
12
  set_global_assignment -name VERILOG_MACRO "{{define}}={{value}}"
13
13
  {% endfor %}
14
14
  {% for file in project.DefaultDesign.Files() if 'implementation' in file[UsedIn] %}
15
- {% if file.FileType == VerilogIncludeFile %}
15
+ {% if file.FileType == HDLSearchPath %}
16
+ set_global_assignment -name SEARCH_PATH "{{file.Path}}"
17
+ {% elif file.FileType == VerilogIncludeFile %}
16
18
  set_global_assignment -name VERILOG_INCLUDE_FILE "{{file.Path}}"
19
+ set_global_assignment -name SEARCH_PATH "{{file.Path.parent}}"
17
20
  {% elif file.FileType == SystemVerilogSourceFile %}
18
21
  set_global_assignment -library {{file.Library}} -name SYSTEMVERILOG_FILE "{{file.Path}}"
19
22
  {% elif file.FileType == VerilogSourceFile %}
@@ -76,7 +76,7 @@ foreach fileset [get_filesets -filter {FILESET_TYPE =~ *Srcs}] {
76
76
  set_property verilog_define "{{dict2str(project.Defines)}}" $fileset
77
77
  }
78
78
  {% endif %}
79
- {% for file in project.DefaultDesign.Files() if 'implementation' in file[UsedIn] %}
79
+ {% for file in files %}
80
80
  {% if file.FileType == VerilogIncludeFile %}
81
81
  add_files "{{file.Path|replace('\\', '/')}}"
82
82
  {% elif file.FileType == SystemVerilogSourceFile %}
@@ -35,8 +35,13 @@ switch $step {
35
35
 
36
36
  }
37
37
 
38
- set runs [list [current_run -synthesis] [current_run -implementation]]
39
- launch_runs [current_run] {*}[split $launch_args]
38
+ if {$step == "synthesis"} {
39
+ set runs [list [current_run -synthesis]]
40
+ launch_runs [current_run -synthesis]
41
+ } else {
42
+ set runs [list [current_run -synthesis] [current_run -implementation]]
43
+ launch_runs [current_run] {*}[split $launch_args]
44
+ }
40
45
 
41
46
  # wait_on_run renamed to wait_on_runs from Vivado 2022.1
42
47
  if {[package vsatisfies 1.[version -s] 1.2022.1]} {
@@ -19,7 +19,7 @@ simulate: elaborate
19
19
 
20
20
 
21
21
  gui: elaborate
22
- $(XSIM) $(XSIM_FLAGS) $(TOPLEVELS)
22
+ $(XSIM) $(XSIM_FLAGS) $(TOPLEVELS) -gui
23
23
 
24
24
 
25
25
  elaborate: compile
@@ -1 +0,0 @@
1
- __version__ = "0.2.1"
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