forflo / yodl Goto Github PK
View Code? Open in Web Editor NEWA VHDL frontend for Yosys
License: GNU General Public License v3.0
A VHDL frontend for Yosys
License: GNU General Public License v3.0
Hi Florian,
Reading through your thesis I got a question and didn't really find the answer.
On the figure 1.3 "Main Yosys components and data structures" you mention that there are two possible places where the VHDL frontend can be placed. You write in your thesis: "Yosys makes it possible to add the VHDL frontend component at two places. First, the frontend could produce an abstract syntax tree using the predefined AST format from Yosys, thus the component would be placed above AST. Second, the VHDL component could emit an RTLIL netlist serialized to normal ASCII text. Said text would then be put into the ilang frontend that does the deserialization."
Why did you decide to develop the VHDL frontend using the second option, not the first option?
Thank you in advance for the answer.
Best regards,
Dmitry
Also from my side thanks for this project, about time yosys had a vhdl backend.
Unfortunately, I actually also have the problem that no Makefile is created upon calling .configure, or rather, only one in ./vhdlpp is created. Calling make here very quickly results in some clang errors, after having installed clang-3.5, I get the following errors:
`clang++ -I. -I.. -I../libmisc -Isimple_tree -Imach7 -Imach7/patterns -Icatch -I/usr/local/share/yosys/include -I/usr/lib/libffi-3.2.1/include -I/usr/include/tcl8.6 -DYOSYS_ENABLE_READLINE -DYOSYS_ENABLE_PLUGINS -DYOSYS_ENABLE_TCL -DYOSYS_ENABLE_ABC -DYOSYS_ENABLE_COVER -D_YOSYS_ -DHAVE_CONFIG_H "-ggdb" "-O0" "--std=c++14" "-g" -Wall -Wextra -Wshadow -c architec.cc -o architec.o
In file included from architec.cc:22:
In file included from ./architec.h:24:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/map:61:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_map.h:63:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/tuple:39:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/array:38:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/stdexcept:39:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/string:52:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/basic_string.h:2815:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ext/string_conversions.h:43:
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/cstdio:120:11: error: no member named 'gets' in the global namespace
using ::gets;
~~^
1 error generated.
make: *** [architec.o] Error 1
`
Attacked also the config log.
It would be great to get a hint what may be wrong. Thanks!
Hi Florian,
Accidentally wondered into your code today and saw you do a dynamic_cast on the subject inside Case statements as for example here:
Lines 121 to 126 in 0e6237e
This is redundant and kills performance as you already have the properly cast subject inside a variable match0, which is local to each Case clause. The type of match0 in the first clause in the above example is Entity& and in the second clause - ScopeBase&.
If you have Match statement on multiple subjects, they are available via match0, match1 etc. respectively. One of the big contributions of Mach7 was not just the concise syntax, but also a very efficient type switch statement in which you get the results of essentially invoking dynamic_cast, which is extremely slow, at the cost of a direct jump.
Yuriy
Hi Florian,
First of all thank you for starting this project!
I've tried to install it and unfortunately was stopped at the first step. After I ran
./configure
at my system I was not able to find any Makefile in the projects directory.
I am not waiting that you completely solve my problem, but could you please give some hints where to search for the issue? Probably with your 5 minutes time you can save me hours.
The config.log is attached (zipped):
config.zip
Thank you in advance.
Best regards,
Dmitry
I would like to test yodl for synthesizing a VHDL "hello world" program and upload it into the icestick board (or compatible). I am compiling yodl, but I have not found the dot backend. I've pulled the latests yosys (from master), but the dot backend is not there. It would be great if you could point me were to download it. Thanks a lot for this wonderful project! :-)
...
main.cc:24:10: fatal error: 'backends/dot/dot.h' file not found
#include <backends/dot/dot.h>
^
21 warnings and 1 error generated.
Makefile:143: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Hi @forflo,
The fact that yodl is licensed under GPLv3 makes it impossible to incorporate it into yosys (which is licensed under ISC).
Are you aware of this?
How do you think about relicensing yodl to ISC?
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.