Skip to content
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

Is there anyway to just generate verilog design? #277

Open
tissue3 opened this issue Oct 27, 2019 · 1 comment
Open

Is there anyway to just generate verilog design? #277

tissue3 opened this issue Oct 27, 2019 · 1 comment

Comments

@tissue3
Copy link

tissue3 commented Oct 27, 2019

I would like to see some area estimation result instead of getting actual bitstreams because it takes too long time. I wonder if there a way for spatial to just generate verilog but not bitstream, so I can use Vivado to synthesis the design.
I've tried to synthesis Top.v in verilog-aws with the following code and got a lot of syntax errors.

@mattfel1
Copy link
Member

mattfel1 commented Oct 28, 2019

Hi. There was a bit of refactoring that has been ongoing for the past few weeks, but here is what you should do assuming you are on the latest version of spatial or spatial-quickstart. If you are getting weird, random errors we most likely just need to play around with the .ivy2 cache to get everything up to date.

You can generate the raw verilog for your app with any backend, but if you are using AWS_F1, you just need to run make aws-F1-hw. If you look at the makefile, you can just comment out this line of that target and you should have everything you need. python aws.sw-resources/gen_aws_design.py $(AWS_HOME)/hdk/cl/examples/${app_name}. You really just need the sbt "runMain spatialIP.Instantiator --verilog --testArgs aws" command to shake the verilog out of the generated Chisel.

All of the app's verilog will get written to verilog/SpatialIP.v. You will also probably need some of the hardware templates that it copies into that directory to actually synthesize (SRAMVerilogAWS.v, RetimeShiftRegister.sv, etc).

We are just starting to put together (informal) guides on modifying parts of core Spatial here. https://github.com/stanford-ppl/spatial/blob/master/resources/AddingBackend.md. If you just look at the figure at the end of this document it should help explain what comes out of the make [AWS-F1-]hw in the generated directory. If you don't have DRAM streams or are using pure AXI stream interfaces and you just want the "AccelUnit" IP, you can export FRINGELESS=1 to make it not include any of the DMA Fringe stuff. This may only work for the VCS target right now and is very experimental though.

If your goal is to get some P&R or synth numbers for a Xilinx board that isn't going to get dropped into the FPGA ecosystem, I recommend using the Zynq, ZCU, or KCU1500 backends. If you are targeting a different board and already have the tcl scripts set up and just need verilog, we would be happy to incorporate it in the compiler as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants