-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VHDL Backend : Missing assignement in AddReduce.vhd ? #54
Comments
Hi, I have a few comments/queries, hopefully we can get this working. Have you been able to run one of the examples without issue? e.g. As well as the VHDL files produced, there will be some scripts for simulation and synthesis. Those can be a good starting point to jump from the conifer python to a Vivado project. There is support for GHDL simulation in conifer, you can access that by setting I tried doing something like you described, adding I do also see this Is there any reason to choose one backend over another for your project? It might be worth trying the HLS backend and exporting the C Synthesized model as Verilog if that's how you'll integrate it later. |
Also, |
Regarding depth and sparsity, since I left some information and performance plots on the PR #41 that introduced this HLS improvement for sparse trees. The change in resource usage and latency is small, but the improvement in synthesis time is significant. I've been evaluating the HLS backend with recent Vitis HLS versions (2023.1), which also tends to synthesize faster than older versions of the software.
What is the actual failure? Is there any information in the Vivado log file?
I saw this warning when running the Verilog export/synthesis, but not for the out-of-the-box VHDL simulation
|
I've tried with varying max-depth parameters in xgboost, and to me it looks like my computer doesn't have enough memory to build the model. VHDL backend :
And when it fails, there is no specific error message :
End of build.log file
End of ghdl.log
So I think Vivado crashes because it's out of memory to use. HLS Backend
End of build.log
I think that for our purpose, a max depth of 8 should still be able to work. I need to check with my team. And maybe I can just increase the memory of my machine to see if that allow to make bigger trees. Concerning the manual unrolling of trees, would it not be better to instead do recursive module instantiation ? Then we could create sparse trees in HDL code. |
Thanks for studying this in such detail! |
Hi,
I've started working with this tool. I tried to convert a simple xgboost tree into VHDL. Conifer is creating the files without a problem, however when I try to import them in Vivado it's a mess. After struggling a bit with the library names (it's my first time using VHDL, usually I'm working with Verilog), I decide to go another route and convert the VHDL code into a Verilog module using GHDL (and/or Yosys).
In case someone is curious, that's how I'm currently doing it :
It's seems to be working, and while my VHDL attemps crashed Vivado, the Verilog file plays very nicely.
However I get following warnings :
And indeed, when I try to run a simulation with Vivado I find that the output signal from the tree is 'XXXXXXXX', and I have some internal ZZZs .
Is this an issue from your side, or did something go wrong during the translation process ?
(I'm using Vivado 2020.1)
The text was updated successfully, but these errors were encountered: