Welcome to HWToolkit (hwt) generated documentation!¶
This documentation is automatically generated from actual source code.
What is HWToolkit (hwt)¶
- Is a Hardware Construction Framework. It is similar to a HCLs like Chisel3 but it is rather set of object with a normal behavior rather than a new language. The objects represents signals and other RTL components and can be serialized to Verilog/VHDL/SystemC/… (That means the hwt is not transpiler or compiler and there is also no entry point.)
- HWT internal representation is graph database of statements and signals.
Hwt type system is made of several elemental datatypes templates which can be used for a type of signal:
- Bits - represents bit vector
- HStruct - structure/record datatype
- HUnion - union datatype
- HArray - array datatype
- and a metatype TransTmpl - transactional template which describes how data can be partitioned to memores, buses, streams etc..
- Think of it like a object which tells how to build frames from potentially sparse data structure in memory.
- The type itself drives it’s hw representation, that means the typesystem is user extensible.
- HWT is build as abstraction layer over all HDL languages to shield users from tricky features of such a languages. However nothings is sacrificed and everything can be overriden.
- HWT uses UVM like verification environment implemented in hwtSimApi. hwtSimApi can use verilator or python based simulator to achieve high-speed simulation or nearly-zero simulator spin-up.
- Most of parts of HWT ecosystem are independent and you can use them separately.
Other useful libraries¶
Where to start¶
Tutorial is in hwtLib.examples.*, every file in this module contains user-entry-level comments. E.g. hwtLib.examples.simple.SimpleUnit is a good starting point.
Component in HWT is a class which inherits from Unit class. Object of such a class can be converted to a vhdl/Verilog by from hwt.synthesizer.utils.to_rtl function.
You can also download this doc in PDF.
- hwt package
- Subpackages
- hwt.hdl package
- Subpackages
- Submodules
- hwt.hdl.constants module
- hwt.hdl.frameTmpl module
- hwt.hdl.frameTmplUtils module
- hwt.hdl.hdlObject module
- hwt.hdl.operator module
- hwt.hdl.operatorDefs module
- hwt.hdl.operatorUtils module
- hwt.hdl.portItem module
- hwt.hdl.sensitivityCtx module
- hwt.hdl.transPart module
- hwt.hdl.transTmpl module
- hwt.hdl.value module
- hwt.hdl.valueUtils module
- hwt.hdl.variables module
- hwt.interfaces package
- Subpackages
- Submodules
- hwt.interfaces.differential module
- hwt.interfaces.hsStructIntf module
- hwt.interfaces.intf_map module
- hwt.interfaces.signalOps module
- hwt.interfaces.std module
- hwt.interfaces.std_ip_defs module
- hwt.interfaces.structIntf module
- hwt.interfaces.tristate module
- hwt.interfaces.unionIntf module
- hwt.interfaces.utils module
- hwt.pyUtils package
- hwt.serializer package
- hwt.simulator package
- hwt.synthesizer package
- Subpackages
- Submodules
- hwt.synthesizer.byteOrder module
- hwt.synthesizer.componentPath module
- hwt.synthesizer.dummyPlatform module
- hwt.synthesizer.exceptions module
- hwt.synthesizer.hObjList module
- hwt.synthesizer.interface module
- hwt.synthesizer.param module
- hwt.synthesizer.typePath module
- hwt.synthesizer.unit module
- hwt.synthesizer.utils module
- hwt.synthesizer.vectorUtils module
- hwt.hdl package
- Submodules
- hwt.code module
- hwt.code_utils module
- hwt.constraints module
- hwt.doc_markers module
- hwt.math module
- Subpackages