[SPI/DV] Regression Failure Fixes And Testplan Update
- Fixed regression failures
- Testplan update for unmapped tests
Signed-off-by: Viswanadha Bazawada <viswanadha.bazawada@ensilica.com>
diff --git a/hw/ip/spi_host/data/spi_host_testplan.hjson b/hw/ip/spi_host/data/spi_host_testplan.hjson
index 39b252d..5c12f29 100644
--- a/hw/ip/spi_host/data/spi_host_testplan.hjson
+++ b/hw/ip/spi_host/data/spi_host_testplan.hjson
@@ -6,6 +6,7 @@
import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
"hw/dv/tools/dvsim/testplans/alert_test_testplan.hjson",
"hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/mem_testplan.hjson",
"hw/dv/tools/dvsim/testplans/stress_all_with_reset_testplan.hjson",
"hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
"spi_host_sec_cm_testplan.hjson"],
@@ -201,6 +202,35 @@
tests: ["spi_host_stress_all"]
}
{
+ name: stall
+ desc: '''
+ Stimulus:
+ - Ongoing transaction has stalled due to lack of available space in the RX FIFO
+ and continues when RX fifo is cleared
+ - Ongoing transaction has stalled due to lack of data in the TX FIFO
+ and continues when data is provided in TX FIFO
+
+ Checking:
+ - Ensure Rxstall occurs and recovers
+ - Ensure Txstall occurs and recovers
+ '''
+ milestone: V2
+ tests: ["spi_host_status_stall"]
+ }
+ {
+ name: Idlecsbactive
+ desc: '''
+ Stimulus:
+ - Pause next segment availability and idly wait for next command
+
+ Checking:
+ - Ensure transactions goes through even with a segment pause and idle wait
+ in the state IdleCsbActive
+ '''
+ milestone: V2
+ tests: ["spi_host_idlecsbactive"]
+ }
+ {
name: winbond
desc: '''
Replace SPI agent with the Winbond Flash model
diff --git a/hw/ip/spi_host/dv/env/seq_lib/spi_host_event_vseq.sv b/hw/ip/spi_host/dv/env/seq_lib/spi_host_event_vseq.sv
index ccc3a91..96fac30 100644
--- a/hw/ip/spi_host/dv/env/seq_lib/spi_host_event_vseq.sv
+++ b/hw/ip/spi_host/dv/env/seq_lib/spi_host_event_vseq.sv
@@ -43,9 +43,9 @@
csr_rd(.ptr(ral.status.txqd), .value(txqd));
if (txqd < spi_host_ctrl_reg.tx_watermark) begin
check_event(ral.status.txwm, 1);
+ read_rx_fifo();
end
end
- read_rx_fifo();
check_event(ral.status.txempty, 1);
cfg.clk_rst_vif.wait_clks(100);
diff --git a/hw/ip/spi_host/dv/env/seq_lib/spi_host_idlecsbactive_vseq.sv b/hw/ip/spi_host/dv/env/seq_lib/spi_host_idlecsbactive_vseq.sv
index 1eae987..1f53c45 100644
--- a/hw/ip/spi_host/dv/env/seq_lib/spi_host_idlecsbactive_vseq.sv
+++ b/hw/ip/spi_host/dv/env/seq_lib/spi_host_idlecsbactive_vseq.sv
@@ -73,4 +73,9 @@
end
endtask
+ virtual task generate_transaction();
+ transaction_init();
+ `DV_CHECK_RANDOMIZE_WITH_FATAL(transaction, num_segments == 4; cmd == ReadStd;)
+ endtask
+
endclass : spi_host_idlecsbactive_vseq
diff --git a/hw/ip/spi_host/dv/env/seq_lib/spi_host_status_stall_vseq.sv b/hw/ip/spi_host/dv/env/seq_lib/spi_host_status_stall_vseq.sv
index fbca430..fed112b 100644
--- a/hw/ip/spi_host/dv/env/seq_lib/spi_host_status_stall_vseq.sv
+++ b/hw/ip/spi_host/dv/env/seq_lib/spi_host_status_stall_vseq.sv
@@ -16,6 +16,7 @@
virtual task body();
spi_host_command_t command_snd;
spi_segment_item segment_snd;
+ bit [7:0] read_q[$];
begin : isolation_fork
fork
@@ -38,7 +39,9 @@
end : isolation_fork
csr_spinwait(.ptr(ral.status.rxfull), .exp_data(1'b1));
csr_spinwait(.ptr(ral.status.rxstall), .exp_data(1'b1));
- read_rx_fifo();
+ for (int i = 0; i < SPI_HOST_RX_DEPTH; i++) begin
+ access_data_fifo(read_q, RxFifo);
+ end
// send transaction to check tx stall
cfg.tx_stall_check = 1'b1;
wr_trans();