|
|
|
|
// this file is the testbench of stream_cypher module
|
// this file is the testbench of stream_cypher module
|
|
|
`timescale 1ns/1ns
|
`timescale 1ns/1ns
|
module stream_cypher_tb;
|
module stream_cypher_tb;
|
|
|
reg clk;
|
reg clk;
|
reg rst;
|
reg rst;
|
|
|
reg en;
|
reg en;
|
reg init;
|
reg init;
|
|
|
|
|
reg [8*8-1:0] ck;
|
reg [8*8-1:0] ck;
|
reg [8*8-1:0] sb;
|
reg [8*8-1:0] sb;
|
|
|
wire [8*8-1:0] cb;
|
wire [8*8-1:0] cb;
|
|
|
reg [24*8-1:0] tt; // input
|
reg [24*8-1:0] tt; // input
|
|
|
initial
|
initial
|
begin
|
begin
|
// $read_data(
|
// $read_data(
|
// "../test_dat/stream_cypher.in"
|
// "../test_dat/stream_cypher.in"
|
// ,tt
|
// ,tt
|
// );
|
// );
|
tt=192'b001001110001111100011000000100010000101000000010111110111111010011101101111001101101111011010111110100001100100111000001101110101011001110101100101001001001110110010110100011111000011110000000;
|
tt=192'b001001110001111100011000000100010000101000000010111110111111010011101101111001101101111011010111110100001100100111000001101110101011001110101100101001001001110110010110100011111000011110000000;
|
@(posedge rst);
|
@(posedge rst);
|
ck =tt[ 24* 8-1: 16* 8];
|
ck =tt[ 24* 8-1: 16* 8];
|
en=1;
|
en=1;
|
init=1;
|
init=1;
|
sb =tt[ 16*8-1:8* 8];
|
sb =tt[ 16*8-1:8* 8];
|
@(posedge clk);
|
@(posedge clk);
|
en=1;
|
en=1;
|
init=0;
|
init=0;
|
sb =tt[ 8*8-1:0* 8];
|
sb =tt[ 8*8-1:0* 8];
|
|
|
// $write_data(
|
// $write_data(
|
// "../test_dat/stream_cypher.out.v"
|
// "../test_dat/stream_cypher.out.v"
|
// ,"w"
|
// ,"w"
|
// ,cb
|
// ,cb
|
// );
|
// );
|
|
|
@(posedge clk);
|
@(posedge clk);
|
$display("\ncb=%b\n",cb);
|
$display("\ncb=%b\n",cb);
|
$display("b.b.b1.b1.op=%b\n",b.b.b1.b1.op);
|
$display("b.b.b1.b1.op=%b\n",b.b.b1.b1.op);
|
$display("b.b.b1.b1.Do=%b\n",b.b.b1.b1.Do);
|
$display("b.b.b1.b1.Do=%b\n",b.b.b1.b1.Do);
|
$display("b.b.b1.b1.Ei=%b\n",b.b.b1.b1.Ei);
|
$display("b.b.b1.b1.Ei=%b\n",b.b.b1.b1.Ei);
|
$display("b.b.b1.b1.Zi=%b\n",b.b.b1.b1.Zi);
|
$display("b.b.b1.b1.Zi=%b\n",b.b.b1.b1.Zi);
|
$display("b.b.b1.b1.extra_B=%b\n",b.b.b1.b1.extra_B);
|
$display("b.b.b1.b1.extra_B=%b\n",b.b.b1.b1.extra_B);
|
$display("b.b.b1.b2.op=%b\n",b.b.b1.b2.op);
|
$display("b.b.b1.b2.op=%b\n",b.b.b1.b2.op);
|
$display("b.b.b1.b3.op=%b\n",b.b.b1.b3.op);
|
$display("b.b.b1.b3.op=%b\n",b.b.b1.b3.op);
|
$display("b.b.b1.b4.op=%b\n",b.b.b1.b4.op);
|
$display("b.b.b1.b4.op=%b\n",b.b.b1.b4.op);
|
|
|
// $write_data(
|
// $write_data(
|
// "../test_dat/stream_cypher.out.v"
|
// "../test_dat/stream_cypher.out.v"
|
// ,"a"
|
// ,"a"
|
// ,cb
|
// ,cb
|
// );
|
// );
|
@(posedge clk);
|
@(posedge clk);
|
|
|
$finish;
|
$finish;
|
end
|
end
|
|
|
initial
|
initial
|
begin
|
begin
|
clk<=1'b0;
|
clk<=1'b0;
|
forever #5 clk=~clk;
|
forever #5 clk=~clk;
|
end
|
end
|
|
|
initial
|
initial
|
begin
|
begin
|
rst<=1'b0;
|
rst<=1'b0;
|
@(posedge clk);
|
@(posedge clk);
|
@(posedge clk);
|
@(posedge clk);
|
rst=1'h1;
|
rst=1'h1;
|
end
|
end
|
|
|
stream_cypher b(
|
stream_cypher b(
|
.clk (clk)
|
.clk (clk)
|
,.rst_n (rst)
|
,.rst (rst)
|
,.en (en)
|
,.en (en)
|
,.init (init)
|
,.init (init)
|
,.ck (ck)
|
,.ck (ck)
|
,.sb (sb)
|
,.sb (sb)
|
,.cb (cb)
|
,.cb (cb)
|
);
|
);
|
|
|
endmodule
|
endmodule
|
|
|