Giter Club home page Giter Club logo

scalapipe's People

Contributors

joewing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

jmaglala

scalapipe's Issues

Infer the return type of functions

Currently it is necessary to use either "returns" or "output" in a function to specify the return type. It should be possible to infer the return type from the "ret" statement.

Clean up generated code

There are lots of remnants from the past in the generated C and HDL code that should be removed/cleaned up.

HDL FIFOs not sized appropriately

Currently, the FIFOs between kernels for HDL kernels are single registers. ScalaPipe should instead use FIFOs of the specified size and only use a register for FIFOs that are 1 deep.

Blocks and functions should be combined to form kernels.

Currently AutoPipeBlock and AutoPipeFunction exist. These should be replaced by AutoPipeKernel. It should be possible to use a kernel with zero or one outputs as a "function". To deal with having separate code, separate header files and code should be generated to handle kernels that are used as functions (within other kernels) and kernels used as streaming kernels (within the application DSL).

Automatic insertion of Dup blocks

Currently if an output is connected to multiple inputs, ScalaPipe will generate invalid C code. It should instead automatically insert dup blocks. At the very least it should warn about the situation rather than generating invalid code.

Fix application config parameters that are passed to FPGA kernels

It is currently possible to specify a config parameter on the command line (issue #18), but there is currently no way to route those parameters to a Kernel that is mapped to an FPGA device. Further, config parameters that affect sizing of Vectors (issue #20) are particularly problematic. The simplest solution is to disallow config parameters for FPGA kernels on the command line.

Add support for CPU masks

Currently ScalaPipe does not set CPU masks for threads. It should set a mask if one is specified.

Remove old DSL cruft.

The old "While", "If", etc. functions should be removed since ScalaPipe uses Scala Virtualized.

RAM signals should be exposed through the top level

For kernels mapped to an FPGA, the RAM signals should be combined via an arbiter and exposed through the top level with an optional memory subsystem. Currently, each kernel gets it own RAM backed by block RAMs.

Fix shutdown when using FPGA simulation

As currently implemented, ScalaPipe applications do not cleanly shut down when one or more kernels are mapped to hardware. At least in the case of simulation, it should be possible to add another signal to and from simulation to properly handle shutdown.

AutoPipeFunction cannot be used as both a function and a block

An AutoPipeFunction can be used as either a block or a function in a ScalaPipe program. However, attempting to use it as both causes problems since the emitted code is different, but will be stored in the same place.
A possible solution is to name blocks and functions differently, but this causes problems with external blocks.

Scheduler problem

The scheduler tries to run blocks when they cannot be run due to the unavailability of inputs and/or outputs. There is a hack fix for this by surrounding the code that tries to read/write from the input/output with an avail() check before reading from or writing to the stream.

Unify kernels and applications.

Currently, classes that describe kernels use a separate DSL from classes that describe the application topology. Merging the two DSLs into one would make it possible to specify mapping information at a more granular level.

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.