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.
- {simplhdl-0.2.1 → simplhdl-0.2.3}/PKG-INFO +1 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/PKG-INFO +1 -1
- simplhdl-0.2.3/src/simplhdl/__init__.py +1 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusflow.py +4 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/questasim/questasimflow.py +5 -2
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/simulationflow.py +4 -2
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vivadoflow.py +10 -6
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/xsim/xsimflow.py +4 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/spd.py +28 -2
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parser.py +1 -2
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/__init__.py +8 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/design.py +2 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/fileset.py +15 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/project.tcl.j2 +4 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/project.tcl.j2 +1 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/run.tcl.j2 +7 -2
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/Makefile.j2 +1 -1
- simplhdl-0.2.1/src/simplhdl/__init__.py +0 -1
- {simplhdl-0.2.1 → simplhdl-0.2.3}/.github/workflows/publish.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/.gitignore +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/.readthedocs.yaml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/LICENSE +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/README.md +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_dark.png +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_light.png +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/_static/simplhdl_light_1.png +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/conf.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/drawing.svg +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/ghdl.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/icarus.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/quartus.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/questasim.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/vcs.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/vivado.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows/xsim.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/flows.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/index.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/intel-ips.md +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/introduction.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/plugins.rst +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/docs/requirements.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/adder.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/hdl/adder.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/sim/testbench.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/sim/testbench.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/build.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/placement.xdc +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/timing.xdc +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/adder/syn/top.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/alu.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/add.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/alu.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/mul.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/hdl/sub.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/env.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/test/test.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/pyuvm/testbench.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/build.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/placement.xdc +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/alu/syn/timing.xdc +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/build.sbt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/hello.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/src/main/scala/Hello.scala +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/hdl/hello/syn/build.yml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/setup.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/pyproject.toml +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/setup.cfg +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/SOURCES.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/entry_points.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/requires.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/SimplHDL.egg-info/top_level.txt +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/__main__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/cocotb.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/flake8/flake8flow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/implementationflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/lint/lintflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/modelsim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/modelsim/modelsimflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusdse/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/quartusdse/quartusdseflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/questasim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/rivierapro/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/rivierapro/rivieraproflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vcs/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vcs/vcsflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/verible/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/verible/veribleflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vsg/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/vsg/vsgflow.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/flows/xsim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generator.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/chisel.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/ipxact.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/generators/systemrdl.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/info.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/fusesocparser.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/parsers/simplhdlparser.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/plugins.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/attributes.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/filetypes.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/project.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/pyedaa/vhdllibrary.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/repo.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/flake8/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/flake8/setup.cfg.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/Makefile.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/cocotb.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/dependencies.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/files.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/fileset.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/modelsim.tcl.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/project.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/run.do.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/quartus/run.tcl.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/project.qrun.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/visualizer.tcl.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/vsim-run.do.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/Makefile.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/files.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/fileset.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/project.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/Makefile.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/cocotb.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/dependencies.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/files.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/fileset.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/pli.tab.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/project.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/vcs.parameters.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/verible/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/verible/rules.cfg.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/launch_run.sh.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vivado/steps.tcl.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/files.json.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vsg/rules.yml.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/__init__.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/cocotb.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/dependencies.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/files.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/fileset.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/xsim/project.mk.j2 +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/simplhdl.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/tools.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/utils.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/tests/test_dummy.py +0 -0
- {simplhdl-0.2.1 → simplhdl-0.2.3}/tox.ini +0 -0
|
@@ -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.
|
|
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'] =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ==
|
|
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
|
|
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
|
-
|
|
39
|
-
|
|
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]} {
|
|
@@ -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
|
|
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
|
|
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
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/__init__.py
RENAMED
|
File without changes
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py
RENAMED
|
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
|
|
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
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/modelsim/dependencies.mk.j2
RENAMED
|
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
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2
RENAMED
|
File without changes
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/project.qrun.j2
RENAMED
|
File without changes
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/questasim/visualizer.tcl.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2
RENAMED
|
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
|
{simplhdl-0.2.1 → simplhdl-0.2.3}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2
RENAMED
|
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
|