mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-20 06:10:32 +00:00
analogdevices: Fixing up bram
Tested all the accepted configurations in eXpreso, disabling the RBRAM2 configs that fail to place, and increasing the cost for the double site TDP memories.
This commit is contained in:
parent
6e5524ee9c
commit
f2b88c23d4
2 changed files with 130 additions and 29 deletions
|
@ -6,8 +6,17 @@ ifdef IS_T16FFC {
|
|||
abits 11;
|
||||
width 32;
|
||||
byte 32;
|
||||
option "MODE" "TDP" cost 2501;
|
||||
option "MODE" "SDP" cost 2401;
|
||||
option "MODE" "TDP" cost 4502;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
option "SIZE" "1024x32" {
|
||||
abits 10;
|
||||
width 32;
|
||||
byte 32;
|
||||
option "MODE" "TDP" forbid;
|
||||
option "MODE" "SDP" cost 2402;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
}
|
||||
option "ERR" "BP" {
|
||||
|
@ -16,8 +25,28 @@ ifdef IS_T16FFC {
|
|||
abits 11;
|
||||
width 36;
|
||||
byte 9;
|
||||
option "MODE" "TDP" cost 2504;
|
||||
option "MODE" "TDP" cost 4504;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
option "SIZE" "1024x36" {
|
||||
abits 10;
|
||||
width 36;
|
||||
byte 9;
|
||||
option "MODE" "TDP" forbid;
|
||||
option "MODE" "SDP" cost 2404;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
}
|
||||
option "ERR" "FP" {
|
||||
style "FP";
|
||||
option "SIZE" "2048x18" {
|
||||
abits 11;
|
||||
width 18;
|
||||
byte 18;
|
||||
option "MODE" "TDP" cost 2501;
|
||||
option "MODE" "SDP" cost 2401;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
}
|
||||
option "ERR" "NONE" {
|
||||
|
@ -26,14 +55,16 @@ ifdef IS_T16FFC {
|
|||
width 5;
|
||||
byte 1;
|
||||
option "MODE" "TDP" cost 2505;
|
||||
option "MODE" "SDP" cost 2405;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
option "SIZE" "4096x09" {
|
||||
abits 12;
|
||||
width 9;
|
||||
byte 1;
|
||||
option "MODE" "TDP" cost 2509;
|
||||
option "MODE" "SDP" cost 2409;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
option "SIZE" "4096x10" {
|
||||
abits 12;
|
||||
|
@ -41,13 +72,23 @@ ifdef IS_T16FFC {
|
|||
byte 1;
|
||||
option "MODE" "TDP" forbid;
|
||||
option "MODE" "SDP" cost 2410;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
option "SIZE" "2048x20" {
|
||||
abits 11;
|
||||
width 20;
|
||||
byte 1;
|
||||
option "MODE" "TDP" forbid;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" cost 2320;
|
||||
}
|
||||
option "SIZE" "2048x40" {
|
||||
abits 11;
|
||||
width 40;
|
||||
byte 8;
|
||||
option "MODE" "TDP" cost 2505;
|
||||
option "MODE" "SDP" cost 2405;
|
||||
option "MODE" "TDP" cost 4505;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,6 +117,13 @@ ifdef IS_T16FFC {
|
|||
clken;
|
||||
}
|
||||
}
|
||||
option "MODE" "SP" {
|
||||
port srsw "A" {
|
||||
clock anyedge;
|
||||
clken;
|
||||
rdwr no_change;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -86,8 +134,17 @@ ram block $__ANALOGDEVICES_BLOCKRAM_HALF_ {
|
|||
abits 10;
|
||||
width 32;
|
||||
byte 32;
|
||||
option "MODE" "SDP" cost 2401;
|
||||
option "MODE" "SP" cost 2301;
|
||||
option "MODE" "SDP" cost 2402;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
option "SIZE" "512x32" {
|
||||
abits 9;
|
||||
width 32;
|
||||
byte 32;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" cost 2302;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
}
|
||||
option "ERR" "BP" {
|
||||
|
@ -97,7 +154,27 @@ ram block $__ANALOGDEVICES_BLOCKRAM_HALF_ {
|
|||
width 36;
|
||||
byte 9;
|
||||
option "MODE" "SDP" cost 2404;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
option "SIZE" "512x36" {
|
||||
abits 9;
|
||||
width 36;
|
||||
byte 9;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" cost 2304;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
}
|
||||
option "ERR" "FP" {
|
||||
style "FP";
|
||||
option "SIZE" "1024x18" {
|
||||
abits 10;
|
||||
width 18;
|
||||
byte 18;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" cost 2301;
|
||||
}
|
||||
}
|
||||
option "ERR" "NONE" {
|
||||
|
@ -107,27 +184,39 @@ ram block $__ANALOGDEVICES_BLOCKRAM_HALF_ {
|
|||
byte 1;
|
||||
option "MODE" "SDP" cost 2405;
|
||||
option "MODE" "SP" cost 2305;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
option "SIZE" "2048x09" {
|
||||
abits 11;
|
||||
width 9;
|
||||
byte 1;
|
||||
option "MODE" "SDP" cost 2409;
|
||||
option "MODE" "SP" cost 2309;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" cost 2309;
|
||||
}
|
||||
option "SIZE" "2048x10" {
|
||||
abits 11;
|
||||
width 10;
|
||||
byte 1;
|
||||
option "MODE" "SDP" cost 2410;
|
||||
option "MODE" "SP" cost 2310;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
option "SIZE" "1024x20" {
|
||||
abits 10;
|
||||
width 20;
|
||||
byte 1;
|
||||
option "MODE" "SDP" forbid;
|
||||
option "MODE" "SP" cost 2320;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
option "SIZE" "1024x40" {
|
||||
abits 10;
|
||||
width 40;
|
||||
byte 8;
|
||||
option "MODE" "SDP" cost 2405;
|
||||
option "MODE" "SP" cost 2305;
|
||||
option "MODE" "SP" forbid;
|
||||
option "MODE" "SP2" forbid;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,6 +232,14 @@ ram block $__ANALOGDEVICES_BLOCKRAM_HALF_ {
|
|||
}
|
||||
}
|
||||
option "MODE" "SP" {
|
||||
ifdef IS_T16FFC forbid;
|
||||
port srsw "A" {
|
||||
clock anyedge;
|
||||
clken;
|
||||
rdwr no_change;
|
||||
}
|
||||
}
|
||||
option "MODE" "SP2" {
|
||||
ifdef IS_T40LP forbid;
|
||||
port srsw "A" {
|
||||
clock anyedge;
|
||||
|
@ -160,7 +257,7 @@ ifdef IS_T40LP {
|
|||
abits 9;
|
||||
width 18;
|
||||
byte 9;
|
||||
option "MODE" "SP" cost 2202;
|
||||
option "MODE" "SP2" cost 2202;
|
||||
}
|
||||
}
|
||||
option "ERR" "NONE" {
|
||||
|
@ -168,16 +265,16 @@ ifdef IS_T40LP {
|
|||
abits 11;
|
||||
width 5;
|
||||
byte 1;
|
||||
option "MODE" "SP" cost 2205;
|
||||
option "MODE" "SP2" cost 2205;
|
||||
}
|
||||
option "SIZE" "1024x09" {
|
||||
abits 10;
|
||||
width 9;
|
||||
byte 1;
|
||||
option "MODE" "SP" cost 2209;
|
||||
option "MODE" "SP2" cost 2209;
|
||||
}
|
||||
}
|
||||
option "MODE" "SP" {
|
||||
option "MODE" "SP2" {
|
||||
port srsw "A" {
|
||||
clock anyedge;
|
||||
clken;
|
||||
|
|
|
@ -6,7 +6,7 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
parameter OPTION_ERR = "NONE";
|
||||
parameter PORT_A_WR_EN_WIDTH = 1;
|
||||
parameter PORT_A_CLK_POL = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = PORT_A_WR_EN_WIDTH;
|
||||
parameter PORT_B_CLK_POL = 1;
|
||||
|
||||
// needs -force-params
|
||||
|
@ -23,9 +23,7 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
// localparam BRAM_MODE = "SDP_2048x36_BP";
|
||||
localparam BRAM_MODE = (OPTION_ERR!="NONE") ? {OPTION_MODE, "_", OPTION_SIZE, "_", OPTION_ERR} :
|
||||
{OPTION_MODE, "_", OPTION_SIZE};
|
||||
localparam PBITS = (OPTION_ERR=="FP") ? 1 :
|
||||
(OPTION_ERR=="BP") ? PORT_A_WR_EN_WIDTH :
|
||||
0;
|
||||
localparam PBITS = (OPTION_ERR=="BP") ? PORT_A_WR_EN_WIDTH : 1;
|
||||
|
||||
// libmap ports
|
||||
input PORT_A_CLK;
|
||||
|
@ -51,8 +49,8 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
#(
|
||||
.TARGET_NODE(NODE),
|
||||
.BRAM_MODE(BRAM_MODE),
|
||||
.QA_REG(0),
|
||||
.QB_REG(0),
|
||||
.QA_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
||||
.QB_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
||||
.CLKA_INV(!PORT_A_CLK_POL),
|
||||
.CLKB_INV(!PORT_B_CLK_POL),
|
||||
.DATA_WIDTH(WIDTH),
|
||||
|
@ -78,6 +76,7 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
|
||||
// check config
|
||||
generate
|
||||
if (PORT_A_WR_EN_WIDTH == PORT_B_WR_EN_WIDTH)
|
||||
case (BRAM_MODE)
|
||||
`ifdef IS_T40LP
|
||||
"SDP_1024x18_FP",
|
||||
|
@ -107,11 +106,12 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
"TDP_2048x36_BP",
|
||||
"SDP_2048x18_FP",
|
||||
"SDP_2048x16_BP",
|
||||
"SDP_4096x09",
|
||||
"SDP_8192x05",
|
||||
"SDP_2048x32_ECC",
|
||||
"SDP_2048x40",
|
||||
"SDP_2048x36_BP",
|
||||
// The following are rejected in eXpreso
|
||||
// "SDP_4096x09",
|
||||
// "SDP_8192x05",
|
||||
// "SDP_2048x32_ECC",
|
||||
// "SDP_2048x40",
|
||||
// "SDP_2048x36_BP",
|
||||
"SDP_1024x32_ECC",
|
||||
"SDP_1024x36_BP",
|
||||
"SDP_4096x10",
|
||||
|
@ -124,6 +124,8 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
|||
`endif
|
||||
default: wire _TECHMAP_FAIL_ = 1;
|
||||
endcase
|
||||
else
|
||||
wire _TECHMAP_FAIL_ = 1;
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
|
@ -136,7 +138,7 @@ module $__ANALOGDEVICES_BLOCKRAM_HALF_ (...);
|
|||
parameter OPTION_ERR = "NONE";
|
||||
parameter PORT_A_WR_EN_WIDTH = 1;
|
||||
parameter PORT_A_CLK_POL = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = PORT_A_WR_EN_WIDTH;
|
||||
parameter PORT_B_CLK_POL = 1;
|
||||
|
||||
// needs -force-params
|
||||
|
@ -163,6 +165,7 @@ module $__ANALOGDEVICES_BLOCKRAM_HALF_ (...);
|
|||
.INIT(INIT),
|
||||
.OPTION_MODE(OPTION_MODE),
|
||||
.OPTION_SIZE(OPTION_SIZE),
|
||||
.OPTION_ERR(OPTION_ERR),
|
||||
.PORT_A_WR_EN_WIDTH(PORT_A_WR_EN_WIDTH),
|
||||
.PORT_A_CLK_POL(PORT_A_CLK_POL),
|
||||
.PORT_B_WR_EN_WIDTH(PORT_B_WR_EN_WIDTH),
|
||||
|
@ -195,7 +198,7 @@ module $__ANALOGDEVICES_BLOCKRAM_QUARTER_ (...);
|
|||
parameter OPTION_ERR = "NONE";
|
||||
parameter PORT_A_WR_EN_WIDTH = 1;
|
||||
parameter PORT_A_CLK_POL = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = 1;
|
||||
parameter PORT_B_WR_EN_WIDTH = PORT_A_WR_EN_WIDTH;
|
||||
parameter PORT_B_CLK_POL = 1;
|
||||
|
||||
// needs -force-params
|
||||
|
@ -215,6 +218,7 @@ module $__ANALOGDEVICES_BLOCKRAM_QUARTER_ (...);
|
|||
.INIT(INIT),
|
||||
.OPTION_MODE(OPTION_MODE),
|
||||
.OPTION_SIZE(OPTION_SIZE),
|
||||
.OPTION_ERR(OPTION_ERR),
|
||||
.PORT_A_WR_EN_WIDTH(PORT_A_WR_EN_WIDTH),
|
||||
.PORT_A_CLK_POL(PORT_A_CLK_POL),
|
||||
.PORT_B_WR_EN_WIDTH(PORT_B_WR_EN_WIDTH),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue