Skip to content

Commit 4938f0a

Browse files
authored
Merge pull request #2662 from Pinata-Consulting/mock-array-multiplier
Mock array multiplier
2 parents e1e016f + 111ddcf commit 4938f0a

File tree

9 files changed

+49810
-172
lines changed

9 files changed

+49810
-172
lines changed

flow/designs/asap7/mock-array/Element/config.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export SDC_FILE = designs/asap7/mock-array/constraints.sdc
88

99
export PLATFORM = asap7
1010

11-
export PLACE_DENSITY = 0.50
11+
export PLACE_DENSITY = 0.82
1212

1313
export CORE_AREA = $(shell \
1414
export MOCK_ARRAY_TABLE="$(MOCK_ARRAY_TABLE)" && \

flow/designs/asap7/mock-array/metadata-base-ok.json

Lines changed: 223 additions & 156 deletions
Large diffs are not rendered by default.

flow/designs/asap7/mock-array/rules-base.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"synth__design__instance__area__stdcell": {
3-
"value": 19674.33,
3+
"value": 113607.14,
44
"compare": "<="
55
},
66
"constraints__clocks__count": {
@@ -48,7 +48,7 @@
4848
"compare": "<="
4949
},
5050
"finish__timing__setup__ws": {
51-
"value": 0.0,
51+
"value": -32.57,
5252
"compare": ">="
5353
},
5454
"finish__design__instance__area": {

flow/designs/src/mock-array/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ target/
77
.bloop/
88
.bsp/
99
test_run_dir/
10+
*.f

flow/designs/src/mock-array/Element.v

Lines changed: 76 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,26 @@ module Element(
2424
output io_lsbOuts_6,
2525
output io_lsbOuts_7
2626
);
27+
wire [31:0] io_outs_left_mult_a;
28+
wire [31:0] io_outs_left_mult_b;
29+
wire [31:0] io_outs_left_mult_o;
30+
wire io_outs_left_mult_rst;
31+
wire io_outs_left_mult_clk;
32+
wire [31:0] io_outs_up_mult_a;
33+
wire [31:0] io_outs_up_mult_b;
34+
wire [31:0] io_outs_up_mult_o;
35+
wire io_outs_up_mult_rst;
36+
wire io_outs_up_mult_clk;
37+
wire [31:0] io_outs_right_mult_a;
38+
wire [31:0] io_outs_right_mult_b;
39+
wire [31:0] io_outs_right_mult_o;
40+
wire io_outs_right_mult_rst;
41+
wire io_outs_right_mult_clk;
42+
wire [31:0] io_outs_down_mult_a;
43+
wire [31:0] io_outs_down_mult_b;
44+
wire [31:0] io_outs_down_mult_o;
45+
wire io_outs_down_mult_rst;
46+
wire io_outs_down_mult_clk;
2747
reg [63:0] REG;
2848
reg [63:0] REG_1;
2949
reg [63:0] REG_2;
@@ -32,15 +52,43 @@ module Element(
3252
reg [63:0] REG_5;
3353
reg [63:0] REG_6;
3454
reg [63:0] REG_7;
35-
reg [63:0] io_outs_left_REG;
36-
reg [63:0] io_outs_up_REG;
37-
reg [63:0] io_outs_right_REG;
38-
reg [63:0] io_outs_down_REG;
55+
reg [31:0] io_outs_left_REG;
56+
reg [31:0] io_outs_up_REG;
57+
reg [31:0] io_outs_right_REG;
58+
reg [31:0] io_outs_down_REG;
3959
reg REG_8;
40-
assign io_outs_down = io_outs_down_REG;
41-
assign io_outs_right = io_outs_right_REG;
42-
assign io_outs_up = io_outs_up_REG;
43-
assign io_outs_left = io_outs_left_REG;
60+
multiplier io_outs_left_mult (
61+
.a(io_outs_left_mult_a),
62+
.b(io_outs_left_mult_b),
63+
.o(io_outs_left_mult_o),
64+
.rst(io_outs_left_mult_rst),
65+
.clk(io_outs_left_mult_clk)
66+
);
67+
multiplier io_outs_up_mult (
68+
.a(io_outs_up_mult_a),
69+
.b(io_outs_up_mult_b),
70+
.o(io_outs_up_mult_o),
71+
.rst(io_outs_up_mult_rst),
72+
.clk(io_outs_up_mult_clk)
73+
);
74+
multiplier io_outs_right_mult (
75+
.a(io_outs_right_mult_a),
76+
.b(io_outs_right_mult_b),
77+
.o(io_outs_right_mult_o),
78+
.rst(io_outs_right_mult_rst),
79+
.clk(io_outs_right_mult_clk)
80+
);
81+
multiplier io_outs_down_mult (
82+
.a(io_outs_down_mult_a),
83+
.b(io_outs_down_mult_b),
84+
.o(io_outs_down_mult_o),
85+
.rst(io_outs_down_mult_rst),
86+
.clk(io_outs_down_mult_clk)
87+
);
88+
assign io_outs_down = {{32'd0}, io_outs_down_REG};
89+
assign io_outs_right = {{32'd0}, io_outs_right_REG};
90+
assign io_outs_up = {{32'd0}, io_outs_up_REG};
91+
assign io_outs_left = {{32'd0}, io_outs_left_REG};
4492
assign io_lsbOuts_0 = io_lsbIns_1;
4593
assign io_lsbOuts_1 = io_lsbIns_2;
4694
assign io_lsbOuts_2 = io_lsbIns_3;
@@ -49,6 +97,22 @@ module Element(
4997
assign io_lsbOuts_5 = io_lsbIns_6;
5098
assign io_lsbOuts_6 = io_lsbIns_7;
5199
assign io_lsbOuts_7 = io_outs_left[0];
100+
assign io_outs_left_mult_a = REG[31:0];
101+
assign io_outs_left_mult_b = REG_1[31:0];
102+
assign io_outs_left_mult_rst = 1'h0;
103+
assign io_outs_left_mult_clk = clock;
104+
assign io_outs_up_mult_a = REG_2[31:0];
105+
assign io_outs_up_mult_b = REG_3[31:0];
106+
assign io_outs_up_mult_rst = 1'h0;
107+
assign io_outs_up_mult_clk = clock;
108+
assign io_outs_right_mult_a = REG_4[31:0];
109+
assign io_outs_right_mult_b = REG_5[31:0];
110+
assign io_outs_right_mult_rst = 1'h0;
111+
assign io_outs_right_mult_clk = clock;
112+
assign io_outs_down_mult_a = REG_6[31:0];
113+
assign io_outs_down_mult_b = REG_7[31:0];
114+
assign io_outs_down_mult_rst = 1'h0;
115+
assign io_outs_down_mult_clk = clock;
52116
always @(posedge clock) begin
53117
REG <= io_ins_down;
54118
REG_1 <= io_ins_left;
@@ -58,10 +122,10 @@ module Element(
58122
REG_5 <= io_ins_right;
59123
REG_6 <= io_ins_left;
60124
REG_7 <= io_ins_up;
61-
io_outs_left_REG <= REG ^ REG_1;
62-
io_outs_up_REG <= REG_2 ^ REG_3;
63-
io_outs_right_REG <= REG_4 ^ REG_5;
64-
io_outs_down_REG <= REG_6 ^ REG_7;
125+
io_outs_left_REG <= io_outs_left_mult_o;
126+
io_outs_up_REG <= io_outs_up_mult_o;
127+
io_outs_right_REG <= io_outs_right_mult_o;
128+
io_outs_down_REG <= io_outs_down_mult_o;
65129
REG_8 <= io_lsbIns_4;
66130
end
67131
endmodule

flow/designs/src/mock-array/build.sbt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ resolvers ++= Seq(
2525
Resolver.sonatypeRepo("snapshots"),
2626
Resolver.sonatypeRepo("releases")
2727
)
28+
29+
resourceDirectory in Compile := baseDirectory.value / "src/main/resources"

0 commit comments

Comments
 (0)