runfpga: fleet.jar
$(java) -jar fleet.jar target=fpga run
-upload: fleet.jar build/main.bit
+upload: fleet.jar build/fpga/main.bit
mkdir -p build
- rsync -zare ssh --progress --verbose build/main.bit root@bee441.megacz.com:/var/slipway/megacz.bit
+ rsync -zare ssh --progress --verbose build/fpga/main.bit root@bee441.megacz.com:/var/slipway/megacz.bit
uploadtest:
make upload
mkdir -p build/fpga
$(java) $(cp) edu.berkeley.fleet.fpga.Fpga > build/fpga/fabric.v
-build/main.bit: build/fpga/fabric.v $(verilog_files)
+build/fpga/main.bit: build/fpga/fabric.v $(verilog_files)
make fleet.jar
cp src/edu/berkeley/fleet/fpga/* build/fpga
for A in `find ships -name \*.ship`;\
$(java) -cp fleet.jar edu.berkeley.fleet.fpga.Generator build/fpga/
rsync -zare ssh --progress --delete --verbose ./ ${host}:${remote_dir}
time ssh ${host} 'make -C ${remote_dir} synth XILINX=${remote_xilinx}'
- scp ${host}:${remote_dir}/build/main.bit build/
+ scp ${host}:${remote_dir}/build/fpga/main.bit build/fpga/
synth:
cd build/fpga; ln -sf ../src/edu/berkeley/fleet/fpga/* .
);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(prefix+"/"+name+".v")));
- pw.println("`define INSTRUCTION_BENKOBOX_OFFSET (1+`COUNT_BITS+`DESTINATION_ADDRESS_BITS+5)");
- pw.println("`define instruction_dest(i) i[(24+11-1):24]");
- pw.println("`define packet_dest_steer(p) p[0]");
- pw.println("`define instruction_dest_steer(i) i[24]");
-
- pw.println("`define opcode_base (1+`DESTINATION_ADDRESS_BITS+`COUNT_BITS)");
- pw.println("`define instruction_bit_tokenout(instruction) instruction[`opcode_base+4]");
- pw.println("`define instruction_bit_dataout(instruction) instruction[`opcode_base+3]");
- pw.println("`define instruction_bit_latch(instruction) instruction[`opcode_base+2]");
- pw.println("`define instruction_bit_datain(instruction) instruction[`opcode_base+1]");
- pw.println("`define instruction_bit_tokenin(instruction) instruction[`opcode_base+0]");
- pw.println("`define instruction_bit_dest(instruction) instruction[(`DESTINATION_ADDRESS_BITS):1]");
- pw.println("`define instruction_bit_recycle(instruction) instruction[0]");
+ pw.println("`define instruction_bit_tokenout(instruction) instruction["+OFFSET_TO+"]");
+ pw.println("`define instruction_bit_dataout(instruction) instruction["+OFFSET_DO+"]");
+ pw.println("`define instruction_bit_latch(instruction) instruction["+OFFSET_DL+"]");
+ pw.println("`define instruction_bit_datain(instruction) instruction["+OFFSET_DI+"]");
+ pw.println("`define instruction_bit_tokenin(instruction) instruction["+OFFSET_TI+"]");
+ pw.println("`define instruction_bit_recycle(instruction) instruction["+OFFSET_RQ+"]");
+ pw.println("`define instruction_bit_dest(instruction) instruction["+(OFFSET_DEST+WIDTH_DEST_ADDR-1)+":"+OFFSET_DEST+"]");
+ pw.println("`define instruction_count(instruction) instruction["+(OFFSET_COUNT+WIDTH_COUNT-1)+":"+OFFSET_COUNT+"]");
pw.println("`define instruction_is_kill(i) (`instruction_bit_latch(i) && (!(`instruction_bit_datain(i))))");
pw.println("`define instruction_bit_kill_only_standing(i) (`instruction_bit_tokenin(i))");
- pw.println("`define instruction_count(instruction) instruction[(1+`DESTINATION_ADDRESS_BITS+`COUNT_BITS-1):(1+`DESTINATION_ADDRESS_BITS)]");
-
pw.println("`define instruction_is_clog(instruction) (`instruction_count(instruction)==0 && !`instruction_bit_tokenin(instruction) && !`instruction_bit_datain(instruction) && !`instruction_bit_tokenout(instruction) && !`instruction_bit_dataout(instruction))");
pw.println("`define instruction_is_unclog(instruction) (`instruction_bit_kill_only_standing(instruction) && `instruction_is_kill(instruction))");
box.dump(pw);