Releases: shrine-maiden-heavy-industries/torii-hdl
v0.6.2
v0.6.1 (YANK)
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
intorii.platform.resources.memory
making it unusable
v0.6.0
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 thetorii.build.run.BuildPlan.archive
call. - Added check inside
Record
s 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
'straces
parameter. - Added name disambiguation for traced signals where they share the same name.
- Added
ValueLike
andShapeLike
, mainly for additional typing and instance checking assistance. - Added the ability for
Cat
andSlice
, statements to be cast as aConst
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 whenBuildPlan.execute_local
was passed withrun_script = False
. - Added
BuildPlan.execute_docker
to allow for invoking a build inside a specified docker container. - Added
log2_ceil
andlog2_exact
to replacelog2_int
with theFalse
andTrue
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
toAlteraPlatform
. - 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 aDefault
block - Behavioral change warning in empty
Value.matches()
where currently it returnsConst(1)
but will returnConst(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 aDefault()
, and an error is raised when there are multipleDefault()
's in aSwitch
- Shape casting a
range(1)
now resolves to anunsigned(0)
Deprecated
- Deprecated
torii.vendor.intel
andtorii.vendor.intel.IntelPlatform
in favor oftorii.vendor.altera
andtorii.vendor.altera.AlteraPlatform
. - Deprecated
execute_local()
'srun_script
param in favor ofextract
- Deprecated use of
log2_int
in favor oflog2_ceil
andlog2_exact
where appropriate.
Removed
- Removed deprecated
torii.platform.vendor.lattice_*
modules. - Removed deprecated
Repl
call in favor ofValue.replicate
. - Removed
set -x
if theverbose
param is set for platform builds. - Removed the last little bit of
$verilog_initial_trigger
traces. - Removed sub-classing of
AnyValue
andProperty
Fixed
- Fixed
ToriiTestCase.settle
to handle "0" count settles. - Fixed
torii.hdl.dsl.Module
's constructor to properly usesuper()
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 aValueCastable
. - Fixed
ValueCastable
not being accepted as a simulation coroutine command. - Fixed handling of redundant
Case
branches. - Fixed
Value.shift_right
andValue.as_signed
edge cases. - Fixed using 0-width
Switch
's with integer keys. - Trying to use the Python
in
operator on aValue
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
orValue.word_select
instead. - Fixed simulation look when process catches an injected exception.
v0.5.0
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 toBuildPlan.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 thesetuptools.command.build_ext
module fortorii.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 include0.5
. - Ensured
Value.__abs__
now returnsunsigned
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 ofValue.replicate
.
Removed
- Removed the
torii.cli
module - Removed the
remote-build
category from thesetup.py
extra_requires
due to removal of remote builds.
Fixed
- Fixed an issue where the
IrDAResource
was not imported into thetorii.platform.resources
__init__.py
- Fixed the
torii.utils.tracer
module to properly handleSTORE_DEREF
andEXTENDED_ARG
s. - 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
Slice
es. - Fixed the signedness of the resulting
Shape
when doing subtraction. - Fixed handling of
ValueKey.__eq__
. - Fixed source-location attribution for
Slice
es. - Fixed the order of when
Value.cast
should have been called in thePart
andSlice
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 insidePart
's andSlice
s 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
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
withInstance
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 returnsConst(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 withread_rtlil
asread_ilang
has been deprecated for a while now. - Replaced
sim_case
inToriiTestCase
withToriiTestCase.simulation
and added two attributes for defining the simulation domainToriiTestCase.comb_domain
andToriiTestCase.sync_domain
, the latter of which takes adomain =
param to specify which synchronous domain it is using. - The default platform in
ToriiTestCase
has been replaced withNone
, rather thanMockPlatform
- 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 onPlatform
'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 arange
and having the reset value be the same as the end of the range.
v0.4.4
This is a "minor" bugfix release:
Torii can be installed from the wheel attached or from PyPi
Added
- Handle
Repl
's inValueKey
- Allow for
IntEnum
's inValue.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 asAssert
, etc. - Added exports for
convert
andconvert_fragment
for rtlil, cxxrtl, and verilog into the roottorii.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 inCat
(meow) - Ensured that files are always are written with Unix
LF
line endings. - Renamed the
_toolchain
module totools
. - Moved the
tool_env_var
fromtorii.tools
intotorii.util.string
. - Renamed nox session names for
flake8
andmypy
intolint
andtypecheck
- Renamed nox session names for
build_dists
andupload_dist
intobuild
andupload
- Added a default help formatter for the built-in CLI stub.
Deprecated
- Deprecated the remote SSH builds.
- Deprecated passing non
Elaboratable
orFragment
objects toFragment.get
.
Removed
- Removed
Shape
andtuple
casts and comparisons. - Removed
UserValue
and associated machinery. - Removed default ports from
rtlil_convert
andverilog_convert
. - Removed
step
fromcore.Simulator
in favor ofadvance
. - 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
, andintel
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 theemit_src
attribute wasFalse
. - 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 theIceStorm
toolchain environment variable was not being normalized properly.
v0.4.3
v0.4.2
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
YANKED - 0.4.0
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
totorii.platform.resources.interface
. - Added
ice40warmboot
totorii.lib.vendor.lattice.ice40
. - Added empty
torii.lib.vendor.xilinx
module. - Added
VGADACResource
totorii.platform.resources.display
. - Added preliminary support for the yosys+nextpnr-xilinx flow on the Xilinx platform.
- Added Changelog file.
- Added
QSPIFlashResource
totorii.platform.resources.memory
. - Added
JTAGResource
totorii.platform.resources.interface
. - Added
EthernetResource
totorii.platform.resources.interface
.
Changed
- Refactored the documentation.
- Migrated string escape functions from the
TemplatedPlatform
into the new strings utility module. - Moved
log2_int
andbits_for
into the new units utility module. - Moved vendor modules into
torii.platform.vendor
. - Replaced deprecated
abstractproperties
withproperty
/abstractmethod
combo. - Moved the
tracer
module intotorii.util
. - Moved the
_unused
module intotorii.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 fromShape
. - Removed the warning from
rtlil.convert
andverilog.convert
about implicit ports. - Removed the
_ignore_deprecated
decorator. - Removed the
C
alias forConst
.
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.