SimplHDL 0.6.0__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. {simplhdl-0.6.0 → simplhdl-0.7.0}/PKG-INFO +3 -1
  2. {simplhdl-0.6.0 → simplhdl-0.7.0}/pyproject.toml +2 -0
  3. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/PKG-INFO +3 -1
  4. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/requires.txt +2 -0
  5. simplhdl-0.7.0/src/simplhdl/__init__.py +1 -0
  6. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/cocotb.py +20 -3
  7. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/quartusflow.py +3 -2
  8. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/questasim/questasimflow.py +1 -0
  9. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/simulationflow.py +8 -3
  10. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/vivadoflow.py +3 -2
  11. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generators/systemrdl.py +83 -14
  12. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/__init__.py +2 -1
  13. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/attributes.py +5 -0
  14. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/vhdllibrary.py +12 -3
  15. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/quartus/project.tcl.j2 +4 -0
  16. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/questasim/project.qrun.j2 +3 -3
  17. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vivado/project.tcl.j2 +20 -4
  18. simplhdl-0.6.0/src/simplhdl/__init__.py +0 -1
  19. {simplhdl-0.6.0 → simplhdl-0.7.0}/.github/workflows/publish.yml +0 -0
  20. {simplhdl-0.6.0 → simplhdl-0.7.0}/.gitignore +0 -0
  21. {simplhdl-0.6.0 → simplhdl-0.7.0}/.readthedocs.yaml +0 -0
  22. {simplhdl-0.6.0 → simplhdl-0.7.0}/LICENSE +0 -0
  23. {simplhdl-0.6.0 → simplhdl-0.7.0}/README.md +0 -0
  24. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/_static/simplhdl_dark.png +0 -0
  25. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/_static/simplhdl_light.png +0 -0
  26. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/_static/simplhdl_light_1.png +0 -0
  27. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/conf.py +0 -0
  28. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/drawing.svg +0 -0
  29. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/ghdl.rst +0 -0
  30. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/icarus.rst +0 -0
  31. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/quartus.rst +0 -0
  32. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/questasim.rst +0 -0
  33. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/vcs.rst +0 -0
  34. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/vivado.rst +0 -0
  35. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows/xsim.rst +0 -0
  36. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/flows.rst +0 -0
  37. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/index.rst +0 -0
  38. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/intel-ips.md +0 -0
  39. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/introduction.rst +0 -0
  40. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/plugins.rst +0 -0
  41. {simplhdl-0.6.0 → simplhdl-0.7.0}/docs/requirements.txt +0 -0
  42. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/adder.yml +0 -0
  43. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/hdl/adder.sv +0 -0
  44. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/sim/testbench.sv +0 -0
  45. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/sim/testbench.yml +0 -0
  46. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/syn/build.yml +0 -0
  47. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/syn/placement.xdc +0 -0
  48. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/syn/timing.xdc +0 -0
  49. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/adder/syn/top.sv +0 -0
  50. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/alu.yml +0 -0
  51. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/hdl/add.sv +0 -0
  52. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/hdl/alu.sv +0 -0
  53. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/hdl/mul.sv +0 -0
  54. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/hdl/sub.sv +0 -0
  55. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -0
  56. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -0
  57. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -0
  58. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -0
  59. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -0
  60. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -0
  61. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -0
  62. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -0
  63. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -0
  64. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -0
  65. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -0
  66. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/test/__init__.py +0 -0
  67. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/test/env.py +0 -0
  68. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -0
  69. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/test/test.py +0 -0
  70. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/pyuvm/testbench.py +0 -0
  71. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -0
  72. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -0
  73. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -0
  74. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -0
  75. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -0
  76. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -0
  77. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -0
  78. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -0
  79. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -0
  80. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -0
  81. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -0
  82. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -0
  83. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -0
  84. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -0
  85. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -0
  86. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -0
  87. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -0
  88. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/syn/build.yml +0 -0
  89. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/syn/placement.xdc +0 -0
  90. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/alu/syn/timing.xdc +0 -0
  91. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/hello/build.sbt +0 -0
  92. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/hello/hello.yml +0 -0
  93. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/hello/src/main/scala/Hello.scala +0 -0
  94. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/hdl/hello/syn/build.yml +0 -0
  95. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/plugins/simple_parser/setup.py +0 -0
  96. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -0
  97. {simplhdl-0.6.0 → simplhdl-0.7.0}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -0
  98. {simplhdl-0.6.0 → simplhdl-0.7.0}/setup.cfg +0 -0
  99. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/SOURCES.txt +0 -0
  100. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
  101. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/entry_points.txt +0 -0
  102. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/SimplHDL.egg-info/top_level.txt +0 -0
  103. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/__main__.py +0 -0
  104. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flow.py +0 -0
  105. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/__init__.py +0 -0
  106. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/encrypt/__init__.py +0 -0
  107. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/encrypt/encryptflow.py +0 -0
  108. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/flake8/flake8flow.py +0 -0
  109. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/implementationflow.py +0 -0
  110. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/lint/lintflow.py +0 -0
  111. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/modelsim/__init__.py +0 -0
  112. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/modelsim/modelsimflow.py +0 -0
  113. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/quartusdse/__init__.py +0 -0
  114. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/quartusdse/quartusdseflow.py +0 -0
  115. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/quartusexport/__init__.py +0 -0
  116. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/quartusexport/quartusexportflow.py +0 -0
  117. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/questasim/__init__.py +0 -0
  118. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/rivierapro/__init__.py +0 -0
  119. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/rivierapro/rivieraproflow.py +0 -0
  120. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/vcs/__init__.py +0 -0
  121. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/vcs/vcsflow.py +0 -0
  122. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/verible/__init__.py +0 -0
  123. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/verible/veribleflow.py +0 -0
  124. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/vsg/__init__.py +0 -0
  125. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/vsg/vsgflow.py +0 -0
  126. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/xsim/__init__.py +0 -0
  127. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/flows/xsim/xsimflow.py +0 -0
  128. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generator.py +0 -0
  129. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generators/__init__.py +0 -0
  130. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generators/chisel.py +0 -0
  131. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generators/ipxact.py +0 -0
  132. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/generators/spd.py +0 -0
  133. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/info.py +0 -0
  134. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/parser.py +0 -0
  135. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/parsers/__init__.py +0 -0
  136. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/parsers/fusesocparser.py +0 -0
  137. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/parsers/simplhdlparser.py +0 -0
  138. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/plugins.py +0 -0
  139. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/design.py +0 -0
  140. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/fileset.py +0 -0
  141. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/filetypes.py +0 -0
  142. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/project.py +0 -0
  143. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/pyedaa/target.py +0 -0
  144. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/repo.py +0 -0
  145. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/__init__.py +0 -0
  146. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/__init__.py +0 -0
  147. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/flake8/__init__.py +0 -0
  148. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/flake8/setup.cfg.j2 +0 -0
  149. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/Makefile.j2 +0 -0
  150. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/__init__.py +0 -0
  151. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/cocotb.mk.j2 +0 -0
  152. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/dependencies.mk.j2 +0 -0
  153. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/files.j2 +0 -0
  154. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/fileset.j2 +0 -0
  155. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/modelsim.tcl.j2 +0 -0
  156. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/project.mk.j2 +0 -0
  157. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/modelsim/run.do.j2 +0 -0
  158. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/quartus/__init__.py +0 -0
  159. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/quartus/run.tcl.j2 +0 -0
  160. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/questasim/__init__.py +0 -0
  161. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2 +0 -0
  162. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/questasim/visualizer.tcl.j2 +0 -0
  163. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/questasim/vsim-run.do.j2 +0 -0
  164. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/Makefile.j2 +0 -0
  165. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/__init__.py +0 -0
  166. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
  167. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
  168. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/files.j2 +0 -0
  169. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/fileset.j2 +0 -0
  170. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/rivierapro/project.mk.j2 +0 -0
  171. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/Makefile.j2 +0 -0
  172. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/__init__.py +0 -0
  173. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/cocotb.mk.j2 +0 -0
  174. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/dependencies.mk.j2 +0 -0
  175. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/files.j2 +0 -0
  176. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/fileset.j2 +0 -0
  177. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/pli.tab.j2 +0 -0
  178. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/project.mk.j2 +0 -0
  179. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/simv-run.do.j2 +0 -0
  180. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
  181. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vcs/vcs.parameters.j2 +0 -0
  182. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/verible/__init__.py +0 -0
  183. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/verible/rules.cfg.j2 +0 -0
  184. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vivado/__init__.py +0 -0
  185. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vivado/launch_run.sh.j2 +0 -0
  186. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vivado/run.tcl.j2 +0 -0
  187. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vivado/steps.tcl.j2 +0 -0
  188. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vsg/__init__.py +0 -0
  189. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vsg/files.json.j2 +0 -0
  190. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/vsg/rules.yml.j2 +0 -0
  191. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/Makefile.j2 +0 -0
  192. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/__init__.py +0 -0
  193. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/cocotb.mk.j2 +0 -0
  194. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/dependencies.mk.j2 +0 -0
  195. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/files.j2 +0 -0
  196. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/fileset.j2 +0 -0
  197. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/resources/templates/xsim/project.mk.j2 +0 -0
  198. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/run.py +0 -0
  199. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/simplhdl.py +0 -0
  200. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/tools.py +0 -0
  201. {simplhdl-0.6.0 → simplhdl-0.7.0}/src/simplhdl/utils.py +0 -0
  202. {simplhdl-0.6.0 → simplhdl-0.7.0}/tests/test_dummy.py +0 -0
  203. {simplhdl-0.6.0 → simplhdl-0.7.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimplHDL
3
- Version: 0.6.0
3
+ Version: 0.7.0
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>
@@ -58,6 +58,8 @@ Requires-Dist: flake8
58
58
  Requires-Dist: black
59
59
  Requires-Dist: systemrdl-compiler
60
60
  Requires-Dist: peakrdl-html
61
+ Requires-Dist: peakrdl-regblock
62
+ Requires-Dist: peakrdl-pyuvm
61
63
  Dynamic: license-file
62
64
 
63
65
  ## Introduction
@@ -26,6 +26,8 @@ dependencies = [
26
26
  "black",
27
27
  "systemrdl-compiler",
28
28
  "peakrdl-html",
29
+ "peakrdl-regblock",
30
+ "peakrdl-pyuvm",
29
31
  ]
30
32
  requires-python = ">=3.8"
31
33
  authors = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimplHDL
3
- Version: 0.6.0
3
+ Version: 0.7.0
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>
@@ -58,6 +58,8 @@ Requires-Dist: flake8
58
58
  Requires-Dist: black
59
59
  Requires-Dist: systemrdl-compiler
60
60
  Requires-Dist: peakrdl-html
61
+ Requires-Dist: peakrdl-regblock
62
+ Requires-Dist: peakrdl-pyuvm
61
63
  Dynamic: license-file
62
64
 
63
65
  ## Introduction
@@ -11,6 +11,8 @@ flake8
11
11
  black
12
12
  systemrdl-compiler
13
13
  peakrdl-html
14
+ peakrdl-regblock
15
+ peakrdl-pyuvm
14
16
 
15
17
  [:python_version < "3.9"]
16
18
  importlib-resources
@@ -0,0 +1 @@
1
+ __version__ = "0.7.0"
@@ -2,6 +2,8 @@ import logging
2
2
  import re
3
3
  import os
4
4
 
5
+ from packaging.version import Version
6
+ from pkg_resources import get_distribution
5
7
  from pathlib import Path
6
8
  from typing import Optional, Dict
7
9
 
@@ -15,8 +17,9 @@ logger = logging.getLogger(__name__)
15
17
 
16
18
  class Cocotb:
17
19
 
18
- def __init__(self, project: Project) -> None:
20
+ def __init__(self, project: Project, seed: int) -> None:
19
21
  self.project = project
22
+ self.seed = seed
20
23
  self.top = self.module()
21
24
  self.dut = self.get_dut()
22
25
  self.toplevels = self.hdltoplevels()
@@ -36,6 +39,13 @@ class Cocotb:
36
39
  raise FileNotFoundError(f"{path}: not found")
37
40
  return path
38
41
 
42
+ def pythonbin(self) -> str:
43
+ output = sh(['cocotb-config', '--python-bin'])
44
+ path = Path(output)
45
+ if not path.exists():
46
+ raise FileNotFoundError(f"{path}: not found")
47
+ return path
48
+
39
49
  def module(self) -> Optional[str]:
40
50
  if not self.enabled:
41
51
  return None
@@ -140,9 +150,16 @@ class Cocotb:
140
150
  return f'-pli {lib_name_path}'
141
151
 
142
152
  def env(self) -> Dict[str, str]:
153
+ cocotb_version = Version(get_distribution('cocotb').version)
143
154
  e = os.environ.copy()
144
- e['MODULE'] = self.top
145
- e['TOPLEVEL'] = self.dut
155
+ if cocotb_version >= Version('2.0.0'):
156
+ e['COCOTB_TEST_MODULES'] = self.top
157
+ e['COCOTB_TOPLEVEL'] = self.dut
158
+ e['PYGPI_PYTHON_BIN'] = self.pythonbin()
159
+ e['COCOTB_RANDOM_SEED'] = str(self.seed)
160
+ else:
161
+ e['MODULE'] = self.top
162
+ e['TOPLEVEL'] = self.dut
146
163
  e['PYTHONPYCACHEPREFIX'] = './pycache'
147
164
  e['LIBPYTHON_LOC'] = self.libpython()
148
165
  if self.duttype == VHDLSourceFile:
@@ -34,7 +34,7 @@ from ..pyedaa import (
34
34
  QuartusSourceTCLFile
35
35
  )
36
36
  from ..pyedaa.project import Project
37
- from ..pyedaa.attributes import UsedIn
37
+ from ..pyedaa.attributes import UsedIn, Scope
38
38
 
39
39
  logger = logging.getLogger(__name__)
40
40
 
@@ -130,7 +130,8 @@ class QuartusFlow(ImplementationFlow):
130
130
  QuartusIniFile=QuartusIniFile,
131
131
  MemoryInitFile=MemoryInitFile,
132
132
  project=self.project,
133
- UsedIn=UsedIn)
133
+ UsedIn=UsedIn,
134
+ Scope=Scope)
134
135
  template = environment.get_template('run.tcl.j2')
