3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-11 21:50:54 +00:00

xilinx: Use memory_libmap pass.

This commit is contained in:
Marcelina Kościelnicka 2022-02-06 10:10:40 +01:00
parent e4d811561c
commit 3b2f95953c
40 changed files with 4540 additions and 2315 deletions

View file

@ -0,0 +1,120 @@
# 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;
}
}
}