Skip to content

Releases: shrine-maiden-heavy-industries/torii-hdl

v0.6.2

12 Oct 18:28
v0.6.2
365550a
Compare
Choose a tag to compare

This is a minor bugfix release

Torii can be installed from the wheel attached or from PyPi

Fixed

  • Fixed a bug in the definition of the QSPIResource in torii.platform.resources.memory making it unusable, again

v0.6.1 (YANK)

12 Oct 18:21
v0.6.1
f5b4de5
Compare
Choose a tag to compare

Caution

This release is Yanked, don't use it

This is a minor bugfix release

Torii can be installed from the wheel attached or from PyPi

Fixed

  • Fixed a bug in the definition of the QSPIResource in torii.platform.resources.memory making it unusable

v0.6.0

07 May 05:48
v0.6.0
f84c94c
Compare
Choose a tag to compare

Torii can be installed from the wheel attached or from PyPi

Added

  • Rough initial type annotations to torii.hdl.mem
  • Added the ability to specify tar for the torii.build.run.BuildPlan.archive call.
  • Added check inside Records to ensure they're properly constructed prior to accessing their fields.
  • Added the ability to override a Value's operators.
  • Added the ability to put non-signals into write_vcd's traces parameter.
  • Added name disambiguation for traced signals where they share the same name.
  • Added ValueLike and ShapeLike, mainly for additional typing and instance checking assistance.
  • Added the ability for Cat and Slice, statements to be cast as a Const value.
  • Added #!/bin/sh to the top of build shell scripts.
  • Added BuildPlan.extract to extract files from the build plan without having to run it, this replaces the functionality that occurred when BuildPlan.execute_local was passed with run_script = False.
  • Added BuildPlan.execute_docker to allow for invoking a build inside a specified docker container.
  • Added log2_ceil and log2_exact to replace log2_int with the False and True params respectively.
  • ShapeCastable objects can now be const initialized.

Changed

  • Improved Oscillator frequency diagnostics for torii.vendor.GowinPlatform.
  • Fixed torii.lib.fifo FIFOs to use the new memory semantics correctly.
  • torii.lib.soc.csr Multiplexer shadow registers have been re-designed.
  • Bumped minimum Python version from 3.9 to 3.10.
  • Renamed IntelPlatform to AlteraPlatform.
  • FWFT mode is default for all FIFOs now.
  • Bumped the minimum version of Yosys to 0.30.
  • Empty Case blocks now throw an exception when being used in place of a Default block
  • Behavioral change warning in empty Value.matches() where currently it returns Const(1) but will return Const(0) in the future.
  • We now only close a VCD or GTKW file in the simulator if it was opened by the simulator.
  • Build shell scripts will now be marked as executable on unix-like hosts.
  • Instance objects know collect source location information.
  • Memories have been turned into a first-class IR representation.
  • Out-of-range rests now error, not just warn.
  • A warning is now generated when a Case() falls after a Default(), and an error is raised when there are multiple Default()'s in a Switch
  • Shape casting a range(1) now resolves to an unsigned(0)

Deprecated

  • Deprecated torii.vendor.intel and torii.vendor.intel.IntelPlatform in favor of torii.vendor.altera and torii.vendor.altera.AlteraPlatform.
  • Deprecated execute_local()'s run_script param in favor of extract
  • Deprecated use of log2_int in favor of log2_ceil and log2_exact where appropriate.

Removed

  • Removed deprecated torii.platform.vendor.lattice_* modules.
  • Removed deprecated Repl call in favor of Value.replicate.
  • Removed set -x if the verbose param is set for platform builds.
  • Removed the last little bit of $verilog_initial_trigger traces.
  • Removed sub-classing of AnyValue and Property

Fixed

  • Fixed ToriiTestCase.settle to handle "0" count settles.
  • Fixed torii.hdl.dsl.Module's constructor to properly use super() rather than a parent class name call.
  • Load of typing annotation fixes.
  • Cleaned up a load of blank asserts, they should now have more clear error diagnostics.
  • Fixed a handful of typos throughout the library and documentation.
  • Fixed tracer calls for Python 3.13
  • Fixed Array not being indexable by a ValueCastable.
  • Fixed ValueCastable not being accepted as a simulation coroutine command.
  • Fixed handling of redundant Case branches.
  • Fixed Value.shift_right and Value.as_signed edge cases.
  • Fixed using 0-width Switch's with integer keys.
  • Trying to use the Python in operator on a Value now raises a sensible error.
  • When indexing or slicing a Value with another Value, it now raises an error and suggests to use Value.bit_select or Value.word_select instead.
  • Fixed simulation look when process catches an injected exception.

v0.5.0

11 Oct 20:17
v0.5.0
8c15b1f
Compare
Choose a tag to compare

Torii can be installed from the wheel attached or from PyPi

Added

  • Added some minor comments to the torii.sim.core module about the function of some of the objects.
  • Added torii.vendor.gowin.GowinPlatform.
  • Added support for Xilinx Atrix UltraScale+ part numbers.
  • Added env argument to BuildPlan.execute_local.
  • Allowed removing src attributes on RTLIL output.