135
136
  generate_from_template(template, self.builddir,
136
137
  project=self.project)
@@ -362,6 +362,7 @@ class QuestaSimFlow(SimulationFlow):
362
362
  shutil.copy(file.Path.absolute(), self.builddir.absolute())
363
363
 
364
364
  def generate(self):
365
+ self.check_external_libraries()
365
366
  templatedir = resources_files(self.templates)
366
367
  env = Environment(
367
368
  loader=FileSystemLoader(templatedir),
@@ -35,7 +35,7 @@ class SimulationFlow(FlowBase):
35
35
  self.hashfile = self.builddir.joinpath('filesets.hash')
36
36
 
37
37
  def run(self) -> None:
38
- self.cocotb = Cocotb(self.project)
38
+ self.cocotb = Cocotb(self.project, self.args.seed)
39
39
  self.validate()
40
40
  self.configure()
41
41
  self.generate()
@@ -52,8 +52,6 @@ class SimulationFlow(FlowBase):
52
52
  os.makedirs(self.builddir, exist_ok=True)
53
53
  self.is_tool_setup()
54
54
  os.environ['RANDOM_SEED'] = str(self.args.seed)
55
- if self.cocotb.enabled:
56
- os.environ['MODULE'] = self.cocotb.module()
57
55
 
58
56
  def get_globals(self) -> Dict[str, Any]:
59
57
  incdirs = self.project.DefaultDesign.DefaultFileSet.IncludeDirs(usedin='simulation', isrecursive=True)
@@ -76,7 +74,14 @@ class SimulationFlow(FlowBase):
76
74
  globals['isinstance'] = isinstance
77
75
  return globals
78
76
 
77
+ def check_external_libraries(self):
78
+ for library in self.project.DefaultDesign.ExternalVHDLLibraries.values():
79
+ print(f"{library.Name}: {library.Path}")
80
+ if not library.Path.exists():
81
+ raise FlowError(f"External library {library.Name} doesn't exist at {library.Path.absolute()}")
82
+
79
83
  def generate(self):
84
+ self.check_external_libraries()
80
85
  templatedir = resources_files(self.templates)
81
86
  env = Environment(
82
87
  loader=FileSystemLoader(templatedir),
@@ -16,7 +16,7 @@ from ..pyedaa import (VivadoIPSpecificationFile, VerilogIncludeFile, VerilogSour
16
16
  SystemVerilogSourceFile, VHDLSourceFile, ConstraintFile,
17
17
  EDIFNetlistFile, NetlistFile, VivadoBDTclFile, VivadoProjectStepFile)
18
18
  from ..pyedaa.project import Project
19
- from ..pyedaa.attributes import UsedIn
19
+ from ..pyedaa.attributes import UsedIn, Scope
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
22
 
@@ -118,7 +118,8 @@ class VivadoFlow(FlowBase):
118
118
  EDIFNetlistFile=EDIFNetlistFile,
119
119
  NetlistFile=NetlistFile,
120
120
  project=self.project,
121
- UsedIn=UsedIn)
121
+ UsedIn=UsedIn,
122
+ Scope=Scope)
122
123
  template = environment.get_template('run.tcl.j2')
