From 7cbc1fec6f39e377a8d945c3aad183b4cffeadd3 Mon Sep 17 00:00:00 2001 From: "Pavel V. Shatov (Meister)" Date: Mon, 15 Oct 2018 15:54:47 +0300 Subject: Incorporated latest microcode from the C model. Passes all the test vectors from the RFC. Needs minor cleanup. --- rtl/ed25519_uop.v | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'rtl/ed25519_uop.v') diff --git a/rtl/ed25519_uop.v b/rtl/ed25519_uop.v index 4b744c6..12b9e10 100644 --- a/rtl/ed25519_uop.v +++ b/rtl/ed25519_uop.v @@ -30,13 +30,22 @@ // //====================================================================== -localparam integer UOP_ADDR_WIDTH = 6; // 2 ^ 6 = 64 instructions +localparam integer UOP_ADDR_WIDTH = 9; // 2 ^ 9 = max 512 instructions localparam integer UOP_DATA_WIDTH = 5 + 1 + 3 * 6; // opcode + banks + 3 * operand (2 * src + dst) -localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_PREPARE = 6'd00; -localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_BEFORE_ROUND_K1 = 6'd09; -localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_BEFORE_ROUND_K0 = 6'd18; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_PREPARE = 9'd000; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_BEFORE_ROUND_K0 = 9'd009; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_BEFORE_ROUND_K1 = 9'd018; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_DURING_ROUND = 9'd027; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_AFTER_ROUND_K0 = 9'd062; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_AFTER_ROUND_K1 = 9'd067; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_BEFORE_INVERSION = 9'd072; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_DURING_INVERSION = 9'd075; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_AFTER_INVERSION = 9'd354; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_FINAL_REDUCTION = 9'd358; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_HANDLE_SIGN = 9'd361; +localparam [UOP_ADDR_WIDTH-1:0] UOP_OFFSET_OUTPUT = 9'd363; localparam [4:0] UOP_OPCODE_COPY = 5'b00001; localparam [4:0] UOP_OPCODE_ADD = 5'b00010; -- cgit v1.2.3