Skip to main content

hwtLib

CircleCI PyPI version Coverage Status Documentation Status Python version Join the chat at https://gitter.im/hwt-community/community

hwtLib is the library of hardware components writen using hwt library. Any component can be exported as Xilinx Vivado (IP-exact) or Quartus IPcore using IpPackager or as raw Verilog/VHDL/SystemC code and constraints by to_rtl() function. Target language is specified by keyword parameter serializer.

Content

For example there is a component AxiLiteEndpoint, wich is configured using c-like data type description and it generates a address decoders and convertors to other intefaces if requested. Another example is AxiS_frameParser, which is configured in same way and performs an extraction of the data fields from an input stream. Hwt type system does contains all c-like and SystemVerilog-like types but in addition it allows for better specification of padding and allignment and has an explicit data type for streams. This allows AxiS_frameParser to be easily configured to change alignemnt of the stream, cut/split/replace part of the steam with an easy to read HLS-like description.

Verifications are write in UVM like style and as hwt based design are actually a graph we can easily analyse them. This is every usefull as it allows us to generate most of the test environment automatically in a user controlled and predictable way and write mostly only a test scenario. For example there is no need to build bus transactions manually as AddressSpaceProbe can discover the mapped address space (for any interface) and we can set register values using a proxy as if it was a normal value. This means that you can write a verification which will have a component with arbitrary bus/address space and it will work as long as you keep the names of the registers the same.

Clock frequencies and target chips usually does not matter but if componet generates constraints it surely needs a correct clock period to generate them correctly.

Also note that the code of the components should be shared if @serializeParamsUniq is used, the design for largest FPGAs takes 5s to generate. The verification should be also fast (take look at travis build) if this is not your case you are probably doing something wrong.

  • abstract - abstract classes for component classes like bus endpoint, etc
  • amba - AXI interfaces and components for them (AXI3/4 DMAs, interconnects, Axi-stream components, Axi4Lite address decoders etc...)
  • avalon - same thing as amba just for Avalon interfaces (AvalonST, AvalonMM, ... and components for them)
  • cesnet - components and interfaces specific to Cesnet designs
  • clocking - various generic PLLs, timer generators etc.
  • examples - demonstrative examples of hwt functionality
  • handshaked - components for handshaked interfaces (FIFO, AsyncFifo, Resizer, interconnects, Register, ...)
  • img - image preprocessing utils (parse PNG font to bits for OLED, ...)
  • interfaces - various interfaces which does not have it's package yet
  • logic - various components like CRC generator, gray counter, decoders-encoders ...
  • mem - various memories (BRAM, ROM, FIFO, Async FIFO, CAM, LUT, ...)
  • peripheral - various peripheral interfaces and components (I2C, MDIO, SPI, UART, USB, Ethernet, ...)
  • sim - simulation utils
  • structManipulators - DMAs for specific data structures
  • tests - tests which are not related to another components
  • types - deffinitions of common types (uint32_t, ipv6_t, udp_t, ...)
  • xilinx - components, primitives and interfaces specific to Xilinx based designs (IPIF, LocalLink, ...)

If you see any problem/do not underestand something/do miss something open the github issue as others may step uppon same problem sooner or later.

Installation

# from PYPI (latest release)
sudo pip3 install hwtLib

# or from git (latest)
sudo pip3 install -r https://raw.githubusercontent.com/Nic30/hwtLib/master/doc/requirements.txt git+git://github.com/Nic30/hwtLib#egg=hwtLib --upgrade --no-cache

Repositories with opensource HW:

Metadata

Release files for hwtLib 2.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hwtLib 2.9
File Size Uploaded
hwtLib-2.9.tar.gz 588.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for hwtLib 2.9
File Interpreter ABI Platform
hwtLib-2.9-py3.9.egg Legacy Egg format - - Details
hwtLib-2.9-py3-none-any.whl Python 3 none any Details

Total release size: 3.6 MB

Release files / hwtLib-2.9.tar.gz

Download URL hwtLib-2.9.tar.gz
Size 588.8 kB
Tags Source
SHA-256 checksum
How to use checksums
906d76009963b480f9e9439b67f98763680500a17c1c399b408828f932e66e5d
BLAKE2b-256 checksum
How to use checksums
ca4ffcdf397e91f7fbdb06239f467216b9de2829e88f37a1fdebd22236d1c534
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6

Release files / hwtLib-2.9-py3.9.egg

Download URL hwtLib-2.9-py3.9.egg
Size 2.2 MB
Tags Egg
SHA-256 checksum
How to use checksums
f0144472c82be522ee2afa8623a1dad7265414d6ada612928cf2a40e92e348f4
BLAKE2b-256 checksum
How to use checksums
2fd0f57737eeed95b26715413bbca9763f4fb23d4fc20a3d8a4a4db06aef4c0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6

Release files / hwtLib-2.9-py3-none-any.whl

Download URL hwtLib-2.9-py3-none-any.whl
Size 898.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3aa455f3562bcba59c9c78a5e583354f758baec7a21610604579963214ecedca
BLAKE2b-256 checksum
How to use checksums
d081f879c652bb1bdd33ebaf98ed9d25adf563f697e4b094a8efeda39f711db6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6

Release history Release notifications | RSS feed

This release

2.9 This release

3 release files

2.8

1 release file

2.7

1 release file

2.6

1 release file

2.5

1 release file

2.4

1 release file

2.3

1 release file

2.2

1 release file

2.1

1 release file

2.0

1 release file

1.9

1 release file

1.8

1 release file

1.7

1 release file

1.6

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.1

1 release file

1.0

1 release file

0.9

1 release file

0.8

1 release file

0.7

1 release file

0.6

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page