SimplHDL 0.5.3__tar.gz → 0.5.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.
- {simplhdl-0.5.3 → simplhdl-0.5.5}/PKG-INFO +1 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/PKG-INFO +1 -1
- simplhdl-0.5.5/src/simplhdl/__init__.py +1 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/__main__.py +14 -2
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/cocotb.py +4 -4
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flow.py +7 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/flake8/flake8flow.py +1 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/modelsim/modelsimflow.py +17 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/quartusexport/quartusexportflow.py +1 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/questasim/questasimflow.py +14 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/verible/veribleflow.py +7 -4
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/vsg/vsgflow.py +5 -2
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generators/ipxact.py +6 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generators/spd.py +36 -27
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/__init__.py +10 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/design.py +5 -4
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/utils.py +2 -2
- simplhdl-0.5.3/src/simplhdl/__init__.py +0 -1
- {simplhdl-0.5.3 → simplhdl-0.5.5}/.github/workflows/publish.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/.gitignore +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/.readthedocs.yaml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/LICENSE +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/README.md +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/_static/simplhdl_dark.png +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/_static/simplhdl_light.png +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/_static/simplhdl_light_1.png +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/conf.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/drawing.svg +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/ghdl.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/icarus.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/quartus.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/questasim.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/vcs.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/vivado.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows/xsim.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/flows.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/index.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/intel-ips.md +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/introduction.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/plugins.rst +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/docs/requirements.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/adder.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/hdl/adder.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/sim/testbench.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/sim/testbench.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/syn/build.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/syn/placement.xdc +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/syn/timing.xdc +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/adder/syn/top.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/alu.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/hdl/add.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/hdl/alu.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/hdl/mul.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/hdl/sub.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/agent.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/aluif.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/driver.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/monitor.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/sequenceitem.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/alu_vip/sequencer.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/clock_vip/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/clock_vip/agent.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/clock_vip/clockif.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/pyuvm.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/test/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/test/env.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/test/seq_lib.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/test/test.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/pyuvm/testbench.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/agent.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/alu_vip.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/driver.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/env.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/monitor.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/alu_vip/sequence_item.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/add_seq.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/seq_lib/base_seq.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/tb_env.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/tb_env.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/test/base_test.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/tb_env/test/test_add.svh +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/testbench/alu_if.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/testbench/testbench.sv +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/testbench/testbench.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/sim/uvm/testcases/test_add/test_add.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/syn/build.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/syn/placement.xdc +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/alu/syn/timing.xdc +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/hello/build.sbt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/hello/hello.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/hello/src/main/scala/Hello.scala +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/hdl/hello/syn/build.yml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/plugins/simple_parser/setup.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/plugins/simple_parser/src/simple_parser/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/examples/plugins/simple_parser/src/simple_parser/simple_parser.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/pyproject.toml +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/setup.cfg +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/SOURCES.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/dependency_links.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/entry_points.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/requires.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/SimplHDL.egg-info/top_level.txt +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/encrypt/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/encrypt/encryptflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/implementationflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/lint/lintflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/modelsim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/quartusdse/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/quartusdse/quartusdseflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/quartusexport/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/quartusflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/questasim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/rivierapro/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/rivierapro/rivieraproflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/simulationflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/vcs/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/vcs/vcsflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/verible/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/vivadoflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/vsg/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/xsim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/flows/xsim/xsimflow.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generator.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generators/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generators/chisel.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/generators/systemrdl.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/info.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/parser.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/parsers/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/parsers/fusesocparser.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/parsers/simplhdlparser.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/plugins.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/attributes.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/fileset.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/filetypes.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/project.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/target.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/pyedaa/vhdllibrary.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/repo.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/flake8/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/flake8/setup.cfg.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/Makefile.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/cocotb.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/dependencies.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/files.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/fileset.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/modelsim.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/project.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/modelsim/run.do.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/quartus/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/quartus/project.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/quartus/run.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/project.qrun.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/visualizer.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/vsim-run.do.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/Makefile.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/cocotb.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/dependencies.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/files.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/fileset.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/rivierapro/project.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/Makefile.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/cocotb.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/dependencies.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/files.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/fileset.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/pli.tab.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/project.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/synopsys_sim.setup.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vcs/vcs.parameters.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/verible/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/verible/rules.cfg.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vivado/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vivado/launch_run.sh.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vivado/project.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vivado/run.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vivado/steps.tcl.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vsg/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vsg/files.json.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/vsg/rules.yml.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/Makefile.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/__init__.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/cocotb.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/dependencies.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/files.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/fileset.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/xsim/project.mk.j2 +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/run.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/simplhdl.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/tools.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/tests/test_dummy.py +0 -0
- {simplhdl-0.5.3 → simplhdl-0.5.5}/tox.ini +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.5"
|
|
@@ -5,8 +5,9 @@ import logging
|
|
|
5
5
|
import traceback
|
|
6
6
|
|
|
7
7
|
from typing import Sequence
|
|
8
|
-
|
|
9
8
|
from pathlib import Path
|
|
9
|
+
from rich.logging import RichHandler
|
|
10
|
+
|
|
10
11
|
from . import __version__
|
|
11
12
|
from .simplhdl import Simplhdl
|
|
12
13
|
from .plugins import load_plugins
|
|
@@ -67,7 +68,18 @@ def main():
|
|
|
67
68
|
args = parse_arguments()
|
|
68
69
|
levels = [logging.INFO, logging.DEBUG, logging.NOTSET]
|
|
69
70
|
level = levels[min(args.verbose, len(levels)-1)]
|
|
70
|
-
logging.
|
|
71
|
+
if level < logging.INFO:
|
|
72
|
+
show_path = True
|
|
73
|
+
else:
|
|
74
|
+
show_path = False
|
|
75
|
+
|
|
76
|
+
FORMAT = "[simplhdl.%(module)s] - %(message)s"
|
|
77
|
+
console = RichHandler(level=level, show_time=False, rich_tracebacks=True, show_path=show_path)
|
|
78
|
+
logging.basicConfig(
|
|
79
|
+
level=5,
|
|
80
|
+
format=FORMAT,
|
|
81
|
+
handlers=[console]
|
|
82
|
+
)
|
|
71
83
|
simpl = Simplhdl(args)
|
|
72
84
|
simpl.run()
|
|
73
85
|
except (NotImplementedError, FileNotFoundError, CalledShError,
|
|
@@ -41,7 +41,7 @@ class Cocotb:
|
|
|
41
41
|
return None
|
|
42
42
|
set_ = set()
|
|
43
43
|
try:
|
|
44
|
-
modules = self.project.DefaultDesign.
|
|
44
|
+
modules = self.project.DefaultDesign.TopLevel.split()
|
|
45
45
|
except AttributeError:
|
|
46
46
|
raise FlowError("No top levels found")
|
|
47
47
|
|
|
@@ -58,14 +58,14 @@ class Cocotb:
|
|
|
58
58
|
|
|
59
59
|
def hdltoplevels(self) -> str:
|
|
60
60
|
tops = []
|
|
61
|
-
for t in self.project.DefaultDesign.
|
|
61
|
+
for t in self.project.DefaultDesign.TopLevel.split():
|
|
62
62
|
if t != self.top:
|
|
63
63
|
tops.append(t)
|
|
64
64
|
return ' '.join(tops)
|
|
65
65
|
|
|
66
66
|
def get_dut(self) -> str:
|
|
67
67
|
try:
|
|
68
|
-
for top in self.project.DefaultDesign.
|
|
68
|
+
for top in self.project.DefaultDesign.TopLevel.split():
|
|
69
69
|
if top != self.top:
|
|
70
70
|
return top
|
|
71
71
|
except AttributeError:
|
|
@@ -97,7 +97,7 @@ class Cocotb:
|
|
|
97
97
|
with open(file.Path, 'r', errors='replace') as f:
|
|
98
98
|
lines = f.readlines()
|
|
99
99
|
for line in lines:
|
|
100
|
-
if re.search(rf'^\s*module\s+{name}(\s
|
|
100
|
+
if re.search(rf'^\s*module\s+{name}(\s+|#\(|\(|;|$)', line):
|
|
101
101
|
if file.Library.Name == lib:
|
|
102
102
|
logger.info(f"Cocotb dut '{self.dut}' is Verilog")
|
|
103
103
|
return VerilogSourceFile
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
1
3
|
from argparse import Namespace
|
|
2
4
|
from pathlib import Path
|
|
3
5
|
from typing import Callable, Dict, Set
|
|
@@ -16,6 +18,11 @@ class FlowBase(metaclass=ABCMeta):
|
|
|
16
18
|
self.builddir: Path = builddir
|
|
17
19
|
self.category: FlowCategory = FlowCategory.DEFAULT
|
|
18
20
|
self.tools: Set = set()
|
|
21
|
+
self.builddir.mkdir(parents=True, exist_ok=True)
|
|
22
|
+
file = logging.FileHandler(self.builddir.joinpath('simplhdl.log'), mode='w')
|
|
23
|
+
file.setLevel(logging.NOTSET)
|
|
24
|
+
file.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s:%(filename)s:%(lineno)d - %(message)s'))
|
|
25
|
+
logging.getLogger().addHandler(file)
|
|
19
26
|
|
|
20
27
|
@classmethod
|
|
21
28
|
@abstractmethod
|
|
@@ -49,7 +49,7 @@ class Flake8Flow(FlowBase):
|
|
|
49
49
|
self.files = [f.Path for f in self.project.DefaultDesign.DefaultFileSet.Files(PythonSourceFile)]
|
|
50
50
|
|
|
51
51
|
def generate(self):
|
|
52
|
-
config = os.getenv('
|
|
52
|
+
config = os.getenv('SIMPLHDL_FLAKE8_CONFIG')
|
|
53
53
|
if config:
|
|
54
54
|
shutil.copy(config, self.builddir.joinpath('setup.cfg'))
|
|
55
55
|
else:
|
|
@@ -6,6 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
from typing import Any, List, Dict, Optional
|
|
7
7
|
from argparse import Namespace
|
|
8
8
|
from jinja2 import Template
|
|
9
|
+
from simplhdl.pyedaa import ModelsimIniFile
|
|
9
10
|
from simplhdl.pyedaa.project import Project
|
|
10
11
|
from simplhdl.pyedaa.fileset import FileSet
|
|
11
12
|
from simplhdl.utils import sh, escape
|
|
@@ -225,6 +226,22 @@ class ModelSimFlow(SimulationFlow):
|
|
|
225
226
|
library = ''
|
|
226
227
|
return library
|
|
227
228
|
|
|
229
|
+
def generate(self):
|
|
230
|
+
super().generate()
|
|
231
|
+
self.copy_modelsim_ini()
|
|
232
|
+
|
|
233
|
+
def copy_modelsim_ini(self):
|
|
234
|
+
files = list(self.project.DefaultDesign.Files(ModelsimIniFile))
|
|
235
|
+
if len(files) > 1:
|
|
236
|
+
logger.warning("Multiple modelsim.ini files found in project. Only the first file will be used.")
|
|
237
|
+
for i, file in enumerate(reversed(files)):
|
|
238
|
+
if i > 0:
|
|
239
|
+
logger.warning(f"ignore {file.Path}")
|
|
240
|
+
else:
|
|
241
|
+
logger.debug(f"Copy {file.Path} to {self.builddir}")
|
|
242
|
+
logger.info(f"Use {file.Path}")
|
|
243
|
+
shutil.copy(file.Path.absolute(), self.builddir.absolute())
|
|
244
|
+
|
|
228
245
|
def execute(self, step: str) -> None:
|
|
229
246
|
self.run_hooks('pre')
|
|
230
247
|
|
|
@@ -108,7 +108,7 @@ class QuartusExportFlow(ImplementationFlow):
|
|
|
108
108
|
shutil.rmtree(self.builddir.joinpath('dni'))
|
|
109
109
|
shutil.rmtree(self.builddir.joinpath('qdb'))
|
|
110
110
|
os.remove(self.builddir.joinpath('project.tcl'))
|
|
111
|
-
except FileNotFoundError
|
|
111
|
+
except FileNotFoundError:
|
|
112
112
|
pass
|
|
113
113
|
|
|
114
114
|
def archive_project(self) -> None:
|
|
@@ -14,6 +14,7 @@ from typing import Any, List, Dict, Optional
|
|
|
14
14
|
from argparse import Namespace
|
|
15
15
|
from jinja2 import Template
|
|
16
16
|
from simplhdl.pyedaa.project import Project
|
|
17
|
+
from simplhdl.pyedaa import ModelsimIniFile
|
|
17
18
|
from simplhdl.utils import sh, escape
|
|
18
19
|
from simplhdl.flow import FlowFactory, FlowTools
|
|
19
20
|
from simplhdl.info import Info
|
|
@@ -348,6 +349,18 @@ class QuestaSimFlow(SimulationFlow):
|
|
|
348
349
|
logger.warning("Visualizer is not setup correctly")
|
|
349
350
|
return False
|
|
350
351
|
|
|
352
|
+
def copy_modelsim_ini(self):
|
|
353
|
+
files = list(self.project.DefaultDesign.Files(ModelsimIniFile))
|
|
354
|
+
if len(files) > 1:
|
|
355
|
+
logger.warning("Multiple modelsim.ini files found in project. Only the first file will be used.")
|
|
356
|
+
for i, file in enumerate(reversed(files)):
|
|
357
|
+
if i > 0:
|
|
358
|
+
logger.warning(f"ignore {file.Path}")
|
|
359
|
+
else:
|
|
360
|
+
logger.debug(f"Copy {file.Path} to {self.builddir}")
|
|
361
|
+
logger.info(f"Use {file.Path}")
|
|
362
|
+
shutil.copy(file.Path.absolute(), self.builddir.absolute())
|
|
363
|
+
|
|
351
364
|
def generate(self):
|
|
352
365
|
templatedir = resources_files(self.templates)
|
|
353
366
|
env = Environment(
|
|
@@ -362,6 +375,7 @@ class QuestaSimFlow(SimulationFlow):
|
|
|
362
375
|
for template in templates:
|
|
363
376
|
generate_from_template(template, self.builddir, self.get_globals())
|
|
364
377
|
self.copy_memory_files()
|
|
378
|
+
self.copy_modelsim_ini()
|
|
365
379
|
|
|
366
380
|
def get_qrun_version(self) -> float:
|
|
367
381
|
output = sh(['qrun', '-version'], self.builddir)
|
|
@@ -8,7 +8,7 @@ from argparse import Namespace
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
from jinja2 import Environment, FileSystemLoader
|
|
10
10
|
|
|
11
|
-
from simplhdl.flow import FlowFactory, FlowBase
|
|
11
|
+
from simplhdl.flow import FlowFactory, FlowBase, FlowError
|
|
12
12
|
from simplhdl.resources.templates import verible as templates
|
|
13
13
|
from simplhdl.utils import sh, CalledShError, generate_from_template
|
|
14
14
|
from simplhdl.pyedaa import VerilogIncludeFile, VerilogSourceFile, SystemVerilogSourceFile
|
|
@@ -51,8 +51,11 @@ class VeribleFlow(FlowBase):
|
|
|
51
51
|
def generate(self):
|
|
52
52
|
if self.args.rules:
|
|
53
53
|
self.rules = self.args.rules
|
|
54
|
-
elif os.getenv('
|
|
55
|
-
|
|
54
|
+
elif os.getenv('SIMPLHDL_VERIBLE_CONFIG'):
|
|
55
|
+
rules = os.getenv('SIMPLHDL_VERIBLE_CONFIG')
|
|
56
|
+
if not Path(rules).exists():
|
|
57
|
+
raise FlowError(f"Rules file {rules} does not exist")
|
|
58
|
+
self.rules = rules
|
|
56
59
|
else:
|
|
57
60
|
templatedir = resources_files(self.templates)
|
|
58
61
|
environment = Environment(
|
|
@@ -67,7 +70,7 @@ class VeribleFlow(FlowBase):
|
|
|
67
70
|
command = [
|
|
68
71
|
"verible-verilog-lint",
|
|
69
72
|
"--check_syntax=false",
|
|
70
|
-
"--ruleset=
|
|
73
|
+
"--ruleset=none",
|
|
71
74
|
"--rules_config", self.rules
|
|
72
75
|
]
|
|
73
76
|
|
|
@@ -74,8 +74,11 @@ class VsgFlow(FlowBase):
|
|
|
74
74
|
UsedIn=UsedIn)
|
|
75
75
|
if self.args.rules:
|
|
76
76
|
self.rules = self.args.rules
|
|
77
|
-
elif os.getenv('
|
|
78
|
-
|
|
77
|
+
elif os.getenv('SIMPLHDL_VSG_CONFIG'):
|
|
78
|
+
rules = os.getenv('SIMPLHDL_VSG_CONFIG')
|
|
79
|
+
if not Path(rules).exists():
|
|
80
|
+
raise FlowError(f"Rules file {rules} does not exist")
|
|
81
|
+
self.rules = rules
|
|
79
82
|
else:
|
|
80
83
|
template = environment.get_template('rules.yml.j2')
|
|
81
84
|
generate_from_template(template, self.builddir)
|
|
@@ -10,7 +10,9 @@ from zipfile import ZipFile
|
|
|
10
10
|
from ..generator import GeneratorFactory, GeneratorBase
|
|
11
11
|
from ..utils import md5write, md5check
|
|
12
12
|
from ..flow import FlowBase, FlowCategory
|
|
13
|
+
from ..pyedaa import SIMULATION
|
|
13
14
|
from ..pyedaa.fileset import FileSet
|
|
15
|
+
from ..pyedaa.attributes import UsedIn
|
|
14
16
|
from ..pyedaa.vhdllibrary import VHDLLibrary
|
|
15
17
|
from ..pyedaa import (
|
|
16
18
|
File, SystemVerilogSourceFile, TCLSourceFile, ConstraintFile, HDLSourceFile,
|
|
@@ -198,7 +200,10 @@ class VivadoIP(GeneratorBase):
|
|
|
198
200
|
def run(self, flow: FlowBase):
|
|
199
201
|
if flow.category == FlowCategory.SIMULATION:
|
|
200
202
|
os.makedirs(self.builddir, exist_ok=True)
|
|
201
|
-
|
|
203
|
+
ipfiles = list(self.project.DefaultDesign.DefaultFileSet.Files(fileType=VivadoIPSpecificationFile))
|
|
204
|
+
ipfiles = [f for f in ipfiles if SIMULATION in f[UsedIn]]
|
|
205
|
+
|
|
206
|
+
for ipfile in ipfiles:
|
|
202
207
|
newipfile = self.unpack_ip(ipfile)
|
|
203
208
|
files = self.get_files(newipfile.Path)
|
|
204
209
|
last_lib = ''
|
|
@@ -23,6 +23,7 @@ from simplhdl.pyedaa import (
|
|
|
23
23
|
QuartusQSYSCompressedSpecificationFile,
|
|
24
24
|
QuartusQIPSpecificationFile
|
|
25
25
|
)
|
|
26
|
+
from simplhdl.pyedaa import SIMULATION, IMPLEMENTATION
|
|
26
27
|
from simplhdl.pyedaa.fileset import FileSet
|
|
27
28
|
from simplhdl.pyedaa.attributes import UsedIn
|
|
28
29
|
from simplhdl.flow import FlowBase, FlowCategory, FlowTools
|
|
@@ -183,34 +184,42 @@ class QuartusIP(GeneratorBase):
|
|
|
183
184
|
filename._path = dest.with_suffix('.ip').absolute()
|
|
184
185
|
return filename
|
|
185
186
|
|
|
186
|
-
def run(self, flow: FlowBase) -> None:
|
|
187
|
+
def run(self, flow: FlowBase) -> None: # noqa: C901
|
|
187
188
|
seen = dict()
|
|
188
189
|
self.flow = flow
|
|
189
190
|
ip_dir = self.builddir.joinpath('ips')
|
|
190
191
|
qsys_dir = self.builddir.joinpath('qsys')
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if
|
|
194
|
-
for
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
192
|
+
all_files = list(self.project.DefaultDesign.DefaultFileSet.Files(fileType=QuartusIPSpecificationFile))
|
|
193
|
+
|
|
194
|
+
if flow.category == FlowCategory.SIMULATION:
|
|
195
|
+
files = [f for f in all_files if SIMULATION in f[UsedIn]]
|
|
196
|
+
elif flow.category == FlowCategory.IMPLEMENTATION:
|
|
197
|
+
files = [f for f in all_files if IMPLEMENTATION in f[UsedIn]]
|
|
198
|
+
elif flow.category == FlowCategory.DEFAULT:
|
|
199
|
+
return
|
|
200
|
+
else:
|
|
201
|
+
files = all_files
|
|
202
|
+
|
|
203
|
+
for file in files:
|
|
204
|
+
# The second time we see a file it is already proccessed and we just
|
|
205
|
+
# Update the file path
|
|
206
|
+
fileid = str(file.Path.resolve())
|
|
207
|
+
if fileid in seen:
|
|
208
|
+
file._path = seen.get(fileid)._path
|
|
209
|
+
continue
|
|
210
|
+
if file.FileType == QuartusQIPSpecificationFile:
|
|
211
|
+
continue
|
|
212
|
+
elif file.FileType == QuartusIPCompressedSpecificationFile:
|
|
213
|
+
file = unpack_ipfile(file, ip_dir)
|
|
214
|
+
elif file.FileType == QuartusIPSpecificationFile:
|
|
215
|
+
file = copy_ipfile(file, ip_dir)
|
|
216
|
+
elif file.FileType == QuartusQSYSCompressedSpecificationFile:
|
|
217
|
+
file = unpack_qsysfile(file, qsys_dir)
|
|
218
|
+
elif file.FileType == QuartusQSYSSpecificationFile:
|
|
219
|
+
file = copy_qsysfile(file, qsys_dir)
|
|
220
|
+
parse_file(file, flow, self.project.DefaultDesign.DefaultFileSet.VHDLLibrary)
|
|
221
|
+
# register the file as seen
|
|
222
|
+
seen[fileid] = file
|
|
214
223
|
|
|
215
224
|
|
|
216
225
|
def parse_qsys(filename: QuartusQSYSSpecificationFile) -> List[File]:
|
|
@@ -281,14 +290,14 @@ def copy_ipfile(file: QuartusIPSpecificationFile, dest: Path) -> QuartusIPSpecif
|
|
|
281
290
|
destfile = dest.joinpath(file.Path.name)
|
|
282
291
|
if srcdir.exists():
|
|
283
292
|
if not md5file.exists() or not md5check(file.Path, srcdir, filename=md5file):
|
|
284
|
-
logger.
|
|
285
|
-
logger.
|
|
293
|
+
logger.debug(f"Copy {file.Path} to {destfile}")
|
|
294
|
+
logger.debug(f"Copy {srcdir} to {destdir}")
|
|
286
295
|
copy(str(file.Path), str(destfile))
|
|
287
296
|
copytree(str(srcdir), str(destdir), dirs_exist_ok=True)
|
|
288
297
|
md5write(file.Path, srcdir, filename=md5file)
|
|
289
298
|
else:
|
|
290
299
|
if not md5file.exists() or not md5check(file.Path, filename=md5file):
|
|
291
|
-
logger.
|
|
300
|
+
logger.debug(f"Copy {file.Path} to {destfile}")
|
|
292
301
|
rmtree(destdir, ignore_errors=True)
|
|
293
302
|
copy(str(file.Path), str(destfile))
|
|
294
303
|
md5write(file.Path, filename=md5file)
|
|
@@ -102,7 +102,9 @@ class TCLSourceFile(pm.TCLSourceFile):
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
class IPSpecificationFile(File, pm.XMLContent):
|
|
105
|
-
|
|
105
|
+
def _registerAttributes(self):
|
|
106
|
+
super()._registerAttributes()
|
|
107
|
+
FileMixIn._registerAttributes(self)
|
|
106
108
|
|
|
107
109
|
|
|
108
110
|
class NetlistFile(pm.NetlistFile, FileMixIn):
|
|
@@ -204,3 +206,10 @@ class MemoryInitFile(File):
|
|
|
204
206
|
def _registerAttributes(self):
|
|
205
207
|
super()._registerAttributes()
|
|
206
208
|
FileMixIn._registerAttributes(self)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class ModelsimIniFile(File):
|
|
212
|
+
def _registerAttributes(self):
|
|
213
|
+
super()._registerAttributes()
|
|
214
|
+
FileMixIn._registerAttributes(self)
|
|
215
|
+
self[UsedIn] = {SIMULATION}
|
|
@@ -39,15 +39,16 @@ class Design(pm.Design):
|
|
|
39
39
|
@property
|
|
40
40
|
def TopLevel(self) -> str:
|
|
41
41
|
"""Property setting or returning the fileset's toplevel."""
|
|
42
|
-
top =
|
|
42
|
+
top = list()
|
|
43
43
|
if self._topLevel is not None:
|
|
44
44
|
for t in self._topLevel.split():
|
|
45
|
-
top.
|
|
45
|
+
top.append(t)
|
|
46
46
|
for fileset in self._fileSets.values():
|
|
47
47
|
if fileset.TopLevel is not None:
|
|
48
48
|
for t in fileset.TopLevel.split():
|
|
49
|
-
top.
|
|
50
|
-
|
|
49
|
+
top.append(t)
|
|
50
|
+
# remove duplicates without changing the order
|
|
51
|
+
return ' '.join(list(dict.fromkeys(top)))
|
|
51
52
|
|
|
52
53
|
@TopLevel.setter
|
|
53
54
|
def TopLevel(self, value: str) -> None:
|
|
@@ -17,7 +17,7 @@ class CalledShError(Exception):
|
|
|
17
17
|
pass
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
def sh(command: List[str], cwd: Optional[Path] = None, output=False, shell=False, env=None):
|
|
20
|
+
def sh(command: List[str], cwd: Optional[Path] = None, output=False, shell=False, env=None, indent=2):
|
|
21
21
|
if os.name == 'nt':
|
|
22
22
|
shell = True
|
|
23
23
|
|
|
@@ -26,7 +26,7 @@ def sh(command: List[str], cwd: Optional[Path] = None, output=False, shell=False
|
|
|
26
26
|
if output:
|
|
27
27
|
stdout: str = ''
|
|
28
28
|
for line in p.stdout:
|
|
29
|
-
sys.stdout.buffer.write(line)
|
|
29
|
+
sys.stdout.buffer.write(b' '*indent + line)
|
|
30
30
|
sys.stdout.buffer.flush()
|
|
31
31
|
stdout += line.decode()
|
|
32
32
|
_, stderr = p.communicate()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.5.3"
|
|
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.5.3 → simplhdl-0.5.5}/examples/plugins/simple_parser/src/simple_parser/__init__.py
RENAMED
|
File without changes
|
{simplhdl-0.5.3 → simplhdl-0.5.5}/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
|
|
File without changes
|
|
File without changes
|
{simplhdl-0.5.3 → simplhdl-0.5.5}/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
|
|
File without changes
|
{simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/modelsim.tcl.j2
RENAMED
|
File without changes
|
{simplhdl-0.5.3 → simplhdl-0.5.5}/src/simplhdl/resources/templates/questasim/project.qrun.j2
RENAMED
|
File without changes
|
{simplhdl-0.5.3 → simplhdl-0.5.5}/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.5.3 → simplhdl-0.5.5}/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.5.3 → simplhdl-0.5.5}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|