Skip to content

Commit 0e6f3f7

Browse files
authored
Merge pull request #2261 from verilog-to-routing/noc_benchmark_design_final_2
Noc benchmark design final 2
2 parents ab2e17f + ed5d504 commit 0e6f3f7

File tree

170 files changed

+15038178
-7
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

170 files changed

+15038178
-7
lines changed

vtr_flow/arch/noc/mesh_noc_topology/stratixiv_arch.timing_small_with_a_embedded_mesh_noc_toplogy.xml

Lines changed: 48436 additions & 0 deletions
Large diffs are not rendered by default.

vtr_flow/arch/noc/mesh_noc_topology/stratixiv_arch.timing_with_a_embedded_10X10_mesh_noc_topology.xml

Lines changed: 48435 additions & 0 deletions
Large diffs are not rendered by default.

vtr_flow/arch/noc/mesh_noc_topology/stratixiv_arch.timing_with_a_embedded_3X3_mesh_noc_topology_2.xml

Lines changed: 48436 additions & 0 deletions
Large diffs are not rendered by default.

vtr_flow/arch/noc/mesh_noc_topology/stratixiv_arch.timing_with_a_embedded_4X4_mesh_noc_topology.xml

Lines changed: 48458 additions & 0 deletions
Large diffs are not rendered by default.

vtr_flow/benchmarks/arithmetic/generated_circuits/FIR_filters/verilog/fir_nopipe_10.v

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,6 @@ module adder_with_1_reg (
367367
datab,
368368
result);
369369

370-
input clk;
371-
input clk_ena;
372370
input [17:0] dataa;
373371
input [17:0] datab;
374372
output [17:0] result;
@@ -383,8 +381,6 @@ module multiplier_with_reg (
383381
datab,
384382
result);
385383

386-
input clk;
387-
input clk_ena;
388384
input [17:0] dataa;
389385
input [17:0] datab;
390386
output [17:0] result;
@@ -398,8 +394,6 @@ module one_register (
398394
dataa,
399395
result);
400396

401-
input clk;
402-
input clk_ena;
403397
input [17:0] dataa;
404398
output [17:0] result;
405399

vtr_flow/benchmarks/noc/Synthetic_Designs/complex_2_noc_1D_chain/complex_2_noc_1D_chain.blif

Lines changed: 15269 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<traffic_flows>
2+
3+
<single_flow src=".*noc_router_adapter_block_one.*" dst=".*noc_router_adapter_block_two.*" bandwidth="4e5" latency_cons="3e-9" />
4+
5+
</traffic_flows>
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/*
2+
Top level modules to instantiate an AXI handshake between two routers.
3+
The design implements the following:
4+
1) Traffic generator uses a FIR filter to generate data and pass it to master_interface.
5+
2) Master interface sends data and valid signal that coming from traffic generator to the NoC.
6+
3) Slave interface receives data and valid signal, passes the ready signal through NoC and data to the traffic processor.
7+
4) Traffic Processor encrypts the data and passes it to the output.
8+
9+
*/
10+
module complex_noc_1D_chain (
11+
clk,
12+
reset,
13+
data_out
14+
);
15+
16+
parameter noc_dw = 32; //NoC Data Width
17+
parameter byte_dw = 8;
18+
19+
/*****************INPUT/OUTPUT Definition********************/
20+
input wire clk;
21+
input wire reset;
22+
23+
output wire [noc_dw - 1:0] data_out;
24+
25+
/*******************Internal Variables**********************/
26+
//traffic generator
27+
wire [noc_dw - 1 : 0] tg_data;
28+
wire tg_valid;
29+
30+
//master interface
31+
wire [noc_dw -1 : 0] m_data;
32+
wire m_valid;
33+
wire m_ready;
34+
35+
//NoC Adapter - Connected to slave interface
36+
wire [noc_dw - 1 : 0] na2_data;
37+
wire na2_valid;
38+
39+
//slave interface
40+
wire [noc_dw -1 : 0] s_data;
41+
wire s_valid;
42+
wire s_ready;
43+
44+
/*******************module instantiation********************/
45+
traffic_generator tg(
46+
.clk(clk),
47+
.reset(reset),
48+
.tdata(tg_data),
49+
.tvalid(tg_valid)
50+
);
51+
52+
master_interface mi (
53+
.clk(clk),
54+
.reset(reset),
55+
.tvalid_in(tg_valid),
56+
.tdata_in(tg_data),
57+
.tready(m_ready),
58+
.tdata_out(m_data),
59+
.tvalid_out(m_valid),
60+
.tstrb(),
61+
.tkeep(),
62+
.tid(),
63+
.tdest(),
64+
.tuser(),
65+
.tlast()
66+
);
67+
68+
noc_router_adapter_block noc_router_adapter_block_one(
69+
.clk(clk),
70+
.reset(reset),
71+
.master_tready(1'd0),
72+
.master_tdata(),
73+
.master_tvalid(),
74+
.master_tstrb(),
75+
.master_tkeep(),
76+
.master_tid(),
77+
.master_tdest(),
78+
.master_tuser(),
79+
.master_tlast(),
80+
.slave_tvalid(m_valid),
81+
.slave_tready(m_ready),
82+
.slave_tdata(m_data),
83+
.slave_tstrb(8'd0),
84+
.slave_tkeep(8'd0),
85+
.slave_tid(8'd0),
86+
.slave_tdest(8'd0),
87+
.slave_tuser(8'd0),
88+
.slave_tlast(1'd0),
89+
90+
);
91+
92+
noc_router_adapter_block noc_router_adapter_block_two(
93+
.clk(clk),
94+
.reset(reset),
95+
.master_tready(s_ready),
96+
.master_tdata(na2_data),
97+
.master_tvalid(na2_valid),
98+
.master_tstrb(),
99+
.master_tkeep(),
100+
.master_tid(),
101+
.master_tdest(),
102+
.master_tuser(),
103+
.master_tlast(),
104+
.slave_tvalid(1'd0),
105+
.slave_tready(),
106+
.slave_tdata(32'd0),
107+
.slave_tstrb(8'd0),
108+
.slave_tkeep(8'd0),
109+
.slave_tid(8'd0),
110+
.slave_tdest(8'd0),
111+
.slave_tuser(8'd0),
112+
.slave_tlast(1'd0),
113+
);
114+
115+
slave_interface si(
116+
.clk(clk),
117+
.reset(reset),
118+
.tvalid_in(na2_valid),
119+
.tdata_in(na2_data),
120+
.tready(s_ready),
121+
.tdata_out(s_data),
122+
.tvalid_out(s_valid),
123+
.tstrb(8'd0),
124+
.tkeep(8'd0),
125+
.tid(8'd0),
126+
.tdest(8'd0),
127+
.tuser(8'd0),
128+
.tlast(1'd0)
129+
);
130+
131+
traffic_processor tp(
132+
.clk(clk),
133+
.reset(reset),
134+
.tdata(s_data),
135+
.tvalid(s_valid),
136+
.o_enc(data_out)
137+
);
138+
139+
endmodule
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/* This is the traffic generator module. This
2+
generate data to be sent over the NoC to the
3+
traffic processor module*/
4+
5+
module traffic_generator(
6+
clk,
7+
reset,
8+
tdata,
9+
tvalid
10+
);
11+
12+
parameter noc_dw = 32; //NoC Data Width
13+
parameter byte_dw = 8;
14+
parameter filter_dw = 18;
15+
parameter acc_const = 4;
16+
17+
/*****************INPUT/OUTPUT Definition********************/
18+
input wire clk;
19+
input wire reset;
20+
21+
output wire [noc_dw - 1 : 0] tdata;
22+
output wire tvalid;
23+
24+
/*******************Internal Variables**********************/
25+
wire [filter_dw - 1 : 0] fir_out;
26+
reg [filter_dw - 1 : 0] fir_in;
27+
reg fir_valid;
28+
29+
/*******************module instantiation*******************/
30+
fir fir_filter(
31+
.clk(clk),
32+
.reset(reset),
33+
.clk_ena(1'b1),
34+
.i_valid(fir_valid),
35+
.i_in(fir_in),
36+
.o_valid(tvalid),
37+
.o_out(fir_out)
38+
);
39+
40+
/******************Sequential Logic*************************/
41+
always @ (posedge clk, posedge reset)
42+
begin
43+
if(reset == 1'b1) begin
44+
fir_in <= 0;
45+
fir_valid <= 1'b0;
46+
end
47+
else begin
48+
fir_in <= fir_in + acc_const;
49+
fir_valid <= 1'b1;
50+
end
51+
end
52+
53+
/*******************Output Logic***************************/
54+
assign tdata = {{14{1'b0}},fir_out};
55+
56+
endmodule
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/* This is the traffic processor module. This
2+
accepts data coming in from the NoC and
3+
encrypts it using sha algorithm
4+
*/
5+
6+
module traffic_processor (
7+
clk,
8+
reset,
9+
tdata,
10+
tvalid,
11+
o_enc
12+
);
13+
14+
/*****************Parameter Declarations********************/
15+
parameter noc_dw = 32;
16+
17+
/*****************INPUT/OUTPUT Definition*******************/
18+
input wire clk;
19+
input wire reset;
20+
input wire [noc_dw-1:0] tdata;
21+
input tvalid;
22+
23+
output reg [noc_dw-1:0] o_enc;
24+
25+
/*******************Internal Variables**********************/
26+
wire [noc_dw - 1 : 0] sha_out;
27+
wire [noc_dw - 1 : 0] sha2_out;
28+
29+
30+
/*******************module instantiation*******************/
31+
sha1 sha1_module
32+
(
33+
.clk_i(clk),
34+
.rst_i(reset),
35+
.text_i(tdata),
36+
.text_o(sha_out),
37+
.cmd_i({{2{1'b0}},{2{tvalid}}}),
38+
.cmd_w_i(tvalid),
39+
.cmd_o()
40+
);
41+
42+
sha1 sha2_module
43+
(
44+
.clk_i(clk),
45+
.rst_i(reset),
46+
.text_i(sha_out),
47+
.text_o(sha2_out),
48+
.cmd_i({{1{1'b0}},{2{tvalid}}}),
49+
.cmd_w_i(tvalid),
50+
.cmd_o()
51+
);
52+
53+
/******************Sequential Logic*************************/
54+
/*
55+
This module will wait on the tvalid signal
56+
to indicate whether data is available to read
57+
in from the input.
58+
*/
59+
60+
always @(posedge clk)
61+
begin
62+
if (reset)begin
63+
o_enc <= 0;
64+
end
65+
else begin
66+
if (tvalid) begin
67+
o_enc <= sha2_out;
68+
end
69+
end
70+
end
71+
72+
endmodule

0 commit comments

Comments
 (0)