Update license
This commit is contained in:
parent
66aad005df
commit
ab3e37782e
|
@ -1,3 +1,23 @@
|
|||
/*
|
||||
The BLAKE2b g function.
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
module blake2b_g
|
||||
#(
|
||||
parameter PIPELINES = 1 // Do we want to optionally add pipeline stages
|
||||
|
|
|
@ -1,3 +1,22 @@
|
|||
/*
|
||||
The BLAKE2b package file.
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package blake2b_pkg;
|
||||
|
||||
// Initial values
|
||||
|
|
|
@ -1,7 +1,24 @@
|
|||
/* Implemented from RFC-7693, The BLAKE2b Cryptographic Hash and Message Authentication Code (MAC)
|
||||
* Parameters are passed in as an input. Inputs and outputs are AXI stream and respect flow control.
|
||||
* Only only hash is computed at a time, and takes 26 clocks * number of 128 Byte message blocks.
|
||||
*/
|
||||
/*
|
||||
Implemented from RFC-7693, The BLAKE2b Cryptographic Hash and Message Authentication Code (MAC)
|
||||
Parameters are passed in as an input. Inputs and outputs are AXI stream and respect flow control.
|
||||
Only only hash is computed at a time, and takes 26 clocks * number of 128 Byte message blocks.
|
||||
Does not have functionalty to use a key.
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module blake2b_top
|
||||
import blake2b_pkg::*;
|
||||
|
|
|
@ -1,3 +1,22 @@
|
|||
/*
|
||||
The BLAKE2b g function testbench.
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module blake2b_g_tb();
|
||||
|
||||
logic clk;
|
||||
|
|
|
@ -1,5 +1,26 @@
|
|||
/*
|
||||
The BLAKE2b testbench.
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module blake2b_top_tb();
|
||||
|
||||
parameter USE_BLAKE2B_PIPE = 1; // This instantiates the pipelined version instead
|
||||
|
||||
import blake2b_pkg::*;
|
||||
import common_pkg::*;
|
||||
|
||||
|
@ -22,15 +43,30 @@ initial begin
|
|||
forever #10ns clk = ~clk;
|
||||
end
|
||||
|
||||
|
||||
blake2b_top DUT (
|
||||
.i_clk ( clk ),
|
||||
.i_rst ( rst ),
|
||||
.i_parameters ( parameters ),
|
||||
.i_byte_len ( i_byte_len ),
|
||||
.i_block ( i_block ),
|
||||
.o_hash ( out_hash )
|
||||
);
|
||||
generate if ( USE_BLAKE2B_PIPE == 0 ) begin: DUT_GEN
|
||||
blake2b_top DUT (
|
||||
.i_clk ( clk ),
|
||||
.i_rst ( rst ),
|
||||
.i_parameters ( parameters ),
|
||||
.i_byte_len ( i_byte_len ),
|
||||
.i_block ( i_block ),
|
||||
.o_hash ( out_hash )
|
||||
);
|
||||
end else begin
|
||||
blake2b_pipe_top #(
|
||||
.ROUNDS ( 12 ),
|
||||
.MSG_LEN ( 3 )
|
||||
)
|
||||
DUT (
|
||||
.i_clk ( clk ),
|
||||
.i_rst ( rst ),
|
||||
.i_parameters ( parameters ),
|
||||
.i_byte_len ( i_byte_len ),
|
||||
.i_block ( i_block ),
|
||||
.o_hash ( out_hash )
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
|
||||
// This test runs the hash which is shown in the RFC, for "abc"
|
||||
task rfc_test();
|
||||
|
@ -86,8 +122,8 @@ initial begin
|
|||
#200ns;
|
||||
|
||||
rfc_test();
|
||||
test_128_bytes();
|
||||
test_140_bytes();
|
||||
// test_128_bytes();
|
||||
// test_140_bytes();
|
||||
|
||||
#10us $finish();
|
||||
|
||||
|
|
|
@ -1,5 +1,22 @@
|
|||
/*
|
||||
Interface for a AXI stream
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Interface for a AXI stream
|
||||
interface if_axi_stream # (
|
||||
parameter DAT_BYTS = 8,
|
||||
parameter CTL_BYTS = 8
|
||||
|
@ -19,8 +36,8 @@ interface if_axi_stream # (
|
|||
logic [DAT_BITS-1:0] dat;
|
||||
logic [$clog2(DAT_BYTS)-1:0] mod;
|
||||
|
||||
modport sink (input val, err, sop, eop, ctl, dat, output rdy);
|
||||
modport source (output val, err, sop, eop, ctl, dat, input rdy, import task reset_source());
|
||||
modport sink (input val, err, sop, eop, ctl, dat, mod, output rdy);
|
||||
modport source (output val, err, sop, eop, ctl, dat, mod, input rdy, import task reset_source());
|
||||
|
||||
// Task to reset a source interface signals to all 0
|
||||
task reset_source();
|
||||
|
|
|
@ -1,4 +1,22 @@
|
|||
// Common parameter values and tasks
|
||||
/*
|
||||
Common parameter values and tasks
|
||||
|
||||
Copyright (C) 2019 Benjamin Devlin and Zcash Foundation
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package common_pkg;
|
||||
parameter MAX_SIM_BYTS = 1024; // In simulation tasks how big is the logic register for putting / getting data
|
||||
|
||||
|
|
Loading…
Reference in New Issue