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/
 | 
			
		||||
/.pydevproject
 | 
			
		||||
/*.fst
 | 
			
		||||
/*.ftr
 | 
			
		||||
/*.gtkw
 | 
			
		||||
/.envrc.*
 | 
			
		||||
/.direnv/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								scc
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								scc
									
									
									
									
									
								
							 Submodule scc updated: 40b696a98b...2a1d3c1c2e
									
								
							@@ -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); }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user