adds pipelining of wr req to AXI/ACE pinlevel adapters
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,6 +41,7 @@
|
|||||||
/.venv/
|
/.venv/
|
||||||
/.pydevproject
|
/.pydevproject
|
||||||
/*.fst
|
/*.fst
|
||||||
|
/*.ftr
|
||||||
/*.gtkw
|
/*.gtkw
|
||||||
/.envrc.*
|
/.envrc.*
|
||||||
/.direnv/
|
/.direnv/
|
||||||
|
2
scc
2
scc
Submodule scc updated: 40b696a98b...2a1d3c1c2e
@@ -136,7 +136,7 @@ template <typename STATE> unsigned run_scenario(STATE& state) {
|
|||||||
return cycles;
|
return cycles;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") {
|
void axi4_burst_alignment(bool pipelined_wrreq, bool write_bp) {
|
||||||
struct {
|
struct {
|
||||||
unsigned int ResetCycles{4};
|
unsigned int ResetCycles{4};
|
||||||
unsigned int BurstLengthByte{16};
|
unsigned int BurstLengthByte{16};
|
||||||
@@ -148,6 +148,9 @@ TEST_CASE("axi4_burst_alignment", "[AXI][pin-level]") {
|
|||||||
unsigned resp_cnt{0};
|
unsigned resp_cnt{0};
|
||||||
} state;
|
} 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);
|
auto cycles = run_scenario(state);
|
||||||
|
|
||||||
REQUIRE(cycles < 1000);
|
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 {
|
struct {
|
||||||
unsigned int ResetCycles{4};
|
unsigned int ResetCycles{4};
|
||||||
unsigned int BurstLengthByte{16};
|
unsigned int BurstLengthByte{16};
|
||||||
@@ -187,6 +190,9 @@ TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") {
|
|||||||
unsigned resp_cnt{0};
|
unsigned resp_cnt{0};
|
||||||
} state;
|
} 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);
|
auto cycles = run_scenario(state);
|
||||||
|
|
||||||
REQUIRE(cycles < 1000);
|
REQUIRE(cycles < 1000);
|
||||||
@@ -209,3 +215,19 @@ TEST_CASE("axi4_narrow_burst", "[AXI][pin-level]") {
|
|||||||
CHECK(is_equal(*send_tx[i], *recv_tx[i]));
|
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); }
|
||||||
|
Reference in New Issue
Block a user