Livt packages
Livt.ML
Version 1.6.1
Fixed-size quantized inference, tensor storage, attention, and transformer building blocks for Livt.
Published files (132)
tests/embedding/TokenEmbedding50257x64StreamTest.lvt
namespace Livt.ML.Tests.Embedding
using Livt.ML.Embedding
/**
* Exercises TokenEmbedding50257x64Stream with a shared fixture instance. Each scenario
* establishes the inputs and state it needs.
*/
@Test
component TokenEmbedding50257x64StreamTest
{
// Shared fixture instances, signals, and observation state.
tokenRequest: logic
tokenIndex: int
tokenAcknowledge: logic
memoryRequest: logic
memoryAddress: int
memoryData: int
memoryAcknowledge: logic
outputRequest: logic
outputData: int
outputLast: logic
outputAcknowledge: logic
invalidToken: logic
dut: TokenEmbedding50257x64Stream
/**
* Creates the shared fixture instances (TokenEmbedding50257x64Stream). Tests initialize
* the state required by their scenario.
*/
new()
{
this.dut = new TokenEmbedding50257x64Stream(
this.tokenRequest, this.tokenIndex, this.tokenAcknowledge,
this.memoryRequest, this.memoryAddress, this.memoryData,
this.memoryAcknowledge, this.outputRequest, this.outputData,
this.outputLast, this.outputAcknowledge, this.invalidToken)
}
/**
* Submits one token selection and waits for the matching toggle acknowledgment before
* returning.
*/
fn SendToken(token: int)
{
tokenIndex = token
tokenRequest = !tokenRequest
while (tokenAcknowledge != tokenRequest) {
state {
}
}
}
/**
* Checks that the component streams sixty four consecutive addresses.
*/
@Test
fn StreamsSixtyFourConsecutiveAddresses()
{
this.SendToken(7)
for (var element = 0; element < 64; element++) {
while (memoryRequest == memoryAcknowledge) {
state {
}
}
assert memoryAddress == 448 + element
memoryData = element - 32
memoryAcknowledge = memoryRequest
while (outputRequest == outputAcknowledge) {
state {
}
}
assert outputData == element - 32
if (element == 63) {
assert outputLast == 0b1
} else {
assert outputLast == 0b0
}
outputAcknowledge = outputRequest
}
assert invalidToken == 0b0
}
/**
* Checks that the component rejects token outside vocabulary.
*/
@Test
fn RejectsTokenOutsideVocabulary()
{
this.SendToken(50257)
assert invalidToken == 0b1
}
}