From 4657677aad4c137b58f4f17abc88b1b7a201c8f4 Mon Sep 17 00:00:00 2001 From: John McMaster Date: Thu, 18 Jan 2018 19:08:05 -0800 Subject: [PATCH] roi_harness: inverted LED/switch example Signed-off-by: John McMaster --- minitests/roi_harness/.gitignore | 1 + minitests/roi_harness/README.txt | 7 +++++ minitests/roi_harness/roi_inv.v | 53 ++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 minitests/roi_harness/roi_inv.v diff --git a/minitests/roi_harness/.gitignore b/minitests/roi_harness/.gitignore index 82a01aa0..dd262534 100644 --- a/minitests/roi_harness/.gitignore +++ b/minitests/roi_harness/.gitignore @@ -6,3 +6,4 @@ /usage_statistics_webtalk.* /vivado* /design.txt +/out_* diff --git a/minitests/roi_harness/README.txt b/minitests/roi_harness/README.txt index c8fe8978..e2f90c13 100644 --- a/minitests/roi_harness/README.txt +++ b/minitests/roi_harness/README.txt @@ -10,3 +10,10 @@ There is no logic outside of the ROI in order to keep IOB to ROI delays short Its expected the end user will rip out everything inside the ROI To target Arty A7 you should source the artix DB environment script then source arty.sh + +To build the baseline harness: +make + +To build a sample design using the harness: +XRAY_ROIV=roi_inv.v make + diff --git a/minitests/roi_harness/roi_inv.v b/minitests/roi_harness/roi_inv.v new file mode 100644 index 00000000..7e575cb5 --- /dev/null +++ b/minitests/roi_harness/roi_inv.v @@ -0,0 +1,53 @@ +//Connect the switches to the LEDs, inverting the signal in the ROI +//Assumes # inputs = # outputs + +`include "defines.v" + +module roi(input clk, + input [DIN_N-1:0] din, output [DOUT_N-1:0] dout); + parameter DIN_N = `DIN_N; + parameter DOUT_N = `DOUT_N; + wire [DIN_N-1:0] internal; + + genvar i; + generate + //CLK + (* KEEP, DONT_TOUCH *) + reg clk_reg; + always @(posedge clk) begin + clk_reg <= clk_reg; + end + + //DIN + for (i = 0; i < DIN_N; i = i+1) begin:ins + //Very expensive inverter + (* KEEP, DONT_TOUCH *) + LUT6 #( + .INIT(64'b01) + ) lut ( + .I0(din[i]), + .I1(1'b0), + .I2(1'b0), + .I3(1'b0), + .I4(1'b0), + .I5(1'b0), + .O(internal[i])); + end + + //DOUT + for (i = 0; i < DOUT_N; i = i+1) begin:outs + //Very expensive buffer + (* KEEP, DONT_TOUCH *) + LUT6 #( + .INIT(64'b010) + ) lut ( + .I0(internal[i]), + .I1(1'b0), + .I2(1'b0), + .I3(1'b0), + .I4(1'b0), + .I5(1'b0), + .O(dout[i])); + end + endgenerate +endmodule