summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-04-06 13:03:37 +0200
committerClifford Wolf <clifford@clifford.at>2015-04-06 13:27:11 +0200
commitd19866615b5cb1ad24d28df544071dd65f6df78a (patch)
tree9b9ea774b64eba1ab8bba1462292d835771c5224
parent4389d9306ecb64df29115027ad9a948d852448bd (diff)
Added Xilinx test case for initialized brams
-rw-r--r--techlibs/xilinx/tests/.gitignore3
-rw-r--r--techlibs/xilinx/tests/bram2.sh8
-rw-r--r--techlibs/xilinx/tests/bram2.v24
-rw-r--r--techlibs/xilinx/tests/bram2_tb.v45
4 files changed, 80 insertions, 0 deletions
diff --git a/techlibs/xilinx/tests/.gitignore b/techlibs/xilinx/tests/.gitignore
index bc2f8bab..496b8746 100644
--- a/techlibs/xilinx/tests/.gitignore
+++ b/techlibs/xilinx/tests/.gitignore
@@ -1,3 +1,6 @@
bram1_cmp
bram1.mk
bram1_[0-9]*/
+bram2.log
+bram2_syn.v
+bram2_tb
diff --git a/techlibs/xilinx/tests/bram2.sh b/techlibs/xilinx/tests/bram2.sh
new file mode 100644
index 00000000..d8d8ed30
--- /dev/null
+++ b/techlibs/xilinx/tests/bram2.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -ex
+unisims=/opt/Xilinx/Vivado/2014.4/data/verilog/src/unisims
+../../../yosys -v2 -l bram2.log -p synth_xilinx -o bram2_syn.v bram2.v
+iverilog -o bram2_tb bram2_tb.v bram2_syn.v -y $unisims $unisims/../glbl.v
+vvp -N bram2_tb
+
diff --git a/techlibs/xilinx/tests/bram2.v b/techlibs/xilinx/tests/bram2.v
new file mode 100644
index 00000000..9444fb17
--- /dev/null
+++ b/techlibs/xilinx/tests/bram2.v
@@ -0,0 +1,24 @@
+module myram(
+ input rd_clk,
+ input [ 7:0] rd_addr,
+ output reg [15:0] rd_data,
+ input wr_clk,
+ input wr_enable,
+ input [ 7:0] wr_addr,
+ input [15:0] wr_data
+);
+ reg [15:0] memory [0:255];
+ integer i;
+
+ initial begin
+ for (i = 0; i < 256; i = i+1)
+ memory[i] = i;
+ end
+
+ always @(posedge rd_clk)
+ rd_data <= memory[rd_addr];
+
+ always @(posedge wr_clk)
+ if (wr_enable)
+ memory[wr_addr] <= wr_data;
+endmodule
diff --git a/techlibs/xilinx/tests/bram2_tb.v b/techlibs/xilinx/tests/bram2_tb.v
new file mode 100644
index 00000000..3a43b655
--- /dev/null
+++ b/techlibs/xilinx/tests/bram2_tb.v
@@ -0,0 +1,45 @@
+`timescale 1 ns / 1 ps
+
+module testbench;
+ reg rd_clk;
+ reg [ 7:0] rd_addr;
+ wire [15:0] rd_data;
+
+ wire wr_clk = 0;
+ wire wr_enable = 0;
+ wire [ 7:0] wr_addr = 0;
+ wire [15:0] wr_data = 0;
+
+ myram uut (
+ .rd_clk (rd_clk ),
+ .rd_addr (rd_addr ),
+ .rd_data (rd_data ),
+ .wr_clk (wr_clk ),
+ .wr_enable(wr_enable),
+ .wr_addr (wr_addr ),
+ .wr_data (wr_data )
+ );
+
+ initial begin
+ rd_clk = 0;
+ #1000;
+ forever #10 rd_clk <= ~rd_clk;
+ end
+
+ integer i;
+ initial begin
+ rd_addr <= 0;
+ @(posedge rd_clk);
+ for (i = 0; i < 256; i=i+1) begin
+ rd_addr <= rd_addr + 1;
+ @(posedge rd_clk);
+ // $display("%3d %3d", i, rd_data);
+ if (i != rd_data) begin
+ $display("[%1t] ERROR: addr=%3d, data=%3d", $time, i, rd_data);
+ $stop;
+ end
+ end
+ $display("[%1t] Passed bram2 test.", $time);
+ $finish;
+ end
+endmodule