Coder Social home page Coder Social logo

hwtlib's People

Contributors

nic30 avatar optical-o avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

hwtlib's Issues

Merge Axi_r/wDatapump, StructReader/Write, ArrayItemGetter and other bus frame logic

The problem is that the DMA logic for bus interfaces is fragmented over multiple components which do something similar, but in a different way. There is a problem is also support for out-of-order which complicates the things.
Because of this we need a single implementation of read and write component (separately) which will be easily configurable.

Expected functionality:

(from Axi_r/wDatapump)

  • If data is larger than max frame on target bus split it on multiple frames on bus but act as a single frame on driver side

(from StructReader/Writer)

  • describe the data using data type + transaction template (not just max frame len) because we need this for alignment analysis and frame split analysis
  • this means we should be also able to describe dense data structures (padding)

(from ArrayItemGetter, AddrDataHs_to_Axi)

  • if data is smaller than bus word, roundup the address and construct the part selection logic for data word

(from StructReader/Writer and ArrayItemGetter)

  • ability to specify also the alignment of the start of the data
  • ability to automatically generate padding to best fit for data smaller and larger than the bus word

(from RamAsHs)

  • support for latency synchronized buses like BRAM port or some versions of Avalon-MM

It is also expected that the implementation will be just some kind of manager which will generate required logic (that means that this will not be an independent component.) The reason for this is to allow conditional modification of local memory resources in current component without need for generating a complex IO of bus connector.

Examples do not work out of the box (automatic test against pip required for check if new release of dependency is required)

Hi,

a lot of the more elaborate examples do not work. This seems mostly because of API changes that were made in the past.

A baseline pip install hwtlib hwt as well as the latest git master clone will give the same issues.

For the StructReader, I see this error:

   from hwtLib.amba.datapump.intf import AxiRDatapumpIntf
ModuleNotFoundError: No module named 'hwtLib.amba.datapump'

For other examples there are other errors. But all i have traced back is linked to changed APIs (imports or function names).

This makes is really hard to understand some advanced concepts because there is not much documentation except the examples. I strongly recommed to add the examples to a regression suite so it does not break.

regards
Philip

usb: 1.0 phy (softcore) and USB3300 (ULPI based USB 2.0 phy IC)

union as regular htype

Union type which will allow much easier implementation use of parsers and frame builders

SimpleUnit example error

Hi, I get this error when trying to execute the code in SimpleUnit example:

Traceback (most recent call last):
  File "hwt_components/test.py", line 45, in <module>
    from hwt.synthesizer.utils import to_rtl_str
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/synthesizer/utils.py", line 8, in <module>
    from hwt.serializer.vhdl import Vhdl2008Serializer
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/vhdl/__init__.py", line 5, in <module>

    from hwt.serializer.vhdl.serializer import ToHdlAstVhdl2008
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/vhdl/serializer.py", line 11, in <module>
    from hwt.serializer.vhdl.ops import ToHdlAstVhdl2008_ops
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/vhdl/ops.py", line 14, in <module>
    from hwt.serializer.hwt.ops import ToHdlAstHwt_ops
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/hwt/__init__.py", line 5, in <module>
    from hwt.serializer.hwt.serializer import ToHdlAstHwt
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/hwt/serializer.py", line 11, in <module>
    from hwt.serializer.hwt.ops import ToHdlAstHwt_ops
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/hwt/ops.py", line 7, in <module>
    from hwt.serializer.generic.ops import HWT_TO_HDLCONVEROTR_OPS
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/generic/ops.py", line 23, in <module>
    AllOps.ADD,
  File "/home/welberthime/.local/lib/python3.6/site-packages/hwt/serializer/generic/ops.py", line 6, in <dictcomp>
    **{op: getattr(HdlOpType, op.id) for op in [
  File "/usr/lib/python3.6/enum.py", line 326, in __getattr__
    raise AttributeError(name) from None
AttributeError: NEQ

Support for callbacks in agents

Each value which is agent sending or receiving should have working callback to simplify verification and to add better support for asynchronous programming for tests.

Final implementation of HStream as HType

HStream should be array of arbitrary size with.
HStream will come in handy in frame parsers/forges etc., when we need to describe fields in structure with arbitrary size.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.