mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-24 13:18:56 +00:00
Added read-enable to memory model
This commit is contained in:
parent
ec92c89659
commit
924d9d6e86
17 changed files with 157 additions and 76 deletions
|
@ -122,7 +122,7 @@ struct CellTypes
|
|||
void setup_internals_mem()
|
||||
{
|
||||
IdString SET = "\\SET", CLR = "\\CLR", CLK = "\\CLK", ARST = "\\ARST", EN = "\\EN";
|
||||
IdString Q = "\\Q", D = "\\D", ADDR = "\\ADDR", DATA = "\\DATA";
|
||||
IdString Q = "\\Q", D = "\\D", ADDR = "\\ADDR", DATA = "\\DATA", RD_EN = "\\RD_EN";
|
||||
IdString RD_CLK = "\\RD_CLK", RD_ADDR = "\\RD_ADDR", WR_CLK = "\\WR_CLK", WR_EN = "\\WR_EN";
|
||||
IdString WR_ADDR = "\\WR_ADDR", WR_DATA = "\\WR_DATA", RD_DATA = "\\RD_DATA";
|
||||
IdString CTRL_IN = "\\CTRL_IN", CTRL_OUT = "\\CTRL_OUT";
|
||||
|
@ -135,10 +135,10 @@ struct CellTypes
|
|||
setup_type("$dlatch", {EN, D}, {Q});
|
||||
setup_type("$dlatchsr", {EN, SET, CLR, D}, {Q});
|
||||
|
||||
setup_type("$memrd", {CLK, ADDR}, {DATA});
|
||||
setup_type("$memrd", {CLK, EN, ADDR}, {DATA});
|
||||
setup_type("$memwr", {CLK, EN, ADDR, DATA}, pool<RTLIL::IdString>());
|
||||
setup_type("$meminit", {ADDR, DATA}, pool<RTLIL::IdString>());
|
||||
setup_type("$mem", {RD_CLK, RD_ADDR, WR_CLK, WR_EN, WR_ADDR, WR_DATA}, {RD_DATA});
|
||||
setup_type("$mem", {RD_CLK, RD_EN, RD_ADDR, WR_CLK, WR_EN, WR_ADDR, WR_DATA}, {RD_DATA});
|
||||
|
||||
setup_type("$fsm", {CLK, ARST, CTRL_IN}, {CTRL_OUT});
|
||||
}
|
||||
|
|
|
@ -947,6 +947,7 @@ namespace {
|
|||
param_bool("\\CLK_POLARITY");
|
||||
param_bool("\\TRANSPARENT");
|
||||
port("\\CLK", 1);
|
||||
port("\\EN", 1);
|
||||
port("\\ADDR", param("\\ABITS"));
|
||||
port("\\DATA", param("\\WIDTH"));
|
||||
check_expected();
|
||||
|
@ -986,6 +987,7 @@ namespace {
|
|||
param_bits("\\WR_CLK_ENABLE", std::max(1, param("\\WR_PORTS")));
|
||||
param_bits("\\WR_CLK_POLARITY", std::max(1, param("\\WR_PORTS")));
|
||||
port("\\RD_CLK", param("\\RD_PORTS"));
|
||||
port("\\RD_EN", param("\\RD_PORTS"));
|
||||
port("\\RD_ADDR", param("\\RD_PORTS") * param("\\ABITS"));
|
||||
port("\\RD_DATA", param("\\RD_PORTS") * param("\\WIDTH"));
|
||||
port("\\WR_CLK", param("\\WR_PORTS"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue