mirror of
https://github.com/YosysHQ/yosys
synced 2025-11-11 08:32:04 +00:00
analogdevices: Use dump_meminit
Add `INIT_FILE` and `SIM_INIT_BEHAVIOR` parameters. Add `init any` to non-full ADI ram blocks.
This commit is contained in:
parent
7f8334e781
commit
eb2b57b084
4 changed files with 25 additions and 1 deletions
|
|
@ -220,6 +220,9 @@ ram block $__ANALOGDEVICES_BLOCKRAM_HALF_ {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# supports any initialization value, but need to export memory files
|
||||||
|
init any;
|
||||||
|
|
||||||
option "MODE" "SDP" {
|
option "MODE" "SDP" {
|
||||||
ifdef IS_T16FFC forbid;
|
ifdef IS_T16FFC forbid;
|
||||||
port sw "A" {
|
port sw "A" {
|
||||||
|
|
@ -274,6 +277,10 @@ ifdef IS_T40LP {
|
||||||
option "MODE" "SP2" cost 2209;
|
option "MODE" "SP2" cost 2209;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# supports any initialization value, but need to export memory files
|
||||||
|
init any;
|
||||||
|
|
||||||
option "MODE" "SP2" {
|
option "MODE" "SP2" {
|
||||||
port srsw "A" {
|
port srsw "A" {
|
||||||
clock anyedge;
|
clock anyedge;
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,12 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
||||||
`ifdef IS_T16FFC
|
`ifdef IS_T16FFC
|
||||||
localparam NODE = "T16FFC_Gen2.4";
|
localparam NODE = "T16FFC_Gen2.4";
|
||||||
`endif
|
`endif
|
||||||
// localparam BRAM_MODE = "SDP_2048x36_BP";
|
|
||||||
localparam BRAM_MODE = (OPTION_ERR!="NONE") ? {OPTION_MODE, "_", OPTION_SIZE, "_", OPTION_ERR} :
|
localparam BRAM_MODE = (OPTION_ERR!="NONE") ? {OPTION_MODE, "_", OPTION_SIZE, "_", OPTION_ERR} :
|
||||||
{OPTION_MODE, "_", OPTION_SIZE};
|
{OPTION_MODE, "_", OPTION_SIZE};
|
||||||
localparam PBITS = (OPTION_ERR=="BP") ? PORT_A_WR_EN_WIDTH : 1;
|
localparam PBITS = (OPTION_ERR=="BP") ? PORT_A_WR_EN_WIDTH : 1;
|
||||||
|
parameter INIT_FILE = "";
|
||||||
|
localparam INIT_BEHAVIOR = (INIT_FILE == "" || INIT_FILE == "X") ? "UNINITIALIZED" :
|
||||||
|
INIT_FILE == "0" ? "ALL_ZERO" : "INIT_FILE";
|
||||||
|
|
||||||
// libmap ports
|
// libmap ports
|
||||||
input PORT_A_CLK;
|
input PORT_A_CLK;
|
||||||
|
|
@ -49,10 +51,12 @@ module $__ANALOGDEVICES_BLOCKRAM_FULL_ (...);
|
||||||
#(
|
#(
|
||||||
.TARGET_NODE(NODE),
|
.TARGET_NODE(NODE),
|
||||||
.BRAM_MODE(BRAM_MODE),
|
.BRAM_MODE(BRAM_MODE),
|
||||||
|
.INIT_FILE_A(INIT_BEHAVIOR == "INIT_FILE" ? INIT_FILE : ""),
|
||||||
.QA_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
.QA_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
||||||
.QB_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
.QB_REG((OPTION_ERR=="ECC") ? 1 : 0),
|
||||||
.CLKA_INV(!PORT_A_CLK_POL),
|
.CLKA_INV(!PORT_A_CLK_POL),
|
||||||
.CLKB_INV(!PORT_B_CLK_POL),
|
.CLKB_INV(!PORT_B_CLK_POL),
|
||||||
|
.SIM_INIT_BEHAVIOR(INIT_BEHAVIOR),
|
||||||
.DATA_WIDTH(WIDTH),
|
.DATA_WIDTH(WIDTH),
|
||||||
.ADDR_WIDTH(ABITS),
|
.ADDR_WIDTH(ABITS),
|
||||||
.WE_WIDTH(PORT_A_WR_EN_WIDTH),
|
.WE_WIDTH(PORT_A_WR_EN_WIDTH),
|
||||||
|
|
@ -145,6 +149,9 @@ module $__ANALOGDEVICES_BLOCKRAM_HALF_ (...);
|
||||||
parameter WIDTH = 40;
|
parameter WIDTH = 40;
|
||||||
parameter ABITS = 13;
|
parameter ABITS = 13;
|
||||||
|
|
||||||
|
// non libmap params
|
||||||
|
parameter INIT_FILE = "";
|
||||||
|
|
||||||
// libmap ports
|
// libmap ports
|
||||||
input PORT_A_CLK;
|
input PORT_A_CLK;
|
||||||
input PORT_A_CLK_EN;
|
input PORT_A_CLK_EN;
|
||||||
|
|
@ -205,6 +212,9 @@ module $__ANALOGDEVICES_BLOCKRAM_QUARTER_ (...);
|
||||||
parameter WIDTH = 40;
|
parameter WIDTH = 40;
|
||||||
parameter ABITS = 13;
|
parameter ABITS = 13;
|
||||||
|
|
||||||
|
// non libmap params
|
||||||
|
parameter INIT_FILE = "";
|
||||||
|
|
||||||
// libmap ports
|
// libmap ports
|
||||||
input PORT_A_CLK;
|
input PORT_A_CLK;
|
||||||
input PORT_A_CLK_EN;
|
input PORT_A_CLK_EN;
|
||||||
|
|
|
||||||
|
|
@ -1105,10 +1105,13 @@ endmodule
|
||||||
module RBRAM #(
|
module RBRAM #(
|
||||||
parameter TARGET_NODE = "T40LP_Gen2.4",
|
parameter TARGET_NODE = "T40LP_Gen2.4",
|
||||||
parameter BRAM_MODE = "SDP_1024x40",
|
parameter BRAM_MODE = "SDP_1024x40",
|
||||||
|
parameter INIT_FILE_A = "",
|
||||||
|
parameter INIT_FILE_B = "",
|
||||||
parameter QA_REG = 0,
|
parameter QA_REG = 0,
|
||||||
parameter QB_REG = 0,
|
parameter QB_REG = 0,
|
||||||
parameter CLKA_INV = 0,
|
parameter CLKA_INV = 0,
|
||||||
parameter CLKB_INV = 0,
|
parameter CLKB_INV = 0,
|
||||||
|
parameter SIM_INIT_BEHAVIOR = "UNINITIALIZED",
|
||||||
parameter DATA_WIDTH = 40,
|
parameter DATA_WIDTH = 40,
|
||||||
parameter ADDR_WIDTH = 12,
|
parameter ADDR_WIDTH = 12,
|
||||||
parameter WE_WIDTH = 20,
|
parameter WE_WIDTH = 20,
|
||||||
|
|
@ -1145,10 +1148,13 @@ endmodule
|
||||||
module RBRAM2 #(
|
module RBRAM2 #(
|
||||||
parameter TARGET_NODE = "T16FFC_Gen2.4",
|
parameter TARGET_NODE = "T16FFC_Gen2.4",
|
||||||
parameter BRAM_MODE = "SDP_2048x40",
|
parameter BRAM_MODE = "SDP_2048x40",
|
||||||
|
parameter INIT_FILE_A = "",
|
||||||
|
parameter INIT_FILE_B = "",
|
||||||
parameter QA_REG = 0,
|
parameter QA_REG = 0,
|
||||||
parameter QB_REG = 0,
|
parameter QB_REG = 0,
|
||||||
parameter CLKA_INV = 0,
|
parameter CLKA_INV = 0,
|
||||||
parameter CLKB_INV = 0,
|
parameter CLKB_INV = 0,
|
||||||
|
parameter SIM_INIT_BEHAVIOR = "UNINITIALIZED",
|
||||||
parameter DATA_WIDTH = 40,
|
parameter DATA_WIDTH = 40,
|
||||||
parameter ADDR_WIDTH = 13,
|
parameter ADDR_WIDTH = 13,
|
||||||
parameter WE_WIDTH = 20,
|
parameter WE_WIDTH = 20,
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,7 @@ struct SynthAnalogDevicesPass : public ScriptPass
|
||||||
params += " -no-auto-block";
|
params += " -no-auto-block";
|
||||||
}
|
}
|
||||||
run("memory_libmap" + params);
|
run("memory_libmap" + params);
|
||||||
|
run("dump_meminit t:$__ANALOGDEVICES_BLOCKRAM_*");
|
||||||
run("techmap -map " + lutrams_map);
|
run("techmap -map " + lutrams_map);
|
||||||
run("techmap -map " + brams_map);
|
run("techmap -map " + brams_map);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue