Skip to content

Commit 823da18

Browse files
authored
Merge pull request #785 from vijayank88/arian136_add
ariane136 added for Nangate45 platform
2 parents 10d9426 + 73b8918 commit 823da18

File tree

10 files changed

+2108
-0
lines changed

10 files changed

+2108
-0
lines changed

flow/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# ==============================================================================
44

55
# DESIGN_CONFIG=./designs/nangate45/aes/config.mk
6+
# DESIGN_CONFIG=./designs/nangate45/ariane136/config.mk
67
# DESIGN_CONFIG=./designs/nangate45/black_parrot/config.mk
78
# DESIGN_CONFIG=./designs/nangate45/bp_be_top/config.mk
89
# DESIGN_CONFIG=./designs/nangate45/bp_fe_top/config.mk
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
export DESIGN_NAME = ariane
2+
export DESIGN_NICKNAME = ariane136
3+
export PLATFORM = nangate45
4+
5+
export SYNTH_HIERARCHICAL = 1
6+
export MAX_UNGROUP_SIZE ?= 1000
7+
export RTLMP_FLOW = True
8+
9+
# RTL_MP Settings
10+
export RTLMP_MAX_INST = 500000
11+
export RTLMP_MIN_INST = 1000
12+
export RTLMP_MAX_MACRO = 140
13+
export RTLMP_MIN_MACRO = 4
14+
15+
export VERILOG_FILES = ./designs/src/$(DESIGN_NICKNAME)/ariane.sv2v.v \
16+
./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/macros.v
17+
18+
export SDC_FILE = ./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc
19+
20+
export ADDITIONAL_LEFS = $(PLATFORM_DIR)/lef/fakeram45_256x16.lef
21+
22+
export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/fakeram45_256x16.lib
23+
24+
export DIE_AREA = 0 0 1500 1500
25+
export CORE_AREA = 10 12 1448 1448
26+
27+
export MACRO_PLACE_HALO = 15 15
28+
export MACRO_PLACE_CHANNEL = 15 15

flow/designs/nangate45/ariane136/constraint.sdc

Lines changed: 496 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
module SyncSpRamBeNx64_00000008_00000100_0_2
2+
(
3+
Clk_CI,
4+
Rst_RBI,
5+
CSel_SI,
6+
WrEn_SI,
7+
BEn_SI,
8+
WrData_DI,
9+
Addr_DI,
10+
RdData_DO
11+
);
12+
13+
input [7:0] BEn_SI; // byte-enable: ignore or use as needed
14+
input [63:0] WrData_DI;
15+
input [7:0] Addr_DI;
16+
output [63:0] RdData_DO;
17+
input Clk_CI;
18+
input Rst_RBI; // reset: ignore or use as needed
19+
input CSel_SI;
20+
input WrEn_SI;
21+
wire [63:0] RdData_DO;
22+
wire csel_b,wren_b;
23+
wire [15:0] WMaskIn, NotWMaskIn;
24+
25+
assign NotWMaskIn = 16'b0;
26+
assign WMaskIn = ~NotWMaskIn;
27+
assign wren_b = ~WrEn_SI; // active-low global-write-enable
28+
assign csel_b = ~CSel_SI; // active-low chip-select-enable
29+
30+
fakeram45_256x16 macro_mem_0 (.clk(Clk_CI),.rd_out(RdData_DO[15:0]), .ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[15:0]));
31+
fakeram45_256x16 macro_mem_1 (.clk(Clk_CI),.rd_out(RdData_DO[31:16]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[31:16]));
32+
fakeram45_256x16 macro_mem_2 (.clk(Clk_CI),.rd_out(RdData_DO[47:32]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[47:32]));
33+
fakeram45_256x16 macro_mem_3 (.clk(Clk_CI),.rd_out(RdData_DO[63:48]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[63:48]));
34+
35+
endmodule // SyncSpRamBeNx64_00000008_00000100_0_2
36+
37+
// Google made a mistake in their ariane experiment.
38+
// The valid_dirty_sram should be 4 macros, each 256x16. Instead, they only instantiated 1 256x16 macro
39+
module limping_SyncSpRamBeNx64_00000008_00000100_0_2
40+
(
41+
Clk_CI,
42+
Rst_RBI,
43+
CSel_SI,
44+
WrEn_SI,
45+
BEn_SI,
46+
WrData_DI,
47+
Addr_DI,
48+
RdData_DO
49+
);
50+
51+
input [7:0] BEn_SI; // byte-enable: ignore or use as needed
52+
input [63:0] WrData_DI;
53+
input [7:0] Addr_DI;
54+
output [63:0] RdData_DO;
55+
input Clk_CI;
56+
input Rst_RBI; // reset: ignore or use as needed
57+
input CSel_SI;
58+
input WrEn_SI;
59+
wire [63:0] RdData_DO;
60+
wire csel_b,wren_b;
61+
wire [15:0] WMaskIn, NotWMaskIn;
62+
63+
assign NotWMaskIn = 16'b0;
64+
assign WMaskIn = ~NotWMaskIn;
65+
assign wren_b = ~WrEn_SI; // active-low global-write-enable
66+
assign csel_b = ~CSel_SI; // active-low chip-select-enable
67+
68+
fakeram45_256x16 macro_mem_0 (.clk(Clk_CI),.rd_out(RdData_DO[15:0]), .ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[15:0]));
69+
fakeram45_256x16 macro_mem_1 (.clk(Clk_CI),.rd_out(RdData_DO[31:16]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[31:16]));
70+
fakeram45_256x16 macro_mem_2 (.clk(Clk_CI),.rd_out(RdData_DO[47:32]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[47:32]));
71+
fakeram45_256x16 macro_mem_3 (.clk(Clk_CI),.rd_out(RdData_DO[63:48]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[63:48]));
72+
73+
endmodule // limping_SyncSpRamBeNx64_00000008_00000100_0_2
74+
75+
module SyncSpRamBeNx64_00000008_00000100_0_2_d45
76+
(
77+
Clk_CI,
78+
Rst_RBI,
79+
CSel_SI,
80+
WrEn_SI,
81+
BEn_SI,
82+
WrData_DI,
83+
Addr_DI,
84+
RdData_DO
85+
);
86+
87+
input [7:0] BEn_SI; // byte-enable: ignore or use as needed
88+
input [44:0] WrData_DI;
89+
input [7:0] Addr_DI;
90+
output [44:0] RdData_DO;
91+
input Clk_CI;
92+
input Rst_RBI; // reset: ignore or use as needed
93+
input CSel_SI;
94+
input WrEn_SI;
95+
wire [47:0] RdData_DO_wire;
96+
wire csel_b,wren_b;
97+
wire [15:0] WMaskIn, NotWMaskIn;
98+
99+
assign NotWMaskIn = 16'b0;
100+
assign WMaskIn = ~NotWMaskIn;
101+
assign wren_b = ~WrEn_SI; // active-low global-write-enable
102+
assign csel_b = ~CSel_SI; // active-low chip-select-enable
103+
assign RdData_DO = RdData_DO_wire[44:0];
104+
105+
fakeram45_256x16 macro_mem_0 (.clk(Clk_CI),.rd_out(RdData_DO_wire[15:0]), .ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[15:0]));
106+
fakeram45_256x16 macro_mem_1 (.clk(Clk_CI),.rd_out(RdData_DO_wire[31:16]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[31:16]));
107+
fakeram45_256x16 macro_mem_2 (.clk(Clk_CI),.rd_out(RdData_DO_wire[47:32]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in({3'b000, WrData_DI[44:32]}));
108+
109+
endmodule // SyncSpRamBeNx64_00000008_00000100_0_2_d45
110+
111+
module SyncSpRamBeNx64_00000008_00000100_0_2_d44
112+
(
113+
Clk_CI,
114+
Rst_RBI,
115+
CSel_SI,
116+
WrEn_SI,
117+
BEn_SI,
118+
WrData_DI,
119+
Addr_DI,
120+
RdData_DO
121+
);
122+
123+
input [7:0] BEn_SI; // byte-enable: ignore or use as needed
124+
input [43:0] WrData_DI;
125+
input [7:0] Addr_DI;
126+
output [43:0] RdData_DO;
127+
input Clk_CI;
128+
input Rst_RBI; // reset: ignore or use as needed
129+
input CSel_SI;
130+
input WrEn_SI;
131+
wire [47:0] RdData_DO_wire;
132+
wire csel_b,wren_b;
133+
wire [15:0] WMaskIn, NotWMaskIn;
134+
135+
assign NotWMaskIn = 16'b0;
136+
assign WMaskIn = ~NotWMaskIn;
137+
assign wren_b = ~WrEn_SI; // active-low global-write-enable
138+
assign csel_b = ~CSel_SI; // active-low chip-select-enable
139+
assign RdData_DO = RdData_DO_wire[43:0];
140+
141+
fakeram45_256x16 macro_mem_0 (.clk(Clk_CI),.rd_out(RdData_DO_wire[15:0]), .ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[15:0]));
142+
fakeram45_256x16 macro_mem_1 (.clk(Clk_CI),.rd_out(RdData_DO_wire[31:16]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in(WrData_DI[31:16]));
143+
fakeram45_256x16 macro_mem_2 (.clk(Clk_CI),.rd_out(RdData_DO_wire[47:32]),.ce_in(csel_b),.we_in(wren_b),.addr_in(Addr_DI),.w_mask_in(WMaskIn),.wd_in({4'b0000, WrData_DI[43:32]}));
144+
145+
endmodule // SyncSpRamBeNx64_00000008_00000100_0_2_d44

0 commit comments

Comments
 (0)