Changed

  • Moved the Lattice platform defs into their own submodule torii.platform.vendor.lattice.
  • Replaced the distutils.ccompiler with the setuptools.command.build_ext module for torii.tools.cxx.
  • Disabled the warning emitted on ~True/~False when using it as a value in Torii in Python versions older than 3.12.
  • Relaxed the PyVCD dependency version to now also include 0.5.
  • Ensured Value.__abs__ now returns unsigned Shape.
  • Restructured the torii.lib.coding module away from being a monolithic file.
  • Prohibited absolute paths in BuildPlan.add_file.
  • Added lowering of Memory's directly to RTLIL $mem_v2 cells.
  • Ensured Part offsets are always unsigned.
  • Disallowed signed(0) values.

Deprecated

  • Old Lattice platform names have been deprecated in favor of the new platform location.
  • Deprecated Repl in favor of Value.replicate.

Removed

  • Removed the torii.cli module
  • Removed the remote-build category from the setup.py extra_requires due to removal of remote builds.

Fixed

  • Fixed an issue where the IrDAResource was not imported into the torii.platform.resources __init__.py
  • Fixed the torii.utils.tracer module to properly handle STORE_DEREF and EXTENDED_ARGs.
  • Fixed signed value normalization inside Const.
  • Fixed issue with Value.rotate_left/Value.rotate_right on 0-width values.
  • Fixed a semantic issue with range handling inside Shape.cast.
  • Fixed an off-by-one issue in the validation of Slicees.
  • Fixed the signedness of the resulting Shape when doing subtraction.
  • Fixed handling of ValueKey.__eq__.
  • Fixed source-location attribution for Slicees.
  • Fixed the order of when Value.cast should have been called in the Part and Slice constructors.
  • Fixed a warning on python 3.12 with the pyrtl simulator warning about bitwise negations on booleans.
  • Fixed a test case failure that would only occur on Windows due to it's backwards path separator.
  • Ensured Value.cast is inside Part's and Slices constructor.
  • Fixed test case that was having issues on Windows paths.
  • Removed translation of empty subfragments as that would cause unintentional blackboxing on Vivado and Yosys.

v0.4.5

26 Mar 14:04
v0.4.5
df78e88
Compare
Choose a tag to compare

This is a minor bugfix release and also includes updates to the ToriiTestCase, which makes it now generally usable for testing and simulation.

Torii can be installed from the wheel attached or from PyPi

Added

  • Added -norom and -proc options to verilog generation if available in Yosys.
  • Added a small tutorial on using platform.add_file with Instance for referencing external modules.
  • Added conversion helpers to/from picoseconds.

Changed

  • Updated the minimum Yosys version to 0.15.
  • Minor typing updates.
  • Value.matches now returns Const(1) when no value is supplied.
  • Platform.build now allows for lists of strings to be passed for argument.
  • Invocations of read_ilang in Yosys scripts has been replaced with read_rtlil as read_ilang has been deprecated for a while now.
  • Replaced sim_case in ToriiTestCase with ToriiTestCase.simulation and added two attributes for defining the simulation domain ToriiTestCase.comb_domain and ToriiTestCase.sync_domain, the latter of which takes a domain = param to specify which synchronous domain it is using.
  • The default platform in ToriiTestCase has been replaced with None, rather than MockPlatform
  • Gated the initialization of the ToriiTestCase dut behind a check to prevent non-simulating tests, and tests that don't use the DUT from exploding.
  • Made the connectors property on Platform's optional, it now currently defaults to an empty list.
  • Updated rich dependency version from ~=12.6.0 to >=12.6.0

Deprecated

  • Deprecated the current torii.cli.* methods in anticipation of replacing them.

Removed

  • Removed remote SSH build support
  • Removed Value.__hash__

Fixed

  • Corrected how environment variables were extracted making them more consistent.
  • Fixed the ToriiTestCase so it's now properly functional
  • Clarified the usage of Cat in the language documentation, noting that it can take more than two arguments for concatenation.
  • Added a warning on potential off-by-one errors when invoking Signal with a range and having the reset value be the same as the end of the range.

v0.4.4

25 Feb 11:25
v0.4.4
b8df2b3
Compare
Choose a tag to compare

This is a "minor" bugfix release:

Torii can be installed from the wheel attached or from PyPi

Added

  • Handle Repl's in ValueKey
  • Allow for IntEnum's in Value.cast
  • Added proper testing for the torii.util.units module.
  • Added proper testing for the torii.util.string module.
  • Added support for name = in property checks, such as Assert, etc.
  • Added exports for convert and convert_fragment for rtlil, cxxrtl, and verilog into the root torii.back module.

Changed

  • Updated the copyright years in the license file.
  • Hardened the RTLIL backend against generating Yosys reserved port names.
  • Removed warning on IntEnum's in Cat (meow)
  • Ensured that files are always are written with Unix LF line endings.
  • Renamed the _toolchain module to tools.
  • Moved the tool_env_var from torii.tools into torii.util.string.
  • Renamed nox session names for flake8 and mypy into lint and typecheck
  • Renamed nox session names for build_dists and upload_dist into build and upload
  • Added a default help formatter for the built-in CLI stub.