123
124
  generate_from_template(template, self.builddir,
124
125
  project=self.project)
@@ -8,17 +8,25 @@ from systemrdl import RDLCompiler, RDLCompileError, RDLListener, RDLWalker
8
8
  from systemrdl.node import AddrmapNode
9
9
  from systemrdl.rdltypes import AccessType, OnReadType, OnWriteType
10
10
  from peakrdl_html import HTMLExporter
11
+ from peakrdl_regblock.exporter import RegblockExporter
12
+ from peakrdl_regblock.cpuif.axi4lite import AXI4Lite_Cpuif_flattened
13
+ from peakrdl_regblock.udps import ALL_UDPS
14
+ from peakrdl_pyuvm.exporter import PyUVMExporter
11
15
 
16
+ from ..pyedaa.fileset import FileSet
12
17
  from ..generator import GeneratorFactory, GeneratorBase
13
- from ..pyedaa import SystemRDLSourceFile, SystemVerilogSourceFile, VerilogSourceFile
14
- from ..flow import FlowBase
18
+ from ..pyedaa import SystemRDLSourceFile, SystemVerilogSourceFile, VerilogSourceFile, CocotbPythonFile
19
+ from ..flow import FlowBase, FlowCategory
15
20
 
16
21
 
17
22
  logger = logging.getLogger(__name__)
