From d7e2fff2a6146a6e0c0c99288a8baaf92d0118b6 Mon Sep 17 00:00:00 2001 From: Alessandro Comodi Date: Wed, 4 Mar 2020 16:46:58 +0100 Subject: [PATCH] bram-sdp minitest: added minitest to check features of SDP brams Signed-off-by: Alessandro Comodi --- minitests/bram-sdp/Makefile | 7 ++ minitests/bram-sdp/runme.sh | 9 +++ minitests/bram-sdp/runme.tcl | 16 +++++ minitests/bram-sdp/top.v | 126 +++++++++++++++++++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 minitests/bram-sdp/Makefile create mode 100755 minitests/bram-sdp/runme.sh create mode 100644 minitests/bram-sdp/runme.tcl create mode 100644 minitests/bram-sdp/top.v diff --git a/minitests/bram-sdp/Makefile b/minitests/bram-sdp/Makefile new file mode 100644 index 00000000..4609fa5f --- /dev/null +++ b/minitests/bram-sdp/Makefile @@ -0,0 +1,7 @@ +all: + mkdir -p build + cd build && bash ../runme.sh + +clean: + rm -rf build/ + diff --git a/minitests/bram-sdp/runme.sh b/minitests/bram-sdp/runme.sh new file mode 100755 index 00000000..75a7e9b4 --- /dev/null +++ b/minitests/bram-sdp/runme.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -ex +${XRAY_VIVADO} -mode batch -source ../runme.tcl +${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit +test -z "$(fgrep CRITICAL vivado.log)" +${XRAY_SEGPRINT} -z -D design.bits > design.txt +${XRAY_BIT2FASM} design.bit > design.fasm + diff --git a/minitests/bram-sdp/runme.tcl b/minitests/bram-sdp/runme.tcl new file mode 100644 index 00000000..9656f2aa --- /dev/null +++ b/minitests/bram-sdp/runme.tcl @@ -0,0 +1,16 @@ +create_project -force -part $::env(XRAY_PART) design design +read_verilog ../top.v +synth_design -top top -flatten_hierarchy none + +set_property CFGBVS VCCO [current_design] +set_property CONFIG_VOLTAGE 3.3 [current_design] +set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] + +place_design +route_design + +set_property IS_ENABLED 0 [get_drc_checks {NSTD-1}] +set_property IS_ENABLED 0 [get_drc_checks {UCIO-1}] + +write_checkpoint -force design.dcp +write_bitstream -force design.bit diff --git a/minitests/bram-sdp/top.v b/minitests/bram-sdp/top.v new file mode 100644 index 00000000..ddba9cec --- /dev/null +++ b/minitests/bram-sdp/top.v @@ -0,0 +1,126 @@ +module top ( +); + + // Both RAMB18 in the same tile + (* KEEP, DONT_TOUCH, LOC="RAMB18_X0Y25" *) + RAMB18E1 #( + .RAM_MODE("SDP"), + .READ_WIDTH_A(36), + .READ_WIDTH_B(0), + .WRITE_MODE_A("READ_FIRST"), + .WRITE_MODE_B("READ_FIRST"), + .WRITE_WIDTH_A(0), + .WRITE_WIDTH_B(36) + ) RAMB18E1_BOTH_X1 ( + .ENARDEN(1'b1), + .ENBWREN(1'b1), + .REGCEAREGCE(1'b1), + .REGCEB(1'b0), + .RSTRAMARSTRAM(1'b1), + .RSTRAMB(1'b1), + .RSTREGARSTREG(1'b1), + .RSTREGB(1'b1), + .WEA({1'b0}), + .WEBWE({1'b0}) + ); + + (* KEEP, DONT_TOUCH, LOC="RAMB18_X0Y24" *) + RAMB18E1 #( + .RAM_MODE("SDP"), + .READ_WIDTH_A(36), + .READ_WIDTH_B(0), + .WRITE_MODE_A("READ_FIRST"), + .WRITE_MODE_B("READ_FIRST"), + .WRITE_WIDTH_A(0), + .WRITE_WIDTH_B(36) + ) RAMB18E1_BOTH_X0 ( + .ENARDEN(1'b1), + .ENBWREN(1'b1), + .REGCEAREGCE(1'b1), + .REGCEB(1'b0), + .RSTRAMARSTRAM(1'b1), + .RSTRAMB(1'b1), + .RSTREGARSTREG(1'b1), + .RSTREGB(1'b1), + .WEA({1'b0}), + .WEBWE({1'b0}) + ); + + // --------------------------------------- + + // One RAMB18 in Y0 + (* KEEP, DONT_TOUCH, LOC="RAMB18_X0Y22" *) + RAMB18E1 #( + .RAM_MODE("SDP"), + .READ_WIDTH_A(36), + .READ_WIDTH_B(0), + .WRITE_MODE_A("READ_FIRST"), + .WRITE_MODE_B("READ_FIRST"), + .WRITE_WIDTH_A(0), + .WRITE_WIDTH_B(36) + ) RAMB18E1_X0 ( + .ENARDEN(1'b1), + .ENBWREN(1'b1), + .REGCEAREGCE(1'b1), + .REGCEB(1'b0), + .RSTRAMARSTRAM(1'b1), + .RSTRAMB(1'b1), + .RSTREGARSTREG(1'b1), + .RSTREGB(1'b1), + .WEA({1'b0}), + .WEBWE({1'b0}) + ); + + // --------------------------------------- + + // One RAMB18 in Y1 + (* KEEP, DONT_TOUCH, LOC="RAMB18_X0Y21" *) + RAMB18E1 #( + .RAM_MODE("SDP"), + .READ_WIDTH_A(36), + .READ_WIDTH_B(0), + .WRITE_MODE_A("READ_FIRST"), + .WRITE_MODE_B("READ_FIRST"), + .WRITE_WIDTH_A(0), + .WRITE_WIDTH_B(36) + ) RAMB18E1_X1 ( + .ENARDEN(1'b1), + .ENBWREN(1'b1), + .REGCEAREGCE(1'b1), + .REGCEB(1'b0), + .RSTRAMARSTRAM(1'b1), + .RSTRAMB(1'b1), + .RSTREGARSTREG(1'b1), + .RSTREGB(1'b1), + .WEA({1'b0}), + .WEBWE({1'b0}) + ); + + + // --------------------------------------- + + // One RAMB36 + (* KEEP, DONT_TOUCH, LOC="RAMB36_X0Y9" *) + RAMB36E1 #( + .RAM_MODE("SDP"), + .READ_WIDTH_A(72), + .READ_WIDTH_B(0), + .WRITE_MODE_A("READ_FIRST"), + .WRITE_MODE_B("READ_FIRST"), + .WRITE_WIDTH_A(0), + .WRITE_WIDTH_B(72) + ) RAMB36E1_X0 ( + .ENARDEN(1'b1), + .ENBWREN(1'b1), + .REGCEAREGCE(1'b1), + .REGCEB(1'b0), + .RSTRAMARSTRAM(1'b1), + .RSTRAMB(1'b1), + .RSTREGARSTREG(1'b1), + .RSTREGB(1'b1), + .WEA({1'b0}), + .WEBWE({1'b0}) + ); + + +endmodule