intel / rohd-hcl Goto Github PK
View Code? Open in Web Editor NEWA hardware component library developed with ROHD.
Home Page: https://pub.dev/packages/rohd_hcl
License: BSD 3-Clause "New" or "Revised" License
A hardware component library developed with ROHD.
Home Page: https://pub.dev/packages/rohd_hcl
License: BSD 3-Clause "New" or "Revised" License
LFSRs are useful as pseudo-random deterministic generators in hardware.
Implement a Linear-feedback shift register (LFSR) in ROHD HCL
No response
No response
Parity for error checking
Implement a Parity module, support even and odd
No response
No response
It would be great to be able to experiment with the functionality of a component live in-browser using the ROHD-HCL web configuration app.
Some thoughts:
Configurator
can accept a set of "smoke test" type of stimulus, and information about interesting outputs
No response
No response
The architecture of BLOC is too complicated for confapp. It not that user friendly compared to Provider pattern (Model-View-ViewModel) pattern.
Refractor the state management to Riverpod Provider and Riverpod Generator. We can use MVVM structure as below:
/lib/src:
- constant/
- module/
- ui/
- model/
- view/
- services/
- provider/
The pattern above is cleaner and easier to maintain compared to cubit and BLOC.
We can just use back BLOC.
No response
See improvements in intel/rohd#329
Same as intel/rohd#329
No response
No response
The PNSE
port is optional in the APB spec, but not in the ApbInterface
. Review the spec and look for any other ports that are optional and ensure they are configurable.
No response
No response
No response
No response
No response
No response
Sometimes a strobe/enable is on a byte boundary, but other times it might be per word or some other granularity. It would be nice if the interface supported a configurable granularity instead of just bytes.
Modify StrobeDataPortInterface
to support a configurable partitioning of enables other than just bytes.
No response
No response
Integer multiplication in a pipeline is a nice component for the library
A simple pipelined integer multiplier
No response
No response
A round-robin arbiter is a common component for arbitration, would be nice to have in the library
Implement a simple round-robin arbiter
No response
No response
Since both OneHotToBinary
and BinaryToOneHot
have one input and one output, it would be nice to access them with an API on top of Logic
and LogicValue
to convert easily.
Add oneHotToBinary
and binaryToOneHot
as extension
s on Logic
and LogicValue
.
No response
No response
Sorting is a useful component for the library
A simple first version of sorting to include in the library
No response
No response
There's no need to use reset
in combinational logic. It is probably a remnant of an old implementation. It should be removed.
No response
No response
No response
No response
No response
No response
People may save a configuration a JSON then want to:
Make the JSON configuration area editable in the confapp and update the web-app fields as JSON is updated.
No response
No response
Some RF implementations allow strobing/byte enable on the read side in addition to the write side. This can be helpful for latch-based memory when writing different portions of a line of data, or for power savings.
Add support for StrobeDataPortInterface
on read interfaces of RegisterFile
, and any other Memory
s where it makes sense.
No response
No response
Useful for efficient encoders and arithmetic
Implement generic capabilities for generating prefix trees
No response
No response
The APB spec includes a table describing which signals are optional or not based on APB version. It would be helpful for users to have a mechanism to properly instantiate a version of the APB interface that follows the spec rules for that version.
Maybe special named constructors which only expose proper configurability based on the version of the APB interface being constructed.
No response
No response
Configurable counters are useful!
No response
No response
There's already an or
reduction via Logic.or()
that we should use instead of the OrReduction
module.
No response
No response
No response
No response
No response
No response
Finding the N'th 0 or 1 from the beginning/end of a bus and providing the index
A configurable solution that supports all of these
No response
No response
Implement a flexible, configurable CRC generator component
See https://en.wikipedia.org/wiki/Cyclic_redundancy_check
The CRC generator should be extremely configurable to generate practically any CRC that may be needed. Some configurability that would be nice:
It should be able to both generate and check CRC.
No response
No response
The Gray Code to Binary Converter is used to convert gray code value to a binary number while binary to Gray Converter convert binary number to gray code.
An implementation in ROHD-HCL
No response
No response
UI for RTL code generation with interactive customization enhance user experience in using the hardware component library.
No response
No response
There's sometimes useful information worth adding to the confapp for components, for example:
Add a way to add links that would appear in the confapp in Configurator
. Perhaps make certain links mandatory for all ROHD-HCL components?
No response
No response
It would be great for our documentation of components to have live schematic views of small parameter forms so that people can visualize how they operate rather than having to read code.
I found a package called d3-hwschematic that does schematic generation for a different language (HWT) written by Nic30. It turns out it uses a form of JSON to drive the d3 graphical kit (based on Eclipse). This is written as an interactive web-page for which you can request any input netlist to be rendered.
However, we can simply have a pre-generated HTML for each component to be embedded in our documentation. We simply need a conversion path: that path is ROHD->Verilog; Yosys->JSON; then yosys.json -> d3.json (converter is in d3-hwschematic distributed Javascript)
The branch https://github.com/intel/rohd-hcl/tree/synthesis has a gh_action/create_htmls.sh that runs on Verilog produced by dart test as an experimental flow. Since there are paths in the HTML, we need to decide where these files will sit in the deployed documentation.
Commercial options like nlview are available with a open-source option. It has some incremental expansion operations.
When we write documentation we need to refer to HTML files that do not yet exist (e.g., generated schematics) on the deploy site. The generated schematics would likely be part of the add of the same pull request as the referring documentation.
Create a new html link in a document to an as yet generated schematic in the gen/ area. It may be generatable, but not yet deployed on the production site.
Then push this to a fork and do a pull request. The pull request lint checks will fail.
Warnings on dead links.
Failure and job stoppage on 'dead' or really 'not yet alive' links.
No response
No response
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.