18
23
 
19
- seennodes: List[AddrmapNode] = []
20
- addrmapnodes: List[AddrmapNode] = []
21
- hierachymapnodes: List[AddrmapNode] = []
24
+ seennodetypes: List[AddrmapNode] = []
25
+ leafnodetypes: List[AddrmapNode] = []
26
+ hierachynodetypes: List[AddrmapNode] = []
27
+ leafnodes: List[AddrmapNode] = []
28
+ hierachynodes: List[AddrmapNode] = []
29
+ nodes: List[AddrmapNode] = []
22
30
 
23
31
 
24
32
  class Environment(jinja2.Environment):
@@ -33,13 +41,18 @@ class Environment(jinja2.Environment):
33
41
 
34
42
  class Listener(RDLListener):
35
43
  def exit_Addrmap(self, node: AddrmapNode):
36
- seen = [n for n in seennodes if n.type_name == node.type_name]
44
+ nodes.append(node)
45
+ if is_leaf(node):
46
+ leafnodes.append(node)
47
+ else:
48
+ hierachynodes.append(node)
49
+ seen = [n for n in seennodetypes if n.type_name == node.type_name]
37
50
  if not seen:
38
- seennodes.append(node)
39
- if AddrmapNode not in [type(c) for c in node.children()]:
40
- addrmapnodes.append(node)
51
+ seennodetypes.append(node)
52
+ if is_leaf(node):
53
+ leafnodetypes.append(node)
41
54
  else:
