FPGA-Fleet updates
[fleet.git] / src / edu / berkeley / fleet / slipway / inbox.v
1 `include "macros.v"
2
3 module inbox(clk,
4                   instr_r,       instr_a_,      instr_d,
5                   fabric_in_r,   fabric_in_a_,  fabric_in_d,
6                   fabric_out_r_, fabric_out_a,  fabric_out_d_,
7                   ship_r_,       ship_a,        ship_d_
8                  );
9
10   input clk;
11
12   output fabric_in_a_;
13   input  fabric_in_r;
14   input  [(`PACKET_WIDTH-1):0] fabric_in_d;
15   `output(fabric_out_r,  fabric_out_r_, fabric_out_a,   [(`PACKET_WIDTH-1):0],       fabric_out_d_)
16   `defreg(fabric_out_d_,                                [(`PACKET_WIDTH-1):0],       fabric_out_d)
17   `output(ship_r,         ship_r_,        ship_a,       [(`PACKET_WIDTH-1):0],       ship_d_)
18   reg [(`PACKET_WIDTH-1):0] ship_d;
19   assign ship_d_ = { `packet_dest(ship_d), `packet_data(ship_d) };
20
21   `input(instr_r,        instr_a,       instr_a_,       [(`INSTRUCTION_WIDTH-1):0],  instr_d)
22
23   wire fabric_in_a0_;
24   reg fabric_in_a0;
25   assign fabric_in_a0_ = fabric_in_a0;
26
27   `define token_in_r fabric_in_r0
28   `define token_in_a fabric_in_a0
29   `define token_in_d fabric_in_d0
30
31   `define data_out_r ship_r
32   `define data_out_a ship_a
33   `define data_out_d ship_d
34
35   `define token_out_r fabric_out_r
36   `define token_out_a fabric_out_a
37   `define token_out_d fabric_out_d
38
39   `define data_in_d `packet_data(fabric_in_d0)
40   `define data_in_a fabric_in_a0
41   `define data_in_r fabric_in_r0
42
43   wire  [(`PACKET_WIDTH-1):0] fabric_in_d0;
44
45   fifo4 dfifo(clk, fabric_in_r,  fabric_in_a_,  fabric_in_d,
46                    fabric_in_r0, fabric_in_a0_, fabric_in_d0);
47
48   `define extra `packet_dest(`data_out_d) = `packet_dest(fabric_in_d0);
49   `include "box.inc"
50 endmodule