[dv/hmac] add datapath stress test

Datapath stress test uses the least amount of message for 2 hash cycles.
Thus the sequence always enable hmac with msg length = 1 byte.
Add the datapath stress test to stress_all_vseq
diff --git a/hw/ip/hmac/dv/Makefile b/hw/ip/hmac/dv/Makefile
index ae70f63..b246ebd 100644
--- a/hw/ip/hmac/dv/Makefile
+++ b/hw/ip/hmac/dv/Makefile
@@ -42,6 +42,11 @@
   RUN_OPTS      += +zero_delays=1
 endif
 
+ifeq (${TEST_NAME},hmac_datapath_stress)
+  UVM_TEST_SEQ   = hmac_datapath_stress_vseq
+  RUN_OPTS      += +zero_delays=1
+endif
+
 ifeq (${TEST_NAME},hmac_burst_wr)
   UVM_TEST_SEQ   = hmac_burst_wr_vseq
 endif
diff --git a/hw/ip/hmac/dv/env/hmac_env_pkg.sv b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
index 4d20cd9..156b2b2 100644
--- a/hw/ip/hmac/dv/env/hmac_env_pkg.sv
+++ b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
@@ -26,6 +26,7 @@
   parameter uint32 HMAC_MSG_FIFO_SIZE        = 2048;
   parameter uint32 HMAC_MSG_FIFO_BASE        = 32'h800;
   parameter uint32 HMAC_MSG_FIFO_LAST_ADDR   = HMAC_MSG_FIFO_BASE + HMAC_MSG_FIFO_SIZE - 1;
+  parameter uint32 HMAC_HASH_SIZE            = 64;
   // 48 cycles of hashing, 16 cycles to rd next 16 words, 1 cycle to update digest
   parameter uint32 HMAC_MSG_PROCESS_CYCLES   = 65;
   // 80 cycles for hmac key padding
diff --git a/hw/ip/hmac/dv/env/seq_lib/hmac_datapath_stress_vseq.sv b/hw/ip/hmac/dv/env/seq_lib/hmac_datapath_stress_vseq.sv
new file mode 100644
index 0000000..097d7de
--- /dev/null
+++ b/hw/ip/hmac/dv/env/seq_lib/hmac_datapath_stress_vseq.sv
@@ -0,0 +1,30 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// datapath_stress sequence will generate all message with size 1 and hmac_en
+// thus will have 2 hashes (one for key, one for msg) with the shortest message required
+// TODO: potentially use DV to check throughput here
+
+class hmac_datapath_stress_vseq extends hmac_sanity_vseq;
+  `uvm_object_utils(hmac_datapath_stress_vseq)
+  `uvm_object_new
+
+  rand int msg_size_base;
+
+  constraint msg_size_base_c {
+    msg_size_base dist {
+        0       :/1,
+        [1:156] :/1
+    };
+  }
+
+  constraint msg_c {
+    msg.size() == 1 + msg_size_base * HMAC_HASH_SIZE;
+  }
+
+  constraint hmac_en_c {
+    hmac_en == 1;
+  }
+
+endclass : hmac_datapath_stress_vseq
diff --git a/hw/ip/hmac/dv/env/seq_lib/hmac_stress_all_vseq.sv b/hw/ip/hmac/dv/env/seq_lib/hmac_stress_all_vseq.sv
index b446dfe..3c3d666 100644
--- a/hw/ip/hmac/dv/env/seq_lib/hmac_stress_all_vseq.sv
+++ b/hw/ip/hmac/dv/env/seq_lib/hmac_stress_all_vseq.sv
@@ -14,6 +14,7 @@
                           "hmac_back_pressure_vseq",
                           "hmac_burst_wr_vseq",
                           "hmac_common_vseq", // for intr_test
+                          "hmac_datapath_stress_vseq",
                           "hmac_long_msg_vseq",
                           "hmac_test_vectors_sha_vseq",
                           "hmac_test_vectors_hmac_vseq"};
diff --git a/hw/ip/hmac/dv/env/seq_lib/hmac_vseq_list.sv b/hw/ip/hmac/dv/env/seq_lib/hmac_vseq_list.sv
index e3b67c8..5d8e644 100644
--- a/hw/ip/hmac/dv/env/seq_lib/hmac_vseq_list.sv
+++ b/hw/ip/hmac/dv/env/seq_lib/hmac_vseq_list.sv
@@ -10,5 +10,6 @@
 `include "hmac_back_pressure_vseq.sv"
 `include "hmac_burst_wr_vseq.sv"
 `include "hmac_common_vseq.sv"
+`include "hmac_datapath_stress_vseq.sv"
 `include "hmac_stress_all_vseq.sv"
 `include "hmac_reset_vseq.sv"