PipelineC icon indicating copy to clipboard operation
PipelineC copied to clipboard

A C-like hardware description language (HDL) adding high level synthesis(HLS)-like automatic pipelining as a language construct/compiler feature.

Results 86 PipelineC issues
Sort by recently updated
recently updated
newest added

Current [built in block/LUT RAM functionality ](https://github.com/JulianKemmerer/PipelineC/wiki/Automatically-Generated-Functionality#rams) does not support more than one read port. I.e. the supported dual port RAMs are one read port, one write port. ```c rd_val...

enhancement
help wanted

Opposite to https://github.com/JulianKemmerer/PipelineC/issues/79 where it is requested that command line arguments be able to set pragmas ...do the reverse as well. Allow pragmas in code to specify things from command...

enhancement
help wanted
good first issue

Currently the tool outputs a final `top.vhd` with a `top` entity. Allow the user to specify any `top` name instead (cmd line, pragma, both?) Default should really be `pipelinec_top`...

enhancement
good first issue

Currently [FSM style](https://github.com/JulianKemmerer/PipelineC/wiki/FSM-Style) functions cannot be marked as top level `MAIN` functions. This is because of the `ready+valid handshake` that is built into the hardware implementation of these functions for...

enhancement
help wanted

Currently when selecting bits / slicing bit arrays the bounds must be constant., ex. ```c uint32_t x; // x(31 downto 0) uint1_t y = x(15); // y = x[15] uint16_t...

enhancement
help wanted

As show in https://github.com/JulianKemmerer/PipelineC/issues/87 it is possible to use variable names as functions (and arrays)... ```c uint32_t x; ... uint1_t b = x[3]; // Fourth bit of x(31 downto 0)...

enhancement
help wanted

FSM style functions typically create a new instance if not marked as SINGLE_INST. If not single instance, there should only ever be one `instance of a func per MAIN ~thread`...

enhancement
help wanted

Non block RAM based ROMs using muxing/LUTs can be done using [simple arrays](https://github.com/JulianKemmerer/PipelineC/wiki/Arrays). Using block rams for ROMs requires using a [RAM primitive](https://github.com/JulianKemmerer/PipelineC/wiki/Automatically-Generated-Functionality#rams) and simply never using the write enable...

enhancement
help wanted

Similar to how [async clock crossings](https://github.com/JulianKemmerer/PipelineC/wiki/Main-Function-Clock-Crossings) have a FIFO interface with valid/not empty/write+ready/not full signals... do same thing for a "~0 element fifo" same clock domain data transfer. Just becomes...

enhancement
help wanted