1 /******************************************************************************
 2 * Copyright 2013, Hectic Tech (Jeff Heckey). All rights reserved
 3 ******************************************************************************/
 4 
 5 module fmul_rs #(
 6     parameter TAG = 4,    // Tag size
 7     parameter OP  = 3,    // OPCODE size
 8     parameter DATA = 32   // Data width
 9 ) (
10     input  wire                     clk,
11     input  wire                     rstn,
12 
13     input  wire [TAG-1:0]           cdb_r0_id,
14     input  wire [DATA-1:0]          cdb_r0_data,
15     input  wire [TAG-1:0]           cdb_r1_id,
16     input  wire [DATA-1:0]          cdb_r1_data,
17     input  wire [TAG-1:0]           cdb_r2_id,
18     input  wire [DATA-1:0]          cdb_r2_data,
19     input  wire [TAG-1:0]           cdb_a_id,
20     input  wire [DATA-1:0]          cdb_a_data,
21     input  wire [TAG-1:0]           cdb_m_id,
22     input  wire [DATA-1:0]          cdb_m_data,
23     input  wire [TAG-1:0]           cdb_l_id,
24     input  wire [DATA-1:0]          cdb_l_data,
25     input  wire [OP+4*TAG-1:0]      disp_bus0,
26     input  wire [OP+4*TAG-1:0]      disp_bus1,
27 
28     output wire [1:0]               func_val,
29     input  wire [1:0]               func_ack,
30     output wire [OP-1:0]            func0_op,
31     output wire [DATA-1:0]          func0_src1,
32     output wire [DATA-1:0]          func0_src2,
33     output wire [OP-1:0]            func1_op,
34     output wire [DATA-1:0]          func1_src1,
35     output wire [DATA-1:0]          func1_src2
36 );
37 
38 rs #(
39     .ID(4'b1010),
40     .TAG(TAG),
41     .OP(OP),
42     .DATA(DATA)
43 ) rs0 (
44     .clk(clk),
45     .rstn(rstn),
46     .cdb_r0_id(cdb_r0_id),
47     .cdb_r0_data(cdb_r0_data),
48     .cdb_r1_id(cdb_r1_id),
49     .cdb_r1_data(cdb_r1_data),
50     .cdb_r2_id(cdb_r2_id),
51     .cdb_r2_data(cdb_r2_data),
52     .cdb_a_id(cdb_a_id),
53     .cdb_a_data(cdb_a_data),
54     .cdb_m_id(cdb_m_id),
55     .cdb_m_data(cdb_m_data),
56     .cdb_l_id(cdb_l_id),
57     .cdb_l_data(cdb_l_data),
58     .disp_bus0(disp_bus0),
59     .disp_bus1(disp_bus1),
60     .func_val(func_val[0]),
61     .func_ack(func_ack[0]),
62     .func_op(func0_op),
63     .func_src1(func0_src1),
64     .func_src2(func0_src2)
65 );
66 
67 rs #(
68     .ID(4'b1011),
69     .TAG(TAG),
70     .OP(OP),
71     .DATA(DATA)
72 ) rs1 (
73     .clk(clk),
74     .rstn(rstn),
75     .cdb_r0_id(cdb_r0_id),
76     .cdb_r0_data(cdb_r0_data),
77     .cdb_r1_id(cdb_r1_id),
78     .cdb_r1_data(cdb_r1_data),
79     .cdb_r2_id(cdb_r2_id),
80     .cdb_r2_data(cdb_r2_data),
81     .cdb_a_id(cdb_a_id),
82     .cdb_a_data(cdb_a_data),
83     .cdb_m_id(cdb_m_id),
84     .cdb_m_data(cdb_m_data),
85     .cdb_l_id(cdb_l_id),
86     .cdb_l_data(cdb_l_data),
87     .disp_bus0(disp_bus0),
88     .disp_bus1(disp_bus1),
89     .func_val(func_val[1]),
90     .func_ack(func_ack[1]),
91     .func_op(func1_op),
92     .func_src1(func1_src1),
93     .func_src2(func1_src2)
94 );
95 
96 endmodule
97