[csrng/dv] csrng_cmds_test/instantiate cmd
Signed-off-by: Steve Nelson <steve.nelson@wdc.com>
diff --git a/hw/dv/sv/csrng_agent/csrng_item.sv b/hw/dv/sv/csrng_agent/csrng_item.sv
index 3a59dd0..08945e9 100644
--- a/hw/dv/sv/csrng_agent/csrng_item.sv
+++ b/hw/dv/sv/csrng_agent/csrng_item.sv
@@ -4,22 +4,44 @@
class csrng_item extends uvm_sequence_item;
- // TODO: create
`uvm_object_utils_begin(csrng_item)
`uvm_object_utils_end
`uvm_object_new
- acmd_e acmd;
- bit [3:0] clen, flags;
- bit [18:0] glen;
- bit [31:0] cmd_data_q[$];
+ rand acmd_e acmd;
+ rand bit [3:0] clen, flags;
+ rand bit [18:0] glen;
+ rand bit [31:0] cmd_data_q[$];
+
+ // TODO: Try clen > 12
+ constraint c_clen {
+ clen inside {[0:12]};
+ };
+
+ constraint c_cmd_data {
+ solve clen before cmd_data_q;
+
+ cmd_data_q.size() == clen;
+ };
+
+ constraint c_flags {
+ flags inside {[0:1]};
+ };
+
+// TODO: add/fix glen constraint
+// constraint c_glen {
+// solve acmd before glen;
+//
+// if (acmd != csrng_pkg::GEN)
+// glen == 'h0;
+// };
virtual function string convert2string();
string str = "";
str = {str, "\n"};
str = {str, $sformatf("\n\t |*********** csrng_item ************| \t") };
- str = {str, $sformatf("\n\t |* acmd : %4s *| \t", acmd.name()) };
+ str = {str, $sformatf("\n\t |* acmd : %4s *| \t", acmd.name()) };
str = {str, $sformatf("\n\t |* clen : 0x%0h *| \t", clen) };
str = {str, $sformatf("\n\t |* flags : 0x%0h *| \t", flags) };
str = {str, $sformatf("\n\t |* glen : 0x%5h *| \t", glen) };