Livt packages
Livt.IO
Version 1.8.1
Memory, UART, I2C, SPI, and Ethernet input/output components for Livt hardware designs.
Published files (126)
- BufferedUartApiTest.lvt
- BufferedUartPermissionTest.lvt
- BufferedUartTest.lvt
- ConcurrentUartTest.lvt
- LoopbackUartTest.lvt
- RtsCtsBufferedUartSmokeTest.lvt
- RtsCtsBufferedUartTest.lvt
- UartBaudConfigurationTest.lvt
- UartCapacityTest.lvt
- UartFrameConfigurationTest.lvt
- UartReceiverTest.lvt
- UartSynthesisConfigurationTest.lvt
- UartTest.lvt
- UartTransmitterTest.lvt
tests/uart/BufferedUartApiTest.lvt
namespace Livt.IO.Tests
using Livt.IO
/**
* Exercises BufferedUartApi with a shared fixture instance. Each scenario establishes the
* inputs and state it needs.
*/
@Test
@Context(ClockFrequency = 100MHz)
component BufferedUartApiTest
{
// Independent 100 MHz/1 Mbaud timing keeps behavioral regressions short.
const TICKS_PER_BIT: int = 100
// Shared fixture instances, signals, and observation state.
uart: BufferedUart<64, 64, UartDataBits.Eight, UartParity.None, UartStopBits.One, 1MHz>
// Shared fixture instances, signals, and observation state.
loopback_line: logic = 0b1
/**
* Creates the shared fixture instances (BufferedUart). Tests initialize the state required
* by their scenario.
*/
new()
{
this.uart = new BufferedUart<64, 64, UartDataBits.Eight, UartParity.None, UartStopBits.One, 1MHz>(this.loopback_line, this.loopback_line)
}
/**
* Checks that Send queues whole message.
*/
@Test
fn TestSendQueuesWholeMessage()
{
var message = "Hi".Encode()
var sent = this.uart.Send(message)
assert sent == 2
Simulation.Wait(TICKS_PER_BIT * 25)
assert this.uart.GetReceiveCount() > 0
var receivedByte1: byte
assert this.uart.TryReceive(receivedByte1) == true
assert receivedByte1 == 0x48
var receivedByte2: byte
assert this.uart.TryReceive(receivedByte2) == true
assert receivedByte2 == 0x69
assert this.uart.GetReceiveCount() == 0
}
/**
* Sending an empty prefix succeeds with zero accepted bytes.
*/
@Test
fn TestSendEmptyMessage()
{
var message = "".Encode()
assert this.uart.Send(message) == 0
assert this.uart.GetTransmitSpace() == 64
}
/**
* Checks the forwards buffered api case.
*/
@Test
fn TestForwardsBufferedApi()
{
assert this.uart.GetReceiveCount() == 0
assert this.uart.GetTransmitSpace() == 64
assert this.uart.IsTransmitting() == false
assert this.uart.TryTransmit(0x33) == true
assert this.uart.TryTransmit(0x34) == true
assert this.uart.GetTransmitSpace() < 64
this.uart.ClearTransmitBuffer()
assert this.uart.GetTransmitSpace() == 64
this.uart.ClearReceiveBuffer()
assert this.uart.GetReceiveCount() == 0
}
}