From 1721ef5b165aee52554675f6ceb1e3a1fc2fb031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20Stro=CC=88mbergson?= Date: Thu, 23 Aug 2018 09:53:03 +0200 Subject: (1) Updated qr interface to include clock and reset needed for internal pipeline registers. (2) Added testbench for the qr module. (3) Added qr simulation target. (4) Added lint support. --- src/rtl/chacha_qr.v | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/rtl/chacha_qr.v') diff --git a/src/rtl/chacha_qr.v b/src/rtl/chacha_qr.v index 42e644c..e1ddbd8 100644 --- a/src/rtl/chacha_qr.v +++ b/src/rtl/chacha_qr.v @@ -40,6 +40,9 @@ //====================================================================== module chacha_qr( + input wire clk, + input wire reset_n, + input wire [31 : 0] a, input wire [31 : 0] b, input wire [31 : 0] c, @@ -51,6 +54,13 @@ module chacha_qr( output wire [31 : 0] d_prim ); + //---------------------------------------------------------------- + // Registers including update variables and write enable. + //---------------------------------------------------------------- + reg [31 : 0] a0_reg; + reg [31 : 0] a0_new; + + //---------------------------------------------------------------- // Wires. //---------------------------------------------------------------- @@ -69,6 +79,23 @@ module chacha_qr( assign d_prim = internal_d_prim; + //---------------------------------------------------------------- + // reg_update + //---------------------------------------------------------------- + always @ (posedge clk) + begin : reg_update + if (!reset_n) + begin + a0_reg <= 32'h0; + end + + else + begin + a0_reg <= a0_new; + end + end // reg_update + + //---------------------------------------------------------------- // qr // @@ -93,6 +120,8 @@ module chacha_qr( reg [31 : 0] d3; a0 = a + b; + a0_new = a + b; + d0 = d ^ a0; d1 = {d0[15 : 0], d0[31 : 16]}; c0 = c + d1; -- cgit v1.2.3