stanford-ppl / spatial

Spatial: "Specify Parameterized Accelerators Through Inordinately Abstract Language"
https://spatial.stanford.edu
MIT License
274 stars 32 forks source link

Splitting AccelTop into separate modules #177

Closed kelayamatoz closed 5 years ago

kelayamatoz commented 5 years ago

Right now all the generated verilog code for inner pipes is stored in AccelTop. As a result, the AccelTop grows quite big and prevents the Vivado / Quartus synthesizer from running parallel synth jobs. This is related to how chiselgen decides to generate modules. From what I understand, the state machine for each inner pipe is stored in a separate module, while the data processing part of each inner pipe is stored within the AccelTop. As a result, Top.v would always contain one large module accompanied by a series of small modules for state machines.

mattfel1 commented 5 years ago

It is done. You can use --modular and --nomodular flags now for bin/spatial. Modular splits acceltop into many modules hierarchically. --nomodular does the usual generation that we've always done from the beginning, but the chisel is a little refactored to hopefully require less memory and compute when compiling with sbt.

--modular is default now