42
- hierachymapnodes.append(node)
55
+ hierachynodetypes.append(node)
43
56
 
44
57
 
45
58
  def get_template_dirs() -> List[Path]:
@@ -143,10 +156,27 @@ def get_field_access(field) -> str: # noqa: C901
143
156
  return "NOACCESS"
144
157
 
145
158
 
159
+ def is_leaf(node):
160
+ """
161
+ Check if node is leaf, meaning it has no children address maps
162
+ """
163
+ if AddrmapNode not in [type(c) for c in node.children()]:
164
+ return True
165
+ else:
166
+ return False
167
+
168
+
169
+ def mask(node):
170
+ m = ~(node.size - 1) & 0xFFFFFFFF
171
+ return m
172
+
173
+
146
174
  @GeneratorFactory.register('SystemRDL')
147
175
  class SystemRDL(GeneratorBase):
148
176
 
149
- def render_template(self, template, node, outputdir) -> Path:
177
+ def render_template(self, template: jinja2.Template, node, outputdir) -> Path:
178
+ if not template.filename.endswith('.j2'):
179
+ return
150
180
  context = template.render(node=node)
151
181
  outputdir.mkdir(parents=True, exist_ok=True)
152
182
  outputfile: Path = outputdir.joinpath(f'{node.type_name}__{Path(template.filename).name[:-3]}').absolute()
@@ -159,6 +189,26 @@ class SystemRDL(GeneratorBase):
159
189
  if outputfile.suffix == '.v':
160
190
  fileset.InsertFileAfter(rdlfile, VerilogSourceFile(outputfile))
161
191
 
192
+ def peakrdl_template(self, node, outputdir) -> None:
193
+ RegblockExporter().export(
194
+ node=node,
195
+ output_dir=str(outputdir.absolute()),
196
+ cpuif_cls=AXI4Lite_Cpuif_flattened,
197
+ module_name=f'{node.type_name}_addrmap',
198
+ package_name=f'{node.type_name}_pkg',
199
+ address_width=32,
200
+ default_reset_activelow=True
201
+
202
+ )
203
+ modulefile: Path = outputdir.joinpath(f'{node.type_name}_pkg.sv').absolute()
204
+ packetfile: Path = outputdir.joinpath(f'{node.type_name}_addrmap.sv').absolute()
205
+ rdlfile = self.project.DefaultDesign.GetFile(node.inst.def_src_ref.path)
206
+ parent_fileset = rdlfile.FileSet
207
+ fileset = FileSet(name=rdlfile.Path, vhdlLibrary=parent_fileset.VHDLLibrary)
208
+ fileset.AddFile(SystemVerilogSourceFile(modulefile))
209
+ fileset.AddFile(SystemVerilogSourceFile(packetfile))
210
+ parent_fileset.AddFileSet(fileset)
211
+
162
212
  def run(self, flow: FlowBase):
163
213
  rdlfiles = list(self.project.DefaultDesign.DefaultFileSet.Files(fileType=SystemRDLSourceFile))
164
214
  output_dir = self.builddir.joinpath('systemrdl')
@@ -167,6 +217,10 @@ class SystemRDL(GeneratorBase):
167
217
  return
168
218
 
169
219
  rdlc = RDLCompiler()
220
+
221
+ for udp in ALL_UDPS:
222
+ rdlc.register_udp(udp)
223
+
170
224
  try:
171
225
  for rdlfile in rdlfiles:
172
226
  rdlc.compile_file(rdlfile.Path, defines=self.project.Defines)
@@ -188,15 +242,30 @@ class SystemRDL(GeneratorBase):
188
242
  loader=jinja2.FileSystemLoader(templatedir),
189
243
  trim_blocks=True)
190
244
  env.globals['hex'] = hex
245
+ env.globals['len'] = len
191
246
  env.globals['get_field_access'] = get_field_access
192
247
  env.globals['get_reg_access'] = get_reg_access
248
+ env.globals['nodes'] = nodes
249
+ env.globals['leafnodes'] = leafnodes
250
+ env.globals['hierachynodes'] = hierachynodes
251
+ env.globals['is_leaf'] = is_leaf
252
+ env.globals['mask'] = mask
193
253
  template = env.find_template('registermap')
194
- for node in addrmapnodes:
254
+ for node in leafnodetypes:
195
255
  self.render_template(template=template, node=node, outputdir=sub_dir)
256
+ self.peakrdl_template(node=node, outputdir=output_dir.joinpath('hdl'))
196
257
 
197
258
  template = env.find_template('hierachymap')
198
- for node in hierachymapnodes:
259
+ for node in hierachynodetypes:
199
260
  self.render_template(template=template, node=node, outputdir=sub_dir)
200
261
 
262
+ if flow.category == FlowCategory.SIMULATION:
263
+ logger.info("Generate PyUVM Register Model")
264
+ output = output_dir.joinpath('pyuvm', 'ralmodel.py')
265
+ output.parent.mkdir(parents=True, exist_ok=True)
266
+ PyUVMExporter().export(root, str(output))
267
+ fileset = rdlfiles[-1].FileSet
268
+ fileset.InsertFileAfter(rdlfile, CocotbPythonFile(output))
269
+
201
270
  logger.info("Generate HTML Documentation")
202
- _ = HTMLExporter().export(root, output_dir.joinpath('docs'))
271
+ HTMLExporter().export(root, output_dir.joinpath('docs'))
@@ -3,7 +3,7 @@ import pyEDAA.ProjectModel as pm
3
3
  from pathlib import Path
4
4
  from typing import Optional
5
5
  from pyTooling.MetaClasses import ExtendedType
6
- from .attributes import Encrypt, UsedIn, SIMULATION, IMPLEMENTATION
6
+ from .attributes import Encrypt, UsedIn, SIMULATION, IMPLEMENTATION, Scope
7
7
 
8
8
 
9
9
  class FileMixIn(metaclass=ExtendedType, mixin=True):
@@ -176,6 +176,7 @@ class ConstraintFile(pm.ConstraintFile, FileMixIn):
176
176
  super()._registerAttributes()
177
177
  FileMixIn._registerAttributes(self)
178
178
  self[UsedIn] = {IMPLEMENTATION}
179
+ self[Scope] = None
179
180
 
180
181
 
181
182
  class QuartusSignalTapFile(File):
@@ -14,3 +14,8 @@ class UsedIn(pm.Attribute):
14
14
  class Encrypt(pm.Attribute):
15
15
  NAME: 'Encrypt'
16
16
  VALUE_TYPE: bool
17
+
18
+
19
+ class Scope(pm.Attribute):
20
+ NAME: 'Scope'
21
+ VALUE_TYPE: str
@@ -1,3 +1,4 @@
1
+ import logging
1
2
  import pyEDAA.ProjectModel as pm
2
3
 
3
4
  from typing import Optional
@@ -5,6 +6,9 @@ from pathlib import Path
5
6
  from pyVHDLModel import VHDLVersion # type: ignore
6
7
 
7
8
 
9
+ logger = logging.getLogger(__name__)
10
+
11
+
8
12
  class VHDLLibrary(pm.VHDLLibrary):
9
13
 
10
14
  _path: Optional[Path]
@@ -18,9 +22,9 @@ class VHDLLibrary(pm.VHDLLibrary):
18
22
  ):
19
23
  super().__init__(name, project, design, vhdlVersion)
20
24
  if path is None:
21
- self._path = name
25
+ self.Path = Path(name)
22
26
  else:
23
- self._path = path
27
+ self.Path = path
24
28
 
25
29
  @property
26
30
  def Path(self) -> Optional[Path]:
@@ -28,4 +32,9 @@ class VHDLLibrary(pm.VHDLLibrary):
28
32
 
29
33
  @Path.setter
30
34
  def Path(self, path: Path) -> None:
31
- self._path = path
35
+ if isinstance(path, str):
36
+ filename, lineno, funcname, info = logger.findCaller(stacklevel=3)
37
+ logger.debug(f"The VHDL library path is a string in {filename}:{lineno}")
38
+ self._path = Path(path)
39
+ else:
40
+ self._path = path
@@ -25,7 +25,11 @@ set_global_assignment -library {{file.Library}} -name VERILOG_FILE "{{file.Path}
25
25
  {% elif file.FileType == VHDLSourceFile %}
26
26
  set_global_assignment -library {{file.Library}} -name VHDL_FILE "{{file.Path}}"
27
27
  {% elif file.FileType == ConstraintFile %}
28
+ {% if file[Scope] is not none %}
29
+ set_global_assignment -name SDC_ENTITY_FILE "{{file.Path}}" -entity "{{file[Scope]}}"
30
+ {% else %}
28
31
  set_global_assignment -name SDC_FILE "{{file.Path}}"
32
+ {% endif %}
29
33
  {% elif file.FileType == TCLSourceFile %}
30
34
  set_global_assignment -name TCL_SCRIPT_FILE "{{file.Path}}"
31
35
  {% elif file.FileType == QuartusSourceTCLFile %}
@@ -11,18 +11,18 @@
11
11
  +incdir+{{incdir}}
12
12
  {% endfor %}
13
13
  {% for library in external_libraries %}
14
- -makelib {{library.Path}}:{{library.Name}} -endlib
14
+ -makelib "{{library.Path}}":{{library.Name}} -endlib
15
15
  -reflib {{library.Name}}
16
16
  {% endfor %}
17
17
  {% for library in libraries %}
18
18
  -reflib {{library.Name}}
