PipelineC
pycparser
PipelineC | pycparser | |
---|---|---|
46 | 8 | |
544 | 3,130 | |
- | - | |
9.5 | 5.2 | |
1 day ago | 12 days ago | |
Python | Python | |
GNU General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
PipelineC
-
PipelineC Example: FM Radio Demodulation (FPGA SDR)
Related: PipelineC: A C-like hardware description language (HDL):
https://github.com/JulianKemmerer/PipelineC
- Generate non-CPU FPGA circuits from a C-like language
- What makes C, Verilog, Java, Python, etc. so different?
-
What are your private FPGA projects and why?
https://github.com/JulianKemmerer/PipelineC :)
-
What's the right path to learning for someone coming from software?
However, I think its still possible to have a productive C->HDL journey. Check out PipelineC, https://github.com/JulianKemmerer/PipelineC, its meant for folks with C experience to get right into doing RTL style reasoning :)
- Seeking Advice on How to approch RTL Programming
-
Using FPGAs for computations as a beginner
https://github.com/JulianKemmerer/PipelineC-Graphics/blob/main/doc/Sphery-vs-Shapes.pdf https://github.com/JulianKemmerer/PipelineC
-
Generating pipeline stages automatically?
This is exactly what the PipelineC tool was made for. https://github.com/JulianKemmerer/PipelineC
- Does Xilinx use multiplication algorithms to speed up/reduce the multipliers size?
- Sphery vs. Shapes, the first raytraced game that is not software
pycparser
-
Easy-to-use open source C preprocessor library?
In python, we have pycparser https://github.com/eliben/pycparser to parse C files into a tree.
-
What package is used to analyze C code?
I found pycparser which can probably do what you need, but it might not be very easy to use.
- Complete C99 parser in pure Python
-
Cake: C23 Front End and Transpiler C23 – C99
You can also use pycparser[0]. It is fully compatible C99, but be careful it doesn't support gnu extensions (like attributes, #indent, asm() ...). You can however work around most of them by -D defining them to empty macro in the argument.
[0] https://github.com/eliben/pycparser
-
When do you truly know C?
I wrote that tiny C compiler in Python and chose pycparser as the starting point. If you run C source code through pycparser it yields an Abstract syntax tree (AST) which is an in-memory, fine-grained tree representation of the C source code (for example, compound expressions are represented as binary trees that obey operator precedence rules which is extremely helpful).
-
Script that detects functions written in C
The difficulty is that in c you can do all kinds of weird and wonderful things... Doing it just by a text analysis of three code is going to be difficult to say the least. You could look at something like this parser though I suspect you might get better results using some of the existing utilities out there
-
Check function length in C?
Just find a C parser/lexer/whatever that'll handle the parsing for you. You can probably use it to determine where each function starts, where it ends, what it's called, etc.
-
Anyone interested in working on a hardware (FPGA/ASIC) related project? Not a compilers person by training, looking for help.
In terms of functionality the PipelineC project is pretty mature. But the back end implementation is hacky involves far to much reliance on a pycparser setup I dont understand (other than basic AST traversal was all needed). And as I slowly look to add not-strictly-C language concepts I would love to be working with someone who knows whats going on with compilers, syntaxes, intermediates. Some kind of Rust or C++ front end would be cool - template types and constexpr like things are something I am really missing being limited to C at the moment. I'll teach you FPGA things in return :-p
What are some alternatives?
pygears - HW Design: A Functional Approach
narcissus - INACTIVE - http://mzl.la/ghe-archive - The Narcissus meta-circular JavaScript interpreter
cocotb - cocotb, a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python
cake - Cake a C23 front end and transpiler written in C
nngen - NNgen: A Fully-Customizable Hardware Synthesis Compiler for Deep Neural Network
c99-to-c89 - Tool to convert C99 code to MSVC-compatible C89
hls4ml - Machine learning on FPGAs using HLS
Cello - Higher level programming in C
antikernel - The Antikernel operating system project
bsc - Bluespec Compiler (BSC)
Silice - Silice is an easy-to-learn, powerful hardware description language, that simplifies designing hardware algorithms with parallelism and pipelines.
basejump_stl - BaseJump STL: A Standard Template Library for SystemVerilog