Livt packages
Livt.Bus
Version 2.0.1
Configurable Avalon, AXI4-Lite, and Wishbone memory-mapped masters, interfaces, bridges, and test components.
Published files (67)
tests/generic/GenericAvalon32Test.lvt
namespace Livt.Bus.Tests.Generic
using Livt.Bus.Avalon.Testing
/**
* Native-width transfers, high address/data bits, byte lanes, errors and recovery.
*/
@Test
component GenericAvalon32Test
{
const LANES: int = 32 / 8
master: AvalonTestMaster
target: AvalonTestSlave
new()
{
this.master = new AvalonTestMaster()
this.target = new AvalonTestSlave(this.master)
}
@Test
fn NativeTransfersAndRecovery()
{
target.Clear()
target.Configure(2 as uint, 0b00)
master.SetTimeoutTicks(100 as uint)
var address = (1 as Logic[32]) << 4
var value = ((0xA5 as Logic[32]) << 24) | (0x1234 as Logic[32])
var expected = ((0xBC as Logic[32]) << 24) | (0x1234 as Logic[32])
master.WriteWord(address, value)
master.VerifyWord(address, value)
assert target.observedAddress == address
assert target.acceptedWrites == (1 as uint)
master.Write8(address | (3 as Logic[32]), 0xBC as byte)
master.VerifyWord(address, expected)
assert target.acceptedWrites == (2 as uint)
assert master.Read8(address | (3 as Logic[32])) == (0xBC as byte)
master.WriteMaskedWord(address, ~(0 as Logic[32]), 0 as Logic[LANES])
master.VerifyWord(address, expected)
assert target.acceptedWrites == (3 as uint)
target.Configure(0 as uint, 0b10)
assert master.TryRead(address) == true
assert master.LastResponse() == 0b10
target.Configure(0 as uint, 0b00)
assert master.LastTimedOut() == false
target.Configure(10 as uint, 0b00)
master.SetTimeoutTicks(2 as uint)
assert master.TryRead(address) == false
assert master.LastTimedOut() == true
Simulation.Wait(20)
target.Configure(2 as uint, 0b00)
master.SetTimeoutTicks(100 as uint)
master.VerifyWord(address, expected)
}
}