aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/xilinx/lutrams_xcu.txt
diff options
context:
space:
mode:
authorMarcelina Koƛcielnicka <mwk@0x04.net>2022-02-06 10:10:40 +0100
committerMarcelina Koƛcielnicka <mwk@0x04.net>2022-05-18 17:32:56 +0200
commit3b2f95953c8b8343f2696c5f47bfb2864417a8b1 (patch)
treebdbd5f370d53e9f5fd164c61c4cd9c35f2da27de /techlibs/xilinx/lutrams_xcu.txt
parente4d811561cfb8e7acdbd70dd500600427e3a1756 (diff)
downloadyosys-3b2f95953c8b8343f2696c5f47bfb2864417a8b1.tar.gz
yosys-3b2f95953c8b8343f2696c5f47bfb2864417a8b1.tar.bz2
yosys-3b2f95953c8b8343f2696c5f47bfb2864417a8b1.zip
xilinx: Use `memory_libmap` pass.
Diffstat (limited to 'techlibs/xilinx/lutrams_xcu.txt')
-rw-r--r--techlibs/xilinx/lutrams_xcu.txt162
1 files changed, 162 insertions, 0 deletions
diff --git a/techlibs/xilinx/lutrams_xcu.txt b/techlibs/xilinx/lutrams_xcu.txt
new file mode 100644
index 000000000..8062250bf
--- /dev/null
+++ b/techlibs/xilinx/lutrams_xcu.txt
@@ -0,0 +1,162 @@
+# LUT RAMs for Ultrascale.
+# The corresponding mapping file is lutrams_xc5v_map.v
+
+# Single-port RAMs.
+
+ram distributed $__XILINX_LUTRAM_SP_ {
+ cost 16;
+ widthscale;
+ option "ABITS" 5 {
+ abits 5;
+ widths 16 global;
+ }
+ option "ABITS" 6 {
+ abits 6;
+ widths 8 global;
+ }
+ option "ABITS" 7 {
+ abits 7;
+ widths 4 global;
+ }
+ option "ABITS" 8 {
+ abits 8;
+ widths 2 global;
+ }
+ option "ABITS" 16 {
+ abits 16;
+ widths 1 global;
+ }
+ init any;
+ prune_rom;
+ port arsw "RW" {
+ clock posedge;
+ }
+}
+
+# Dual-port RAMs.
+
+ram distributed $__XILINX_LUTRAM_DP_ {
+ cost 16;
+ widthscale;
+ option "ABITS" 5 {
+ abits 5;
+ widths 8 global;
+ }
+ option "ABITS" 6 {
+ abits 6;
+ widths 4 global;
+ }
+ option "ABITS" 7 {
+ abits 7;
+ widths 2 global;
+ }
+ option "ABITS" 8 {
+ abits 8;
+ widths 1 global;
+ }
+ init any;
+ prune_rom;
+ port arsw "RW" {
+ clock posedge;
+ }
+ port ar "R" {
+ }
+}
+
+# Quad-port RAMs.
+
+ram distributed $__XILINX_LUTRAM_QP_ {
+ cost 16;
+ widthscale;
+ option "ABITS" 5 {
+ abits 5;
+ widths 4 global;
+ }
+ option "ABITS" 6 {
+ abits 6;
+ widths 2 global;
+ }
+ init any;
+ prune_rom;
+ port arsw "RW" {
+ clock posedge;
+ }
+ port ar "R0" "R1" "R2" {
+ }
+}
+
+# Octal-port RAMs.
+
+ram distributed $__XILINX_LUTRAM_OP_ {
+ cost 16;
+ widthscale;
+ option "ABITS" 5 {
+ abits 5;
+ widths 2 global;
+ }
+ option "ABITS" 6 {
+ abits 6;
+ widths 1 global;
+ }
+ init any;
+ prune_rom;
+ port arsw "RW" {
+ clock posedge;
+ }
+ port ar "R0" "R1" "R2" "R3" "R4" "R5" "R6" {
+ }
+}
+
+# Simple dual port RAMs.
+
+ram distributed $__XILINX_LUTRAM_SDP_ {
+ cost 16;
+ widthscale;
+ option "ABITS" 5 {
+ abits 5;
+ widths 14 global;
+ }
+ option "ABITS" 6 {
+ abits 6;
+ widths 7 global;
+ }
+ init any;
+ prune_rom;
+ port sw "W" {
+ clock posedge;
+ }
+ port ar "R" {
+ }
+}
+
+# Wide-read RAM.
+
+ram distributed $__XILINX_LUTRAM_64X8SW_ {
+ cost 16;
+ abits 9;
+ widths 1 2 4 8 per_port;
+ init any;
+ prune_rom;
+ port arsw "RW" {
+ width rd 8 wr 1;
+ clock posedge;
+ }
+}
+
+# Wide-write RAM.
+
+ram distributed $__XILINX_LUTRAM_32X16DR8_ {
+ cost 16;
+ widthscale;
+ abits 6;
+ widths 7 14 per_port;
+ # Yes, no initialization capability.
+ prune_rom;
+ port sw "W" {
+ width 14;
+ clock posedge;
+ }
+ port ar "R" {
+ width 7;
+ }
+}