mirror of https://github.com/YosysHQ/yosys.git
121 lines
2.3 KiB
Plaintext
121 lines
2.3 KiB
Plaintext
# Block RAMs for Spartan 3A DSP and Spartan 6.
|
|
# The corresponding mapping file is brams_xc3sda_map.v
|
|
|
|
ram block $__XILINX_BLOCKRAM_TDP_ {
|
|
byte 9;
|
|
ifdef IS_SPARTAN6 {
|
|
option "MODE" "HALF" {
|
|
abits 13;
|
|
widths 1 2 4 9 18 per_port;
|
|
cost 65;
|
|
}
|
|
}
|
|
option "MODE" "FULL" {
|
|
abits 14;
|
|
widths 1 2 4 9 18 36 per_port;
|
|
cost 129;
|
|
}
|
|
init any;
|
|
port srsw "A" "B" {
|
|
# Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks.
|
|
ifdef IS_SPARTAN6 {
|
|
option "HAS_RDFIRST" 1 {
|
|
clock posedge "C";
|
|
}
|
|
option "HAS_RDFIRST" 0 {
|
|
clock posedge;
|
|
}
|
|
} else {
|
|
clock posedge;
|
|
}
|
|
clken;
|
|
option "RSTTYPE" "SYNC" {
|
|
portoption "RST_PRIORITY" "CE" {
|
|
rdsrst any gated_clken;
|
|
}
|
|
ifdef IS_SPARTAN6 {
|
|
portoption "RST_PRIORITY" "SR" {
|
|
rdsrst any ungated;
|
|
}
|
|
}
|
|
}
|
|
ifdef IS_SPARTAN6 {
|
|
option "RSTTYPE" "ASYNC" {
|
|
portoption "RST_PRIORITY" "SR" {
|
|
rdarst any;
|
|
}
|
|
}
|
|
}
|
|
rdinit any;
|
|
portoption "WRITE_MODE" "NO_CHANGE" {
|
|
rdwr no_change;
|
|
}
|
|
portoption "WRITE_MODE" "WRITE_FIRST" {
|
|
rdwr new;
|
|
}
|
|
ifdef IS_SPARTAN6 {
|
|
option "HAS_RDFIRST" 1 {
|
|
portoption "WRITE_MODE" "READ_FIRST" {
|
|
rdwr old;
|
|
wrtrans all old;
|
|
}
|
|
}
|
|
} else {
|
|
portoption "WRITE_MODE" "READ_FIRST" {
|
|
rdwr old;
|
|
wrtrans all old;
|
|
}
|
|
}
|
|
optional;
|
|
}
|
|
}
|
|
|
|
ifdef IS_SPARTAN6 {
|
|
ram block $__XILINX_BLOCKRAM_SDP_ {
|
|
byte 9;
|
|
abits 13;
|
|
widths 1 2 4 9 18 36 per_port;
|
|
cost 65;
|
|
init any;
|
|
port sw "W" {
|
|
width 36;
|
|
# Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks.
|
|
option "WRITE_MODE" "READ_FIRST" {
|
|
clock posedge "C";
|
|
wrtrans all old;
|
|
}
|
|
option "WRITE_MODE" "WRITE_FIRST" {
|
|
clock posedge;
|
|
}
|
|
clken;
|
|
optional;
|
|
}
|
|
port sr "R" {
|
|
width 36;
|
|
# Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks.
|
|
option "WRITE_MODE" "READ_FIRST" {
|
|
clock posedge "C";
|
|
}
|
|
option "WRITE_MODE" "WRITE_FIRST" {
|
|
clock posedge;
|
|
}
|
|
clken;
|
|
option "RSTTYPE" "SYNC" {
|
|
portoption "RST_PRIORITY" "CE" {
|
|
rdsrst any gated_clken;
|
|
}
|
|
portoption "RST_PRIORITY" "SR" {
|
|
rdsrst any ungated;
|
|
}
|
|
}
|
|
option "RSTTYPE" "ASYNC" {
|
|
portoption "RST_PRIORITY" "SR" {
|
|
rdarst any;
|
|
}
|
|
}
|
|
rdinit any;
|
|
optional;
|
|
}
|
|
}
|
|
}
|