[Architecture] Remove out-of-date Verilog testbench
This commit is contained in:
parent
00bf775971
commit
20d6b2bf84
|
@ -1,199 +0,0 @@
|
||||||
//-----------------------------------------------------
|
|
||||||
// Design Name : testbench for logic blocks
|
|
||||||
// File Name : lb_tb.v
|
|
||||||
// Function : Configurable logic block
|
|
||||||
// Coder : Xifan TANG
|
|
||||||
//-----------------------------------------------------
|
|
||||||
//----- Time scale: simulation time step and accuracy -----
|
|
||||||
`timescale 1ns / 1ps
|
|
||||||
|
|
||||||
module lb_tb;
|
|
||||||
// Parameters
|
|
||||||
parameter SIZE_IN = 40; //---- MUX input size
|
|
||||||
parameter SIZE_OUT = 10; //---- MUX input size
|
|
||||||
parameter SIZE_RESERV_BLWL = 49 + 1; //---- MUX input size
|
|
||||||
parameter SIZE_BLWL = 1019 - 310 + 1; //---- MUX input size
|
|
||||||
parameter prog_clk_period = 1; // [ns] half clock period
|
|
||||||
parameter op_clk_period = 1; // [ns] half clock period
|
|
||||||
parameter config_period = 2 * prog_clk_period; // [ns] One full clock period
|
|
||||||
parameter operating_period = SIZE_IN * 2 * op_clk_period; // [ns] One full clock period
|
|
||||||
|
|
||||||
// Ports
|
|
||||||
wire [0:SIZE_IN-1] lb_in;
|
|
||||||
wire [0:SIZE_IN-1] lb_out;
|
|
||||||
wire lb_clk;
|
|
||||||
wire [0:SIZE_RESERV_BLWL-1] reserv_bl;
|
|
||||||
wire [0:SIZE_RESERV_BLWL-1] reserv_wl;
|
|
||||||
wire [0:SIZE_BLWL-1] bl;
|
|
||||||
wire [0:SIZE_BLWL-1] wl;
|
|
||||||
wire prog_EN;
|
|
||||||
wire prog_ENb;
|
|
||||||
wire zin;
|
|
||||||
wire nequalize;
|
|
||||||
wire read;
|
|
||||||
wire clk;
|
|
||||||
wire Reset;
|
|
||||||
wire Set;
|
|
||||||
// Clocks
|
|
||||||
wire prog_clock;
|
|
||||||
wire op_clock;
|
|
||||||
|
|
||||||
// Registered port
|
|
||||||
reg [0:SIZE_IN-1] lb_in_reg;
|
|
||||||
reg [0:SIZE_RESERV_BLWL-1] reserv_bl_reg;
|
|
||||||
reg [0:SIZE_RESERV_BLWL-1] reserv_wl_reg;
|
|
||||||
reg [0:SIZE_BLWL-1] bl_reg;
|
|
||||||
reg [0:SIZE_BLWL-1] wl_reg;
|
|
||||||
reg prog_clock_reg;
|
|
||||||
reg op_clock_reg;
|
|
||||||
|
|
||||||
// Config done signal;
|
|
||||||
reg config_done;
|
|
||||||
// Temp register for rotating shift
|
|
||||||
reg temp;
|
|
||||||
|
|
||||||
// Unit under test
|
|
||||||
grid_1__1_ U0 (
|
|
||||||
zin,
|
|
||||||
nequalize,
|
|
||||||
read,
|
|
||||||
clk,
|
|
||||||
Reset,
|
|
||||||
Set,
|
|
||||||
prog_ENb,
|
|
||||||
prog_EN,
|
|
||||||
// Top inputs
|
|
||||||
lb_in[0], lb_in[4], lb_in[8], lb_in[12], lb_in[16],
|
|
||||||
lb_in[20], lb_in[24], lb_in[28], lb_in[32], lb_in[36],
|
|
||||||
// Top outputs
|
|
||||||
lb_out[0], lb_out[4], lb_out[8],
|
|
||||||
// Right inputs
|
|
||||||
lb_in[1], lb_in[5], lb_in[9], lb_in[13], lb_in[17],
|
|
||||||
lb_in[21], lb_in[25], lb_in[29], lb_in[33], lb_in[37],
|
|
||||||
// Right outputs
|
|
||||||
lb_out[1], lb_out[5], lb_out[9],
|
|
||||||
// Bottom inputs
|
|
||||||
lb_in[2], lb_in[6], lb_in[10], lb_in[14], lb_in[18],
|
|
||||||
lb_in[22], lb_in[26], lb_in[30], lb_in[34], lb_in[38],
|
|
||||||
// Bottom outputs
|
|
||||||
lb_out[2], lb_out[6],
|
|
||||||
// Bottom inputs
|
|
||||||
lb_clk,
|
|
||||||
// left inputs
|
|
||||||
lb_in[3], lb_in[7], lb_in[11], lb_in[15], lb_in[19],
|
|
||||||
lb_in[23], lb_in[27], lb_in[31], lb_in[35], lb_in[39],
|
|
||||||
// left outputs
|
|
||||||
lb_out[3], lb_out[7],
|
|
||||||
reserv_bl, reserv_wl,
|
|
||||||
bl, wl
|
|
||||||
);
|
|
||||||
|
|
||||||
// Task: assign BL and WL values
|
|
||||||
task prog_lb_blwl;
|
|
||||||
begin
|
|
||||||
@(posedge prog_clock);
|
|
||||||
// Rotate left shift
|
|
||||||
temp = reserv_bl_reg[SIZE_RESERV_BLWL-1];
|
|
||||||
//bl_reg = bl_reg >> 1;
|
|
||||||
reserv_bl_reg[1:SIZE_RESERV_BLWL-1] = reserv_bl_reg[0:SIZE_RESERV_BLWL-2];
|
|
||||||
reserv_bl_reg[0] = temp;
|
|
||||||
end
|
|
||||||
endtask
|
|
||||||
|
|
||||||
// Task: assign inputs
|
|
||||||
task op_lb_in;
|
|
||||||
begin
|
|
||||||
@(posedge op_clock);
|
|
||||||
temp = lb_in_reg[SIZE_IN-1];
|
|
||||||
lb_in_reg[1:SIZE_IN-1] = lb_in_reg[0:SIZE_IN-2];
|
|
||||||
lb_in_reg[0] = temp;
|
|
||||||
end
|
|
||||||
endtask
|
|
||||||
|
|
||||||
// Configuration done signal
|
|
||||||
initial
|
|
||||||
begin
|
|
||||||
config_done = 1'b0;
|
|
||||||
end
|
|
||||||
// Enabled during config_period, Disabled during op_period
|
|
||||||
always
|
|
||||||
begin
|
|
||||||
#config_period config_done = ~config_done;
|
|
||||||
#operating_period config_done = ~config_done;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Programming clocks
|
|
||||||
initial
|
|
||||||
begin
|
|
||||||
prog_clock_reg = 1'b0;
|
|
||||||
end
|
|
||||||
always
|
|
||||||
begin
|
|
||||||
#prog_clk_period prog_clock_reg = ~prog_clock_reg;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Operating clocks
|
|
||||||
initial
|
|
||||||
begin
|
|
||||||
op_clock_reg = 1'b0;
|
|
||||||
end
|
|
||||||
always
|
|
||||||
begin
|
|
||||||
#op_clk_period op_clock_reg = ~op_clock_reg;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Programming and Operating clocks
|
|
||||||
assign prog_clock = prog_clock_reg & (~config_done);
|
|
||||||
assign op_clock = op_clock_reg & config_done;
|
|
||||||
|
|
||||||
// Programming Enable signals
|
|
||||||
assign prog_EN = prog_clock & (~config_done);
|
|
||||||
assign prog_ENb = ~prog_EN;
|
|
||||||
|
|
||||||
// Programming phase: BL/WL
|
|
||||||
initial
|
|
||||||
begin
|
|
||||||
// Initialize BL/WL registers
|
|
||||||
reserv_bl_reg = {SIZE_RESERV_BLWL {1'b0}};
|
|
||||||
reserv_bl_reg[0] = 1'b1;
|
|
||||||
reserv_wl_reg = {SIZE_RESERV_BLWL {1'b0}};
|
|
||||||
// Reserved BL/WL
|
|
||||||
bl_reg = {SIZE_BLWL {1'b0}};
|
|
||||||
wl_reg = {SIZE_BLWL {1'b1}};
|
|
||||||
//wl_reg[SIZE_BLWL-1] = 1'b1;
|
|
||||||
end
|
|
||||||
always wait (~config_done) // Only invoked when config_done is 0
|
|
||||||
begin
|
|
||||||
// Propagate input 1 to the output
|
|
||||||
// BL[0] = 1, WL[4] = 1
|
|
||||||
prog_lb_blwl;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Operating Phase
|
|
||||||
initial
|
|
||||||
begin
|
|
||||||
lb_in_reg = {SIZE_IN {1'b0}};
|
|
||||||
lb_in_reg[0] = 1'b1; // Last bit is 1 initially
|
|
||||||
end
|
|
||||||
always wait (config_done) // Only invoked when config_done is 1
|
|
||||||
begin
|
|
||||||
/* Update inputs */
|
|
||||||
op_lb_in;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Wire ports
|
|
||||||
assign lb_in = lb_in_reg;
|
|
||||||
assign reserv_bl = reserv_bl_reg;
|
|
||||||
assign reserv_wl = reserv_wl_reg;
|
|
||||||
assign bl = bl_reg;
|
|
||||||
assign wl = wl_reg;
|
|
||||||
|
|
||||||
// Constant ports
|
|
||||||
assign zin = 1'b0;
|
|
||||||
assign nequalize = 1'b1;
|
|
||||||
assign read = 1'b0;
|
|
||||||
assign clk = op_clock;
|
|
||||||
assign Reset = ~config_done;
|
|
||||||
assign Set = 1'b0;
|
|
||||||
|
|
||||||
endmodule
|
|
Loading…
Reference in New Issue