adds pipelining of wr req to AXI/ACE pinlevel adapters

This commit is contained in:
Eyck Jentzsch 2024-05-08 17:20:26 +02:00
parent f8bd40cd60
commit c929dcb5ea
3 changed files with 26 additions and 3 deletions

1
.gitignore vendored
View File

@ -41,6 +41,7 @@
/.venv/
/.pydevproject
/*.fst
/*.ftr
/*.gtkw
/.envrc.*
/.direnv/

2
scc

@ -1 +1 @@
Subproject commit 40b696a98b0fe179f6e0413a4223418f84288e85
Subproject commit 2a1d3c1c2e8dae7c6b6fc7353d7ca8ae76357e06

View File

@ -136,7 +136,7 @@ template <typename STATE> unsigned run_scenario(STATE& state) {
return cycles;
}
TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") {
void axi4_burst_alignment(bool pipelined_wrreq, bool write_bp) {
struct {
unsigned int ResetCycles{4};
unsigned int BurstLengthByte{16};
@ -148,6 +148,9 @@ TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") {
unsigned resp_cnt{0};
} state;
auto& dut = factory::get<testbench>();
dut.intor_bfm.pipelined_wrreq = pipelined_wrreq;
dut.tgt_pe.wr_data_accept_delay.value = write_bp ? 1 : 0;
auto cycles = run_scenario(state);
REQUIRE(cycles < 1000);
@ -175,7 +178,7 @@ TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") {
}
}
TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") {
void axi4_narrow_burst(bool pipelined_wrreq, bool write_bp) {
struct {
unsigned int ResetCycles{4};
unsigned int BurstLengthByte{16};
@ -187,6 +190,9 @@ TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") {
unsigned resp_cnt{0};
} state;
auto& dut = factory::get<testbench>();
dut.intor_bfm.pipelined_wrreq = pipelined_wrreq;
dut.tgt_pe.wr_data_accept_delay.value = write_bp ? 1 : 0;
auto cycles = run_scenario(state);
REQUIRE(cycles < 1000);
@ -209,3 +215,19 @@ TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") {
CHECK(is_equal(*send_tx[i], *recv_tx[i]));
}
}
TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") { axi4_burst_alignment(false, false); }
TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") { axi4_narrow_burst(false, false); }
TEST_CASE("axi4_burst_alignment_with_bp", "[AXI][pin-level]") { axi4_burst_alignment(false, true); }
TEST_CASE("axi4_narrow_burst_with_bp", "[AXI][pin-level]") { axi4_narrow_burst(false, true); }
TEST_CASE("axi4_burst_alignment_pipelined_write", "[AXI][pin-level]") { axi4_burst_alignment(true, false); }
TEST_CASE("axi4_narrow_burst_pipelined_write", "[AXI][pin-level]") { axi4_narrow_burst(true, false); }
TEST_CASE("axi4_burst_alignment_pipelined_write_with_bp", "[AXI][pin-level]") { axi4_burst_alignment(true, true); }
TEST_CASE("axi4_narrow_burst_pipelined_write_with_bp", "[AXI][pin-level]") { axi4_narrow_burst(true, true); }