19
19
  {% endfor %}
20
20
  {% for fileset in filesets %}
21
- -makelib {{fileset.VHDLLibrary.Name}}:{{fileset.VHDLLibrary.Path}}
21
+ -makelib {{fileset.VHDLLibrary.Name}}:"{{fileset.VHDLLibrary.Path}}"
22
22
  {% for file in fileset.GetFiles() %}
23
23
 
24
24
  {% if isinstance(file, (SystemVerilogSourceFile, VerilogSourceFile, VHDLSourceFile)) and 'simulation' in file[UsedIn] %}
25
- {{file.Path}}
25
+ "{{file.Path}}"
26
26
  {% endif %}
27
27
  {% endfor %}
28
28
  -endlib
@@ -11,12 +11,23 @@ proc source_bd_script {filename} {
11
11
  # Fail if bd script return an error code or a non zero value
12
12
  if {[catch {source -notrace $filename} err]} {
13
13
  return -code 1
14
- } elseif {$err != 0} {
14
+ } elseif {$err != ""} {
15
15
  return -code 1
16
16
  }
17
17
  }
18
18
 
19
19
 
20
+ proc import_bd_file {filename} {
21
+ set_msg_config -suppress -id {BD 41-2576}
22
+ set_msg_config -suppress -id {BD 41-1663}
23
+ set bd [import_files $filename]
24
+ # generate_target all $bd
25
+ # export_ip_user_files -of_objects $bd -no_script -sync -force -quiet
26
+ # reset_msg_config -suppress -id {BD 41-2576}
27
+ reset_msg_config -suppress -id {BD 41-1663}
28
+ }
29
+
30
+
20
31
  proc source_step_script {filename} {
21
32
  # NOTE: make get_files fail if not files are found
22
33
  set_msg_config -id {Vivado 12-818} -new_severity {ERROR}
@@ -76,6 +87,7 @@ proc add_filesets {} {
76
87
 
77
88
 
78
89
  create_project -force -part {{project.Part}} {{project.Name}} [pwd]
90
+ set_msg_config -suppress -id {Board 49-26}
79
91
  add_filesets
80
92
  {% if project.Parameters or project.Generics %}
81
93
  foreach fileset [get_filesets -filter {FILESET_TYPE =~ *Srcs}] {
@@ -97,9 +109,15 @@ read_verilog "{{file.Path|replace('\\', '/')}}"
97
109
  {% elif file.FileType == VHDLSourceFile %}
98
110
  read_vhdl -vhdl2008 -library {{file.Library}} "{{file.Path|replace('\\', '/')}}"
99
111
  {% elif file.FileType == ConstraintFile %}
112
+ {% if file[Scope] is not none %}
113
+ read_xdc "{{file.Path|replace('\\', '/')}}" -ref "{{file[Scope]}}"
114
+ {% else %}
100
115
  read_xdc "{{file.Path|replace('\\', '/')}}"
116
+ {% endif %}
101
117
  {% elif file.FileType == VivadoIPSpecificationFile %}
102
- {% if file.Path.suffix == '.xcix' %}
118
+ {% if file.Path.suffix == '.bd' %}
119
+ import_bd_file "{{file.Path|replace('\\', '/')}}"
120
+ {% elif file.Path.suffix == '.xcix' %}
103
121
  read_ip "{{file.Path|replace('\\', '/')}}"
104
122
  {% else %}
105
123
  import_ip "{{file.Path|replace('\\', '/')}}"
@@ -108,8 +126,6 @@ import_ip "{{file.Path|replace('\\', '/')}}"
108
126
  add_files "{{file.Path|replace('\\', '/')}}"
109
127
  {% elif file.Path.suffix in ['.edif', '.ngc'] %}
110
128
  read_edif "{{file.Path|replace('\\', '/')}}"
111
- {% elif file.Path.suffix == '.bd' %}
112
- read_bd "{{file.Path|replace('\\', '/')}}"
113
129
  {% elif file.FileType == VivadoBDTclFile %}
114
130
  send_msg_id {SimplHDL PRJ-3} {INFO} "Sourcing BD tcl file {{file.Path|replace('\\', '/')}}: this might take some time."
115
131
  source_bd_script "{{file.Path|replace('\\', '/')}}"
@@ -1 +0,0 @@
1
- __version__ = "0.6.0"
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