Deprecated

  • Deprecated the remote SSH builds.
  • Deprecated passing non Elaboratable or Fragment objects to Fragment.get.

Removed

  • Removed Shape and tuple casts and comparisons.
  • Removed UserValue and associated machinery.
  • Removed default ports from rtlil_convert and verilog_convert.
  • Removed step from core.Simulator in favor of advance.
  • Removed support for the AMARANTH_ENV_* environment variables.
  • Removed the _BuiltinYosys proxy object and associated bits.

Fixed

  • Fixed an issue with the TORII_ environment variables not being recognized.
  • Fixed missing f-strings in the cxxrtl, ast, and intel modules.
  • Fixed an issue in the LatticeECP5 platform that would have caused broken SystemVerilog inclusions.
  • Fixed a bunch of miscellaneous spelling things.
  • Fixed an issue where src attributes would be added to generated RTLIL even if the emit_src attribute was False.
  • Fixed an issue where the tracer would encounter an unknown opcode and would return None.
  • Fixed the iec_size utility method to behave a bit better with strange sizes.
  • Fixed the tcl_quote string method that would leave un-escaped "'s causing the TCL script to fail due to invalid syntax.
  • Fixed an issue in the LatticeICE40 platform where the IceStorm toolchain environment variable was not being normalized properly.

v0.4.3

28 Dec 15:43
v0.4.3
cbaed4d
Compare
Choose a tag to compare

This is a minor bugfix release:

Torii can be installed from the wheel attached or from PyPi

Fixed

  • Fixed a small issue with the newline changes that caused synthesis to fail
  • Fixed up the ULPI instance to properly handle the clk signal and constrain it

v0.4.2

18 Dec 15:31
v0.4.2
76d7b9d
Compare
Choose a tag to compare

This is a minor bugfix release:

Torii can be installed from the wheel attached or from PyPi

Fixed

  • Fixed the project URLs for the documentation and package.
  • Fixed some minor issues in the install documentation.
  • Fixed the line endings on generated *nix build scripts.
  • Fixed an issue where the built-in test harness was broken with writing VCDs.

v0.4.1

05 Dec 00:31
v0.4.1
f9ac34b
Compare
Choose a tag to compare

This is a minor bugfix release:

Torii can be installed from the wheel attached or from PyPi

Fixed

  • Fixed issue with invoke_tool not emitting the environment variable properly

YANKED - 0.4.0

02 Dec 20:09
v0.4.0
688b6bd
Compare
Choose a tag to compare

Warning This release has been yanked, please use 0.4.1


We are very happy to release the very first version of Torii, even though it's called 0.4.0.

A large amount of work has gone into this, and we hope you all enjoy it and help us to continue to improve it!.

Torii can be installed from the wheel attached or from PyPi

Added

  • Folded in stdio library components.
  • Folded in soc library components.
  • Folded in resources from torii-boards into the torii.platform.resources module.
  • Added flake8 configuration file.
  • Added mypy configuration file.
  • Added Code Of Conduct.
  • Added a noxfile.py for use with nox.
  • Added an updated python unittest wrapper for use with Torii.
  • Added string utility module.
  • Added units utility module.
  • Added dependency rich.
  • Added CANResource to torii.platform.resources.interface.
  • Added ice40warmboot to torii.lib.vendor.lattice.ice40.
  • Added empty torii.lib.vendor.xilinx module.
  • Added VGADACResource to torii.platform.resources.display.
  • Added preliminary support for the yosys+nextpnr-xilinx flow on the Xilinx platform.
  • Added Changelog file.
  • Added QSPIFlashResource to torii.platform.resources.memory.
  • Added JTAGResource to torii.platform.resources.interface.
  • Added EthernetResource to torii.platform.resources.interface.

Changed

  • Refactored the documentation.
  • Migrated string escape functions from the TemplatedPlatform into the new strings utility module.
  • Moved log2_int and bits_for into the new units utility module.
  • Moved vendor modules into torii.platform.vendor.
  • Replaced deprecated abstractproperties with property/abstractmethod combo.
  • Moved the tracer module into torii.util.
  • Moved the _unused module into torii.hdl.

Removed

  • Removed the nMigen compatibility layer.
  • Removed the migen compatibility layer.
  • Removed the compatibility tests.
  • Removed the RPC server.
  • Removed the old FHDL test case.
  • Removed the tuple case from Shape.
  • Removed the warning from rtlil.convert and verilog.convert about implicit ports.
  • Removed the _ignore_deprecated decorator.
  • Removed the C alias for Const.

Fixed

  • Fixed the package name.
  • Fixed the package authors.
  • Fixed the package trove classifiers.
  • Fixed all flake8 warnings on the entire codebase.
  • Fixed indentation.
  • Fixed docstring formatting.