SimplHDL 0.0.4__tar.gz → 0.0.5__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 (173) hide show
  1. {SimplHDL-0.0.4 → simplhdl-0.0.5}/PKG-INFO +2 -1
  2. {SimplHDL-0.0.4 → simplhdl-0.0.5}/pyproject.toml +1 -0
  3. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/PKG-INFO +2 -1
  4. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/SOURCES.txt +1 -0
  5. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/requires.txt +1 -0
  6. simplhdl-0.0.5/src/simplhdl/__init__.py +1 -0
  7. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/questasim/questasimflow.py +15 -4
  8. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/simulationflow.py +1 -1
  9. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/vcs/vcsflow.py +27 -5
  10. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/info.py +64 -39
  11. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/__init__.py +4 -1
  12. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/fileset.py +22 -4
  13. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/Makefile.j2 +7 -5
  14. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/Makefile.j2 +5 -5
  15. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/Makefile.j2 +4 -4
  16. simplhdl-0.0.5/src/simplhdl/resources/templates/vcs/vcs.parameters.j2 +3 -0
  17. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vivado/project.tcl.j2 +1 -1
  18. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/Makefile.j2 +4 -4
  19. SimplHDL-0.0.4/src/simplhdl/__init__.py +0 -1
  20. {SimplHDL-0.0.4 → simplhdl-0.0.5}/.github/workflows/publish.yml +0 -0
  21. {SimplHDL-0.0.4 → simplhdl-0.0.5}/.gitignore +0 -0
  22. {SimplHDL-0.0.4 → simplhdl-0.0.5}/.readthedocs.yaml +0 -0
  23. {SimplHDL-0.0.4 → simplhdl-0.0.5}/LICENSE +0 -0
  24. {SimplHDL-0.0.4 → simplhdl-0.0.5}/README.md +0 -0
  25. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/_static/simplhdl_dark.png +0 -0
  26. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/_static/simplhdl_light.png +0 -0
  27. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/_static/simplhdl_light_1.png +0 -0
  28. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/conf.py +0 -0
  29. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/drawing.svg +0 -0
  30. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/ghdl.rst +0 -0
  31. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/icarus.rst +0 -0
  32. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/quartus.rst +0 -0
  33. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/questasim.rst +0 -0
  34. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/vcs.rst +0 -0
  35. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/vivado.rst +0 -0
  36. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows/xsim.rst +0 -0
  37. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/flows.rst +0 -0
  38. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/index.rst +0 -0
  39. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/intel-ips.md +0 -0
  40. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/introduction.rst +0 -0
  41. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/plugins.rst +0 -0
  42. {SimplHDL-0.0.4 → simplhdl-0.0.5}/docs/requirements.txt +0 -0
  43. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/adder.yml +0 -0
  44. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/hdl/adder.sv +0 -0
  45. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/sim/testbench.sv +0 -0
  46. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/sim/testbench.yml +0 -0
  47. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/syn/build.yml +0 -0
  48. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/syn/placement.xdc +0 -0
  49. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/syn/timing.xdc +0 -0
  50. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/adder/syn/top.sv +0 -0
  51. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/alu.yml +0 -0
  52. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/hdl/add.sv +0 -0
  53. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/hdl/alu.sv +0 -0
  54. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/hdl/mul.sv +0 -0
  55. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/hdl/sub.sv +0 -0
  56. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -0
  57. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -0
  58. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -0
  59. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -0
  60. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -0
  61. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -0
  62. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -0
  63. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -0
  64. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -0
  65. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -0
  66. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -0
  67. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/test/__init__.py +0 -0
  68. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/test/env.py +0 -0
  69. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -0
  70. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/test/test.py +0 -0
  71. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/pyuvm/testbench.py +0 -0
  72. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -0
  73. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -0
  74. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -0
  75. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -0
  76. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -0
  77. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -0
  78. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -0
  79. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -0
  80. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -0
  81. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -0
  82. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -0
  83. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -0
  84. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -0
  85. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -0
  86. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -0
  87. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -0
  88. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -0
  89. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/syn/build.yml +0 -0
  90. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/syn/placement.xdc +0 -0
  91. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/alu/syn/timing.xdc +0 -0
  92. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/hello/build.sbt +0 -0
  93. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/hello/hello.yml +0 -0
  94. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/hello/src/main/scala/Hello.scala +0 -0
  95. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/hdl/hello/syn/build.yml +0 -0
  96. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/plugins/simple_parser/setup.py +0 -0
  97. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -0
  98. {SimplHDL-0.0.4 → simplhdl-0.0.5}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -0
  99. {SimplHDL-0.0.4 → simplhdl-0.0.5}/setup.cfg +0 -0
  100. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
  101. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/entry_points.txt +0 -0
  102. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/SimplHDL.egg-info/top_level.txt +0 -0
  103. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/__main__.py +0 -0
  104. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/cocotb.py +0 -0
  105. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flow.py +0 -0
  106. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/__init__.py +0 -0
  107. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/implementationflow.py +0 -0
  108. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/modelsimflow.py +0 -0
  109. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/quartusflow.py +0 -0
  110. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/questasim/__init__.py +0 -0
  111. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/rivierapro/__init__.py +0 -0
  112. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/rivierapro/rivieraproflow.py +0 -0
  113. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/vcs/__init__.py +0 -0
  114. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/vivadoflow.py +0 -0
  115. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/xsim/__init__.py +0 -0
  116. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/flows/xsim/xsimflow.py +0 -0
  117. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generator.py +0 -0
  118. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generators/__init__.py +0 -0
  119. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generators/chisel.py +0 -0
  120. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generators/ipxact.py +0 -0
  121. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generators/spd.py +0 -0
  122. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/generators/systemrdl.py +0 -0
  123. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/parser.py +0 -0
  124. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/parsers/__init__.py +0 -0
  125. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/parsers/fusesocparser.py +0 -0
  126. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/parsers/simplhdlparser.py +0 -0
  127. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/plugins.py +0 -0
  128. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/attributes.py +0 -0
  129. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/design.py +0 -0
  130. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/filetypes.py +0 -0
  131. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/project.py +0 -0
  132. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/pyedaa/vhdllibrary.py +0 -0
  133. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/repo.py +0 -0
  134. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/__init__.py +0 -0
  135. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/__init__.py +0 -0
  136. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/quartus/__init__.py +0 -0
  137. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/quartus/project.tcl.j2 +0 -0
  138. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/quartus/run.tcl.j2 +0 -0
  139. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/__init__.py +0 -0
  140. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/cocotb.mk.j2 +0 -0
  141. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/dependencies.mk.j2 +0 -0
  142. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/files.j2 +0 -0
  143. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/fileset.j2 +0 -0
  144. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/questasim/project.mk.j2 +0 -0
  145. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/__init__.py +0 -0
  146. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
  147. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
  148. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/files.j2 +0 -0
  149. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/fileset.j2 +0 -0
  150. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/rivierapro/project.mk.j2 +0 -0
  151. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/__init__.py +0 -0
  152. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/cocotb.mk.j2 +0 -0
  153. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/dependencies.mk.j2 +0 -0
  154. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/files.j2 +0 -0
  155. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/fileset.j2 +0 -0
  156. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/pli.tab.j2 +0 -0
  157. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/project.mk.j2 +0 -0
  158. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
  159. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vivado/__init__.py +0 -0
  160. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vivado/launch_run.sh.j2 +0 -0
  161. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vivado/run.tcl.j2 +0 -0
  162. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/vivado/steps.tcl.j2 +0 -0
  163. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/__init__.py +0 -0
  164. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/cocotb.mk.j2 +0 -0
  165. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/dependencies.mk.j2 +0 -0
  166. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/files.j2 +0 -0
  167. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/fileset.j2 +0 -0
  168. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/resources/templates/xsim/project.mk.j2 +0 -0
  169. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/simplhdl.py +0 -0
  170. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/tools.py +0 -0
  171. {SimplHDL-0.0.4 → simplhdl-0.0.5}/src/simplhdl/utils.py +0 -0
  172. {SimplHDL-0.0.4 → simplhdl-0.0.5}/tests/test_dummy.py +0 -0
  173. {SimplHDL-0.0.4 → simplhdl-0.0.5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimplHDL
3
- Version: 0.0.4
3
+ Version: 0.0.5
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>
@@ -51,6 +51,7 @@ Requires-Dist: types-PyYAML
51
51
  Requires-Dist: argcomplete
52
52
  Requires-Dist: jinja2
53
53
  Requires-Dist: GitPython
54
+ Requires-Dist: rich
54
55
 
55
56
  ## Introduction
56
57
 
@@ -20,6 +20,7 @@ dependencies = [
20
20
  "argcomplete",
21
21
  "jinja2",
22
22
  "GitPython",
23
+ "rich",
23
24
  ]
24
25
  requires-python = ">=3.8"
25
26
  authors = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimplHDL
3
- Version: 0.0.4
3
+ Version: 0.0.5
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>
@@ -51,6 +51,7 @@ Requires-Dist: types-PyYAML
51
51
  Requires-Dist: argcomplete
52
52
  Requires-Dist: jinja2
53
53
  Requires-Dist: GitPython
54
+ Requires-Dist: rich
54
55
 
55
56
  ## Introduction
56
57
 
@@ -154,6 +154,7 @@ src/simplhdl/resources/templates/vcs/fileset.j2
154
154
  src/simplhdl/resources/templates/vcs/pli.tab.j2
155
155
  src/simplhdl/resources/templates/vcs/project.mk.j2
156
156
  src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2
157
+ src/simplhdl/resources/templates/vcs/vcs.parameters.j2
157
158
  src/simplhdl/resources/templates/vivado/__init__.py
158
159
  src/simplhdl/resources/templates/vivado/launch_run.sh.j2
159
160
  src/simplhdl/resources/templates/vivado/project.tcl.j2
@@ -5,6 +5,7 @@ types-PyYAML
5
5
  argcomplete
6
6
  jinja2
7
7
  GitPython
8
+ rich
8
9
 
9
10
  [:python_version < "3.9"]
10
11
  importlib-resources
@@ -0,0 +1 @@
1
+ __version__ = "0.0.5"
@@ -3,7 +3,7 @@ import logging
3
3
  import shutil
4
4
 
5
5
  from pathlib import Path
6
- from typing import Any, List, Dict
6
+ from typing import Any, List, Dict, Optional
7
7
  from argparse import Namespace
8
8
  from jinja2 import Template
9
9
  from simplhdl.pyedaa.project import Project
@@ -143,8 +143,6 @@ class QuestaSimFlow(SimulationFlow):
143
143
  args = set()
144
144
  if self.args.verbose == 0:
145
145
  args.add('-quiet')
146
- for name in self.get_libraries().keys():
147
- args.add(f"-L {name}")
148
146
  for name, value in self.project.Defines.items():
149
147
  args.add(f"+define+{name}={value}")
150
148
  return ' '.join(list(args) + [self.args.vlog_args])
@@ -171,13 +169,16 @@ class QuestaSimFlow(SimulationFlow):
171
169
  args.add(f"-g{name}={value}")
172
170
  for name, value in self.project.Parameters.items():
173
171
  args.add(f"-g{name}={value}")
174
- if self.args.gui or self.cocotb.enabled:
172
+ if self.args.gui or self.args.do or self.args.wave or self.cocotb.enabled:
175
173
  args.add('+acc=npr')
176
174
  return ' '.join(list(args) + [self.args.vopt_args])
177
175
 
178
176
  def vsim_args(self) -> str:
179
177
  args = set()
180
178
  args.add(f"-sv_seed {self.args.seed}")
179
+ timescale = self.timescale()
180
+ if timescale:
181
+ args.add(timescale)
181
182
  if self.args.verbose == 0:
182
183
  args.add('-quiet')
183
184
  for name, value in self.project.PlusArgs.items():
@@ -228,6 +229,16 @@ class QuestaSimFlow(SimulationFlow):
228
229
  # NOTE: Continue if no hook is registret
229
230
  pass
230
231
 
232
+ def timescale(self) -> Optional[str]:
233
+ """
234
+ Sets the timescale for VHDL based on the Verilog timescale
235
+ resolution.
236
+ """
237
+ if self.args.timescale.endswith('ps'):
238
+ return "-t ps"
239
+ elif self.args.timescale.endswith('fs'):
240
+ return "-t fs"
241
+
231
242
  def is_tool_setup(self) -> None:
232
243
  if (shutil.which('vlog') is None or
233
244
  shutil.which('vsim') is None or
@@ -97,7 +97,7 @@ class SimulationFlow(FlowBase):
97
97
  name = md5sum(fileset.Name)
98
98
  dependencies = []
99
99
  for language_fileset in [f for f in filelist if f.stem.startswith(name)]:
100
- for child in fileset.FileSets.values():
100
+ for child in fileset.Dependencies(usedin='simulation'):
101
101
  child_name = md5sum(child.Name)
102
102
  dependencies += [append_suffix(f, '.com').name for f in filelist
103
103
  if f.stem.startswith(child_name)]
@@ -3,6 +3,7 @@ import os
3
3
  import logging
4
4
  from pathlib import Path
5
5
  import shutil
6
+ import re
6
7
 
7
8
  from typing import Dict, Any, List
8
9
  from jinja2 import Template
@@ -95,13 +96,34 @@ class VcsFlow(SimulationFlow):
95
96
  globals['vhdlan_args'] = self.vhdlan_args()
96
97
  globals['vcs_args'] = self.vcs_args()
97
98
  globals['simv_args'] = self.simv_args()
99
+ globals['parameters'] = {**self.project.Generics, **self.project.Parameters}
100
+ globals['format'] = self.format
98
101
  return globals
99
102
 
103
+ def format(self, value: str) -> str:
104
+ """
105
+ Format the parameter value in relation to it's type.
106
+ """
107
+ isformat_a = re.compile(r"^\d+#[0-9a-gA-G]+#")
108
+ isformat_b = re.compile(r"^\d*'(h|d|b)[0-9a-fA-F]+")
109
+ isformat_c = re.compile(r"^\d+\.\d+")
110
+
111
+ if (
112
+ value.isnumeric() or
113
+ isformat_a.match(value) or
114
+ isformat_b.match(value) or
115
+ isformat_c.match(value)
116
+ ):
117
+ return value
118
+ else:
119
+ return f'"{value}"'
120
+
100
121
  def get_project_templates(self, environment) -> List[Template]:
101
122
  return [
102
123
  environment.get_template('Makefile.j2'),
103
124
  environment.get_template('synopsys_sim.setup.j2'),
104
- environment.get_template('project.mk.j2')
125
+ environment.get_template('project.mk.j2'),
126
+ environment.get_template('vcs.parameters.j2'),
105
127
  ]
106
128
 
107
129
  def get_cocotb_templates(self, environment):
@@ -161,10 +183,10 @@ class VcsFlow(SimulationFlow):
161
183
  args.add('-debug_access+all')
162
184
  if self.is_verdi():
163
185
  args.add('-kdb')
164
- for name, value in self.project.Generics.items():
165
- args.add(f"-pvalue+{name}={value}")
166
- for name, value in self.project.Parameters.items():
167
- args.add(f"-pvalue+{name}={value}")
186
+ parameters = {**self.project.Generics, **self.project.Parameters}
187
+ if parameters:
188
+ args.add('-gfile vcs.parameters -lca')
189
+
168
190
  return ' '.join(list(args) + [self.args.vcs_args])
169
191
 
170
192
  def simv_args(self) -> str:
@@ -1,3 +1,10 @@
1
+ from argparse import Namespace
2
+ from pathlib import Path
3
+ from rich.console import Console
4
+ from rich.tree import Tree
5
+ from rich.style import Style
6
+
7
+ from simplhdl.pyedaa.project import Project
1
8
  from .flow import FlowBase, FlowFactory
2
9
  from .pyedaa.attributes import UsedIn
3
10
  from .pyedaa.fileset import FileSet
@@ -6,6 +13,16 @@ from .pyedaa.fileset import FileSet
6
13
  @FlowFactory.register('info')
7
14
  class Info(FlowBase):
8
15
 
16
+ def __init__(self, name, args: Namespace, project: Project, builddir: Path):
17
+ super().__init__(name, args, project, builddir)
18
+ self.console = Console()
19
+ self.style = {
20
+ 'fileset': Style(color="color(4)", reverse=True),
21
+ 'ifile': Style(color="color(2)", reverse=False),
22
+ 'sfile': Style(color="color(3)", reverse=False),
23
+ 'file': Style(color="default", reverse=False),
24
+ }
25
+
9
26
  @classmethod
10
27
  def parse_args(self, subparsers) -> None:
11
28
  parser = subparsers.add_parser('info', help='Project infomations')
@@ -48,90 +65,98 @@ class Info(FlowBase):
48
65
  self.print_info()
49
66
 
50
67
  def print_files(self) -> None:
51
- print('FILES:')
68
+ self.console.print('FILES:')
52
69
  for file in self.project.DefaultDesign.Files():
53
- print(f"{file.Path}")
70
+ self.console.print(f"{file.Path}")
54
71
 
55
- def print_fileset(self, fileset: FileSet, level: int) -> None:
56
- indent = ' '*level
57
- print(f"{indent}{fileset.Name}")
72
+ def print_fileset(self, fileset: FileSet, level: Tree) -> None:
73
+ # indent = ' '*level
74
+ tree = level.add(f"[bold]{fileset.Name}[/bold] ({fileset.VHDLLibrary})", style=self.style['fileset'])
58
75
  for file in fileset.GetFiles():
59
- print(f"{indent} - {file.Path} {file[UsedIn]}")
76
+ if "implementation" in file[UsedIn] and "simulation" not in file[UsedIn]:
77
+ style = self.style['ifile']
78
+ elif "simulation" in file[UsedIn] and "implementation" not in file[UsedIn]:
79
+ style = self.style['sfile']
80
+ else:
81
+ style = self.style['file']
82
+
83
+ tree.add(f"{file.Path}", style=style)
60
84
  for child_filset in fileset.FileSets.values():
61
- self.print_fileset(child_filset, level+2)
85
+ self.print_fileset(child_filset, tree)
62
86
 
63
87
  def print_filesets(self) -> None:
64
- print('FILESETS:')
88
+ tree = Tree('FILESETS:')
65
89
  for fileset in self.project.DefaultDesign.FileSets.values():
66
- self.print_fileset(fileset, level=0)
90
+ self.print_fileset(fileset, tree)
91
+ self.console.print(tree)
67
92
 
68
93
  def print_hooks(self) -> None:
69
- print('HOOKS:')
94
+ self.console.print('HOOKS:')
70
95
  for name, value in self.project.Hooks.items():
71
- print(f" - {name}: {value}")
96
+ self.console.print(f" - {name}: {value}")
72
97
 
73
98
  def print_libraries(self) -> None:
74
- print('LIBRARIES:')
99
+ self.console.print('LIBRARIES:')
75
100
  for library in self.project.DefaultDesign.VHDLLibraries.values():
76
- print(f" - {library.Name}")
101
+ self.console.print(f" - {library.Name}")
77
102
 
78
103
  def print_parameters(self) -> None:
79
- print('PARAMETERS')
104
+ self.console.print('PARAMETERS')
80
105
  for name, value in self.project.Parameters.items():
81
- print(f" - {name}: {value}")
106
+ self.console.print(f" - {name}: {value}")
82
107
 
83
108
  def print_generics(self) -> None:
84
- print('GENERICS')
109
+ self.console.print('GENERICS')
85
110
  for name, value in self.project.Generics.items():
86
- print(f" - {name}: {value}")
111
+ self.console.print(f" - {name}: {value}")
87
112
 
88
113
  def print_defines(self) -> None:
89
- print('DEFINES')
114
+ self.console.print('DEFINES')
90
115
  for name, value in self.project.Defines.items():
91
- print(f" - {name}: {value}")
116
+ self.console.print(f" - {name}: {value}")
92
117
 
93
118
  def print_plusargs(self) -> None:
94
- print('PLUSARGS')
119
+ self.console.print('PLUSARGS')
95
120
  for name, value in self.project.PlusArgs.items():
96
- print(f" - {name}: {value}")
121
+ self.console.print(f" - {name}: {value}")
97
122
 
98
123
  def print_toplevels(self) -> None:
99
- print('TOPLEVELS')
124
+ self.console.print('TOPLEVELS')
100
125
  for top in self.project.DefaultDesign.TopLevel.split():
101
- print(f" - {top}")
126
+ self.console.print(f" - {top}")
102
127
 
103
128
  def print_resources(self) -> None:
104
- print('RESOURCES')
129
+ self.console.print('RESOURCES')
105
130
  for resource in self.project.DefaultDesign.ExternalVHDLLibraries.values():
106
- print(f" - {resource.Name}: {resource.Path}")
131
+ self.console.print(f" - {resource.Name}: {resource.Path}")
107
132
 
108
133
  def print_project(self) -> None:
109
- print('PROJECTNAME')
110
- print(f" - {self.project.Name}")
134
+ self.console.print('PROJECTNAME')
135
+ self.console.print(f" - {self.project.Name}")
111
136
 
112
137
  def print_part(self) -> None:
113
- print('PART')
114
- print(f" - {self.project.Part}")
138
+ self.console.print('PART')
139
+ self.console.print(f" - {self.project.Part}")
115
140
 
116
141
  def print_info(self) -> None:
117
142
  self.print_project()
118
- print()
143
+ self.console.print()
119
144
  self.print_part()
120
- print()
145
+ self.console.print()
121
146
  self.print_toplevels()
122
- print()
147
+ self.console.print()
123
148
  self.print_plusargs()
124
- print()
149
+ self.console.print()
125
150
  self.print_defines()
126
- print()
151
+ self.console.print()
127
152
  self.print_parameters()
128
- print()
153
+ self.console.print()
129
154
  self.print_generics()
130
- print()
155
+ self.console.print()
131
156
  self.print_hooks()
132
- print()
157
+ self.console.print()
133
158
  self.print_resources()
134
- print()
159
+ self.console.print()
135
160
  self.print_libraries()
136
- print()
161
+ self.console.print()
137
162
  self.print_filesets()
@@ -47,7 +47,10 @@ class HDLSourceFile(pm.HDLSourceFile, FileMixIn):
47
47
 
48
48
  @property
49
49
  def Library(self) -> HDLLibrary:
50
- return self._library
50
+ if self._library is not None:
51
+ return self._library
52
+ elif self.FileSet.VHDLLibrary is not None:
53
+ return self.FileSet.VHDLLibrary
51
54
 
52
55
  @Library.setter
53
56
  def Library(self, value) -> None:
@@ -1,6 +1,8 @@
1
1
  import pyEDAA.ProjectModel as pm # type: ignore
2
+ from simplhdl.pyedaa.attributes import UsedIn
3
+ from simplhdl.pyedaa import File
2
4
 
3
- from typing import Dict, Generator
5
+ from typing import Dict, Generator, List, Optional
4
6
 
5
7
 
6
8
  class FileSet(pm.FileSet):
@@ -31,7 +33,7 @@ class FileSet(pm.FileSet):
31
33
  def VHDLLibrary(self, value: 'VHDLLibrary') -> None:
32
34
  self._vhdlLibrary = value
33
35
 
34
- def GetFiles(self) -> Generator[pm.File, None, None]:
36
+ def GetFiles(self) -> Generator[File, None, None]:
35
37
  for file in self._files:
36
38
  yield file
37
39
 
@@ -44,10 +46,26 @@ class FileSet(pm.FileSet):
44
46
  libraries.update(fileset.VHDLLibraries)
45
47
  return libraries
46
48
 
47
- def InsertFile(self, position: int, file: pm.File) -> None:
49
+ def InsertFile(self, position: int, file: File) -> None:
48
50
  # file.FileSet = self
49
51
  self._files.insert(position, file)
50
52
 
51
- def InsertFileAfter(self, listfile: pm.File, newfile: pm.File) -> None:
53
+ def InsertFileAfter(self, listfile: File, newfile: File) -> None:
52
54
  position = self._files.index(listfile)
53
55
  self.InsertFile(position, newfile)
56
+
57
+ def Dependencies(self, usedin: Optional[str] = None, isrecursive: bool = False) -> List['FileSet']:
58
+ """
59
+ Return a list of filesets that this fileset depends on. if dependent fileset is empty search recursive
60
+ in children until a fileset that is not empty is found.
61
+ """
62
+ if isrecursive:
63
+ files = [f for f in self.GetFiles()]
64
+ if usedin:
65
+ files = [f for f in files if usedin in f[UsedIn]]
66
+ if files:
67
+ return [self]
68
+ dependencies = list()
69
+ for fileset in self.FileSets.values():
70
+ dependencies += fileset.Dependencies(usedin=usedin, isrecursive=True)
71
+ return dependencies
@@ -6,11 +6,11 @@ VOPT := vopt
6
6
  VSIM := vsim
7
7
 
8
8
  VLIB_FLAGS :=
9
- VMAP_FLAGS := {{vmap_args}}
10
- VCOM_FLAGS := {{vcom_args}}
11
- VLOG_FLAGS := {{vlog_args}}
12
- VOPT_FLAGS := {{vopt_args}}
13
- VSIM_FLAGS := {{vsim_args}}
9
+ VMAP_FLAGS := {{vmap_args|replace('#', '\#')}}
10
+ VCOM_FLAGS := {{vcom_args|replace('#', '\#')}}
11
+ VLOG_FLAGS := {{vlog_args|replace('#', '\#')}}
12
+ VOPT_FLAGS := {{vopt_args|replace('#', '\#')}}
13
+ VSIM_FLAGS := {{vsim_args|replace('#', '\#')}}
14
14
 
15
15
  VOPT_DESIGN ?= simvopt
16
16
 
@@ -29,6 +29,8 @@ endif
29
29
  simulate: $(VOPT_DESIGN)
30
30
  $(VSIM) $(VSIM_FLAGS) $< -c $(DO_CMD)
31
31
 
32
+ elaborate: $(VOPT_DESIGN)
33
+
32
34
  $(VOPT_DESIGN): compile
33
35
  $(VOPT) $(VOPT_FLAGS) $(TOPLEVELS) -o $@
34
36
 
@@ -7,11 +7,11 @@ VOPT := :
7
7
  VSIM := vsim
8
8
 
9
9
  VLIB_FLAGS :=
10
- VMAP_FLAGS := {{vmap_args}}
11
- VCOM_FLAGS := {{vcom_args}}
12
- VLOG_FLAGS := {{vlog_args}}
13
- VOPT_FLAGS := {{vopt_args}}
14
- VSIM_FLAGS := {{vsim_args}}
10
+ VMAP_FLAGS := {{vmap_args|replace('#', '\#')}}
11
+ VCOM_FLAGS := {{vcom_args|replace('#', '\#')}}
12
+ VLOG_FLAGS := {{vlog_args|replace('#', '\#')}}
13
+ VOPT_FLAGS := {{vopt_args|replace('#', '\#')}}
14
+ VSIM_FLAGS := {{vsim_args|replace('#', '\#')}}
15
15
 
16
16
  VOPT_DESIGN ?= simvopt
17
17
 
@@ -8,10 +8,10 @@ UVM := uvm.com
8
8
  UVM :=
9
9
  {% endif %}
10
10
 
11
- VLOGAN_FLAGS := -full64 +warn=noLNX_OS_VERUN {{vlogan_args}}
12
- VHDLAN_FLAGS := -full64 {{vhdlan_args}}
13
- VCS_FLAGS := -full64 -licqueue +warn=noLINX_KRNL {{vcs_args}}
14
- SIMV_FLAGS := -licqueue {{simv_args}}
11
+ VLOGAN_FLAGS := -full64 +warn=noLNX_OS_VERUN {{vlogan_args|replace('#', '\#')}}
12
+ VHDLAN_FLAGS := -full64 {{vhdlan_args|replace('#', '\#')}}
13
+ VCS_FLAGS := -full64 -licqueue +warn=noLINX_KRNL {{vcs_args|replace('#', '\#')}}
14
+ SIMV_FLAGS := -licqueue {{simv_args|replace('#', '\#')}}
15
15
 
16
16
  include project.mk
17
17
  -include cocotb.mk
@@ -0,0 +1,3 @@
1
+ {% for name, value in parameters.items() %}
2
+ assign {{format(value)}} {{name}}
3
+ {% endfor %}
@@ -85,7 +85,7 @@ read_verilog -sv "{{file.Path}}"
85
85
  {% elif file.FileType == VerilogSourceFile %}
86
86
  read_verilog "{{file.Path}}"
87
87
  {% elif file.FileType == VHDLSourceFile %}
88
- read_vhdl -vhdl2008 "{{file.Path}}"
88
+ read_vhdl -vhdl2008 -library {{file.Library}} "{{file.Path}}"
89
89
  {% elif file.FileType == ConstraintFile %}
90
90
  read_xdc "{{file.Path}}"
91
91
  {% elif file.FileType == VivadoIPSpecificationFile %}
@@ -3,10 +3,10 @@ XVHDL := xvhdl
3
3
  XELAB := xelab
4
4
  XSIM := xsim
5
5
 
6
- XVLOG_FLAGS := {{xvlog_args}}
7
- XVHDL_FLAGS := {{xvhdl_args}}
8
- XELAB_FLAGS := {{xelab_args}}
9
- XSIM_FLAGS := {{xsim_args}}
6
+ XVLOG_FLAGS := {{xvlog_args|replace('#', '\#')}}
7
+ XVHDL_FLAGS := {{xvhdl_args|replace('#', '\#')}}
8
+ XELAB_FLAGS := {{xelab_args|replace('#', '\#')}}
9
+ XSIM_FLAGS := {{xsim_args|replace('#', '\#')}}
10
10
 
11
11
  include project.mk
12
12
  -include cocotb.mk
@@ -1 +0,0 @@
1
- __version__ = "0.0.4"
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