summaryrefslogtreecommitdiff
path: root/rtl/ed25519_uop.v
diff options
context:
space:
mode:
authorPavel V. Shatov (Meister) <meisterpaul1@yandex.ru>2018-10-15 15:54:47 +0300
committerPavel V. Shatov (Meister) <meisterpaul1@yandex.ru>2018-10-15 15:54:47 +0300
commit7cbc1fec6f39e377a8d945c3aad183b4cffeadd3 (patch)
tree97ba8901c5518701459017ead4b53a569758546f /rtl/ed25519_uop.v
parent7df34f4b491dac71b4301828bdda6a6f9d8eecd6 (diff)
Incorporated latest microcode from the C model. Passes all the test vectors
from the RFC. Needs minor cleanup.
Diffstat (limited to 'rtl/ed25519_uop.v')
-rw-r--r--rtl/ed25519_uop.v17
1 files changed, 13 insertions, 4 deletions
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;