[edn/dv] parameter names/usage, fips bit
Signed-off-by: Steve Nelson <steve.nelson@wdc.com>
diff --git a/hw/ip/edn/dv/env/edn_env.core b/hw/ip/edn/dv/env/edn_env.core
index 89e6f10..7556b46 100644
--- a/hw/ip/edn/dv/env/edn_env.core
+++ b/hw/ip/edn/dv/env/edn_env.core
@@ -10,6 +10,7 @@
- lowrisc:dv:ralgen
- lowrisc:dv:cip_lib
- lowrisc:dv:push_pull_agent
+ - lowrisc:dv:entropy_src_env
files:
- edn_env_pkg.sv
- edn_env_cfg.sv: {is_include_file: true}
diff --git a/hw/ip/edn/dv/env/edn_env.sv b/hw/ip/edn/dv/env/edn_env.sv
index bab94d9..967e6d1 100644
--- a/hw/ip/edn/dv/env/edn_env.sv
+++ b/hw/ip/edn/dv/env/edn_env.sv
@@ -10,28 +10,29 @@
);
`uvm_component_utils(edn_env)
- push_pull_agent#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH)) m_csrng_genbits_agent;
- push_pull_agent#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))
- m_endpoint_agent [NUM_ENDPOINTS-1:0];
+ push_pull_agent#(.HostDataWidth(entropy_src_env_pkg::FIPS_CSRNG_BUS_WIDTH))
+ m_csrng_genbits_agent;
+ push_pull_agent#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))
+ m_endpoint_agent [NUM_ENDPOINTS-1:0];
`uvm_component_new
function void build_phase(uvm_phase phase);
super.build_phase(phase);
// create components
- m_csrng_genbits_agent = push_pull_agent#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH))
- ::type_id::create("m_csrng_genbits_agent", this);
- uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH)))::set
- (this, "m_csrng_genbits_agent*", "cfg", cfg.m_csrng_genbits_agent_cfg);
+ m_csrng_genbits_agent = push_pull_agent#(.HostDataWidth(entropy_src_env_pkg::
+ FIPS_CSRNG_BUS_WIDTH))::type_id::create("m_csrng_genbits_agent", this);
+ uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(entropy_src_env_pkg::FIPS_CSRNG_BUS_WIDTH)))::
+ set(this, "m_csrng_genbits_agent*", "cfg", cfg.m_csrng_genbits_agent_cfg);
cfg.m_csrng_genbits_agent_cfg.agent_type = push_pull_agent_pkg::PushAgent;
cfg.m_csrng_genbits_agent_cfg.if_mode = dv_utils_pkg::Host;
for (int i = 0; i < NUM_ENDPOINTS; i++) begin
string endpoint_agent_name = $sformatf("m_endpoint_agent[%0d]", i);
- m_endpoint_agent[i] = push_pull_agent#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))::type_id::
- create(endpoint_agent_name, this);
- uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH)))::set
- (this, $sformatf("%0s*", endpoint_agent_name),
+ m_endpoint_agent[i] = push_pull_agent#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))::
+ type_id::create(endpoint_agent_name, this);
+ uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH)))::
+ set(this, $sformatf("%0s*", endpoint_agent_name),
"cfg", cfg.m_endpoint_agent_cfg[i]);
cfg.m_endpoint_agent_cfg[NUM_ENDPOINTS-1].agent_type = push_pull_agent_pkg::PullAgent;
cfg.m_endpoint_agent_cfg[NUM_ENDPOINTS-1].if_mode = dv_utils_pkg::Host;
diff --git a/hw/ip/edn/dv/env/edn_env_cfg.sv b/hw/ip/edn/dv/env/edn_env_cfg.sv
index 2cba5e4..6760cd8 100644
--- a/hw/ip/edn/dv/env/edn_env_cfg.sv
+++ b/hw/ip/edn/dv/env/edn_env_cfg.sv
@@ -5,10 +5,10 @@
class edn_env_cfg extends cip_base_env_cfg #(.RAL_T(edn_reg_block));
// ext component cfgs
- rand push_pull_agent_cfg#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH))
- m_csrng_genbits_agent_cfg;
- rand push_pull_agent_cfg#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))
- m_endpoint_agent_cfg [NUM_ENDPOINTS:0];
+ rand push_pull_agent_cfg#(.HostDataWidth(entropy_src_env_pkg::FIPS_CSRNG_BUS_WIDTH))
+ m_csrng_genbits_agent_cfg;
+ rand push_pull_agent_cfg#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))
+ m_endpoint_agent_cfg [NUM_ENDPOINTS:0];
`uvm_object_utils_begin(edn_env_cfg)
`uvm_field_object(m_csrng_genbits_agent_cfg, UVM_DEFAULT)
@@ -22,12 +22,13 @@
virtual function void initialize(bit [31:0] csr_base_addr = '1);
super.initialize(csr_base_addr);
// create config objects
- m_csrng_genbits_agent_cfg = push_pull_agent_cfg#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH))
- ::type_id::create("m_csrng_genbits_agent_cfg");
+ m_csrng_genbits_agent_cfg = push_pull_agent_cfg#(.HostDataWidth(entropy_src_env_pkg::
+ FIPS_CSRNG_BUS_WIDTH))::type_id::create("m_csrng_genbits_agent_cfg");
for (int i = 0; i < NUM_ENDPOINTS; i++) begin
- m_endpoint_agent_cfg[i] = push_pull_agent_cfg#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))::
- type_id::create($sformatf("m_endpoint_agent_cfg[$0d]", i));
+ m_endpoint_agent_cfg[i] = push_pull_agent_cfg#(.HostDataWidth(edn_env_pkg::
+ FIPS_ENDPOINT_BUS_WIDTH))::type_id::create
+ ($sformatf("m_endpoint_agent_cfg[$0d]", i));
end
// set num_interrupts & num_alerts
diff --git a/hw/ip/edn/dv/env/edn_env_pkg.sv b/hw/ip/edn/dv/env/edn_env_pkg.sv
index 1871331..415d1f1 100644
--- a/hw/ip/edn/dv/env/edn_env_pkg.sv
+++ b/hw/ip/edn/dv/env/edn_env_pkg.sv
@@ -14,6 +14,8 @@
import csr_utils_pkg::*;
import edn_ral_pkg::*;
+ parameter int FIPS_ENDPOINT_BUS_WIDTH = entropy_src_pkg::FIPS_BUS_WIDTH + edn_pkg::ENDPOINT_BUS_WIDTH;
+
// macro includes
`include "uvm_macros.svh"
`include "dv_macros.svh"
diff --git a/hw/ip/edn/dv/env/edn_scoreboard.sv b/hw/ip/edn/dv/env/edn_scoreboard.sv
index d0e95f8..15956de 100644
--- a/hw/ip/edn/dv/env/edn_scoreboard.sv
+++ b/hw/ip/edn/dv/env/edn_scoreboard.sv
@@ -12,10 +12,12 @@
// local variables
// TLM agent fifos
- uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))) endpoint_fifo[NUM_ENDPOINTS-1:0];
+ uvm_tlm_analysis_fifo#(push_pull_item#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH)))
+ endpoint_fifo[NUM_ENDPOINTS-1:0];
// local queues to hold incoming packets pending comparison
- push_pull_item#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH)) endpoint_q[$][NUM_ENDPOINTS-1:0];
+ push_pull_item#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))
+ endpoint_q[$][NUM_ENDPOINTS-1:0];
`uvm_component_new
diff --git a/hw/ip/edn/dv/env/edn_virtual_sequencer.sv b/hw/ip/edn/dv/env/edn_virtual_sequencer.sv
index da18e84..b19ee3e 100644
--- a/hw/ip/edn/dv/env/edn_virtual_sequencer.sv
+++ b/hw/ip/edn/dv/env/edn_virtual_sequencer.sv
@@ -8,8 +8,8 @@
);
`uvm_component_utils(edn_virtual_sequencer)
- push_pull_sequencer#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH))
- endpoint_sequencer_h[NUM_ENDPOINTS-1:0];
+ push_pull_sequencer#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))
+ endpoint_sequencer_h[NUM_ENDPOINTS-1:0];
`uvm_component_new
diff --git a/hw/ip/edn/dv/tb.sv b/hw/ip/edn/dv/tb.sv
index 05aceaf..48835d8 100644
--- a/hw/ip/edn/dv/tb.sv
+++ b/hw/ip/edn/dv/tb.sv
@@ -27,8 +27,9 @@
pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
pins_if #(1) devmode_if(devmode);
tl_if tl_if(.clk(clk), .rst_n(rst_n));
- push_pull_if#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH)) csrng_genbits_if();
- push_pull_if#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH)) endpoint_if[NUM_ENDPOINTS-1:0]();
+ push_pull_if#(.HostDataWidth(entropy_src_env_pkg::FIPS_CSRNG_BUS_WIDTH)) csrng_genbits_if();
+ push_pull_if#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH))
+ endpoint_if[NUM_ENDPOINTS-1:0]();
// dut
edn#(.NumEndPoints(NUM_ENDPOINTS)) dut (
@@ -53,17 +54,18 @@
assign csrng_rsp.csrng_rsp_ack = 1'b0;
assign csrng_rsp.csrng_rsp_sts = 1'b0;
assign csrng_rsp.genbits_valid = csrng_genbits_if.valid;
- assign csrng_rsp.genbits_fips = 1'b0;
- assign csrng_rsp.genbits_bus = csrng_genbits_if.data;
+ assign csrng_rsp.genbits_fips = csrng_genbits_if.h_data[entropy_src_pkg::CSRNG_BUS_WIDTH];
+ assign csrng_rsp.genbits_bus = csrng_genbits_if.h_data[entropy_src_pkg::CSRNG_BUS_WIDTH-1:0];
assign csrng_genbits_if.ready = csrng_req.genbits_ready;
for (genvar i = 0; i < NUM_ENDPOINTS; i++) begin : gen_endpoint_if
assign endpoint_req[i].edn_req = endpoint_if[i].req;
assign endpoint_if[i].ack = endpoint_rsp[i].edn_ack;
- assign endpoint_if[i].data = endpoint_rsp[i].edn_bus;
+ assign endpoint_if[i].d_data = {endpoint_rsp[i].edn_fips, endpoint_rsp[i].edn_bus};
initial begin
- uvm_config_db#(virtual push_pull_if#(.HostDataWidth(edn_pkg::ENDPOINT_BUS_WIDTH)))::set(null,
- $sformatf("*.env.m_endpoint_agent[%0d]*", i), "vif", endpoint_if[i]);
+ uvm_config_db#(virtual push_pull_if#(.HostDataWidth(edn_env_pkg::FIPS_ENDPOINT_BUS_WIDTH)))::
+ set(null, $sformatf("*.env.m_endpoint_agent[%0d]*", i),
+ "vif", endpoint_if[i]);
end
end
@@ -77,8 +79,8 @@
uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
uvm_config_db#(devmode_vif)::set(null, "*.env", "devmode_vif", devmode_if);
uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent*", "vif", tl_if);
- uvm_config_db#(virtual push_pull_if#(.HostDataWidth(csrng_pkg::GENBITS_BUS_WIDTH)))::set
- (null, "*.env.m_csrng_genbits_agent*", "vif", csrng_genbits_if);
+ uvm_config_db#(virtual push_pull_if#(.HostDataWidth(entropy_src_env_pkg::FIPS_CSRNG_BUS_WIDTH)))
+ ::set(null, "*.env.m_csrng_genbits_agent*", "vif", csrng_genbits_if);
$timeformat(-12, 0, " ps", 12);
run_test();
end