Livt packages

Eccelerators.RiscV

Version 0.3.0

Composable RV32I and Zmmul processors, machine-mode support, and reusable FPGA system components written in Livt.

Published files (120)

tests/Rv32MultiplyVectors.lvt

namespace Eccelerators.RiscV.Tests

/**
 * Generated Python integer oracle; no expected value is calculated by the hardware.
 * Checked-in tables keep expected results independent of the hardware datapath.
 */
class Rv32MultiplyVectors
{
	// Operand pairs and expected products, grouped by funct3.
	public const LEFT_WORDS: uint[113] = [
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000001, 0x00000001, 0x00000001,
		0x00000001, 0x00000001, 0x00000001, 0x00000001,
		0x00000001, 0x00000001, 0x00000002, 0x00000002,
		0x00000002, 0x00000002, 0x00000002, 0x00000002,
		0x00000002, 0x00000002, 0x00000002, 0x7fffffff,
		0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
		0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
		0x80000000, 0x80000000, 0x80000000, 0x80000000,
		0x80000000, 0x80000000, 0x80000000, 0x80000000,
		0x80000000, 0xffffffff, 0xffffffff, 0xffffffff,
		0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
		0xffffffff, 0xffffffff, 0xfffffffe, 0xfffffffe,
		0xfffffffe, 0xfffffffe, 0xfffffffe, 0xfffffffe,
		0xfffffffe, 0xfffffffe, 0xfffffffe, 0x55555555,
		0x55555555, 0x55555555, 0x55555555, 0x55555555,
		0x55555555, 0x55555555, 0x55555555, 0x55555555,
		0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
		0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
		0xaaaaaaaa, 0xf8dc84a7, 0xc90686a6, 0x7fdd83da,
		0xfa5a978f, 0x9354751a, 0xe624ceda, 0x0f886dc4,
		0x66dfde38, 0xaf4e7de8, 0xe044402d, 0xdb9bbd08,
		0x0ec8b212, 0x73ad071a, 0x2dc9c750, 0x8f0519ee,
		0x09637204, 0x8099b0fb, 0x3c80b0e9, 0x0f63e32a,
		0x8850ecef, 0xc12b4fd9, 0x937e0c30, 0xba5a7301,
		0x76bddfb1, 0xac08b8b4, 0xeae61ec6, 0xe1e171df,
		0x8d951228, 0x9b1778d7, 0x6fe33cdd, 0x4e1a0057,
		0x40b49d98
	]

	// Right operands paired by index with LEFT_WORDS.
	public const RIGHT_WORDS: uint[113] = [
		0x00000000, 0x00000001, 0x00000002, 0x7fffffff,
		0x80000000, 0xffffffff, 0xfffffffe, 0x55555555,
		0xaaaaaaaa, 0x00000000, 0x00000001, 0x00000002,
		0x7fffffff, 0x80000000, 0xffffffff, 0xfffffffe,
		0x55555555, 0xaaaaaaaa, 0x00000000, 0x00000001,
		0x00000002, 0x7fffffff, 0x80000000, 0xffffffff,
		0xfffffffe, 0x55555555, 0xaaaaaaaa, 0x00000000,
		0x00000001, 0x00000002, 0x7fffffff, 0x80000000,
		0xffffffff, 0xfffffffe, 0x55555555, 0xaaaaaaaa,
		0x00000000, 0x00000001, 0x00000002, 0x7fffffff,
		0x80000000, 0xffffffff, 0xfffffffe, 0x55555555,
		0xaaaaaaaa, 0x00000000, 0x00000001, 0x00000002,
		0x7fffffff, 0x80000000, 0xffffffff, 0xfffffffe,
		0x55555555, 0xaaaaaaaa, 0x00000000, 0x00000001,
		0x00000002, 0x7fffffff, 0x80000000, 0xffffffff,
		0xfffffffe, 0x55555555, 0xaaaaaaaa, 0x00000000,
		0x00000001, 0x00000002, 0x7fffffff, 0x80000000,
		0xffffffff, 0xfffffffe, 0x55555555, 0xaaaaaaaa,
		0x00000000, 0x00000001, 0x00000002, 0x7fffffff,
		0x80000000, 0xffffffff, 0xfffffffe, 0x55555555,
		0xaaaaaaaa, 0x83651534, 0xa0b413e5, 0x686918c9,
		0xf4db8e4e, 0x5992d13e, 0xcccaad38, 0xd0d5a381,
		0xfab164f8, 0xdb304d4b, 0x7fcbc421, 0x8723a518,
		0x0b23b277, 0xec859ae4, 0x9fac28e9, 0xbe653ae2,
		0x0125e86a, 0x283cddd3, 0xfc8d1014, 0x39882476,
		0xb2876064, 0x0e971d80, 0xf1b726ba, 0xab652492,
		0xdf878594, 0x156d0c33, 0xe9932942, 0xa0229052,
		0x9c2ab1c3, 0x229f8134, 0x01926fa4, 0xabe4cee9,
		0x9a6f9a52
	]

	// Expected products, grouped by multiply operation and operand-pair index.
	public const EXPECTED: uint[452] = [
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000001, 0x00000002,
		0x7fffffff, 0x80000000, 0xffffffff, 0xfffffffe,
		0x55555555, 0xaaaaaaaa, 0x00000000, 0x00000002,
		0x00000004, 0xfffffffe, 0x00000000, 0xfffffffe,
		0xfffffffc, 0xaaaaaaaa, 0x55555554, 0x00000000,
		0x7fffffff, 0xfffffffe, 0x00000001, 0x80000000,
		0x80000001, 0x00000002, 0x2aaaaaab, 0x55555556,
		0x00000000, 0x80000000, 0x00000000, 0x80000000,
		0x00000000, 0x80000000, 0x00000000, 0x80000000,
		0x00000000, 0x00000000, 0xffffffff, 0xfffffffe,
		0x80000001, 0x80000000, 0x00000001, 0x00000002,
		0xaaaaaaab, 0x55555556, 0x00000000, 0xfffffffe,
		0xfffffffc, 0x00000002, 0x00000000, 0x00000002,
		0x00000004, 0x55555556, 0xaaaaaaac, 0x00000000,
		0x55555555, 0xaaaaaaaa, 0x2aaaaaab, 0x80000000,
		0xaaaaaaab, 0x55555556, 0x38e38e39, 0x71c71c72,
		0x00000000, 0xaaaaaaaa, 0x55555554, 0x55555556,
		0x00000000, 0x55555556, 0xaaaaaaac, 0x71c71c72,
		0xe38e38e4, 0x6e8fa4ec, 0xbb8cc47e, 0xcdb2f62a,
		0x7b007f92, 0x74e2964c, 0x27da91b0, 0x45b71bc4,
		0x70652640, 0x0b5daaf8, 0x609db9cd, 0x0787e0c0,
		0x89914a5e, 0xc4e1f728, 0xcd8ae7d0, 0x4946d01c,
		0x8114d5a8, 0x5f498de1, 0x91716234, 0x2c4c9d5c,
		0xb87f2d5c, 0x74b28180, 0xc5b3fae0, 0x0a26ba92,
		0x70534754, 0x17093bdc, 0x4bf3a50c, 0xa9e1e96e,
		0x44aa7c78, 0xf031e2ac, 0xc800d094, 0x6c6c512f,
		0x258feab0, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0xffffffff, 0xffffffff,
		0xffffffff, 0x00000000, 0xffffffff, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0xffffffff,
		0xffffffff, 0xffffffff, 0x00000000, 0xffffffff,
		0x00000000, 0x00000000, 0x00000000, 0x3fffffff,
		0xc0000000, 0xffffffff, 0xffffffff, 0x2aaaaaaa,
		0xd5555555, 0x00000000, 0xffffffff, 0xffffffff,
		0xc0000000, 0x40000000, 0x00000000, 0x00000001,
		0xd5555555, 0x2aaaaaab, 0x00000000, 0xffffffff,
		0xffffffff, 0xffffffff, 0x00000000, 0x00000000,
		0x00000000, 0xffffffff, 0x00000000, 0x00000000,
		0xffffffff, 0xffffffff, 0xffffffff, 0x00000001,
		0x00000000, 0x00000000, 0xffffffff, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x2aaaaaaa,
		0xd5555555, 0xffffffff, 0xffffffff, 0x1c71c71c,
		0xe38e38e3, 0x00000000, 0xffffffff, 0xffffffff,
		0xd5555555, 0x2aaaaaab, 0x00000000, 0x00000000,
		0xe38e38e3, 0x1c71c71c, 0x037981a3, 0x1476e1d2,
		0x34267bcc, 0x003ee941, 0xd9fa0a0e, 0x052c0d88,
		0xfd2361da, 0xfdde0a26, 0x0b9a6e28, 0xf02899a5,
		0x112e527a, 0x00a4af65, 0xf732da53, 0xeec5565d,
		0x1cf40257, 0x000ac757, 0xebf9b948, 0xff2f53ea,
		0x03756cd6, 0x24380d6b, 0xfc6b47ac, 0x060dfbf9,
		0x1704738d, 0xf0f06240, 0xf8f8f2dd, 0x01d931f9,
		0x0b476442, 0x2c9eafea, 0xf25a3eb2, 0x00afe3a0,
		0xe6572c2b, 0xe6543e87, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000001, 0x00000001, 0x00000001, 0x00000000,
		0x00000001, 0x00000000, 0x00000000, 0x00000000,
		0x3fffffff, 0x3fffffff, 0x7ffffffe, 0x7ffffffe,
		0x2aaaaaaa, 0x55555554, 0x00000000, 0xffffffff,
		0xffffffff, 0xc0000000, 0xc0000000, 0x80000000,
		0x80000001, 0xd5555555, 0xaaaaaaab, 0x00000000,
		0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
		0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
		0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
		0xffffffff, 0xfffffffe, 0xfffffffe, 0xffffffff,
		0xfffffffe, 0x00000000, 0x00000000, 0x00000000,
		0x2aaaaaaa, 0x2aaaaaaa, 0x55555554, 0x55555554,
		0x1c71c71c, 0x38e38e38, 0x00000000, 0xffffffff,
		0xffffffff, 0xd5555555, 0xd5555555, 0xaaaaaaaa,
		0xaaaaaaaa, 0xe38e38e3, 0xc71c71c6, 0xfc56064a,
		0xdd7d6878, 0x34267bcc, 0xfa9980d0, 0xd9fa0a0e,
		0xeb50dc62, 0x0cabcf9e, 0x64bde85e, 0xbae8ec10,
		0xf02899a5, 0xecca0f82, 0x00a4af65, 0x6adfe16d,
		0x1c8f1dad, 0xabf91c45, 0x000ac757, 0xebf9b948,
		0x3bb004d3, 0x03756cd6, 0xac88fa5a, 0xfc6b47ac,
		0x998c0829, 0xd15ee68e, 0x67ae41f1, 0xf8f8f2dd,
		0xecbf50bf, 0xed28d621, 0xba33c212, 0xf25a3eb2,
		0x00afe3a0, 0x34712c82, 0x2708dc1f, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000001, 0x00000001, 0x00000001,
		0x00000000, 0x00000001, 0x00000000, 0x00000000,
		0x00000000, 0x3fffffff, 0x3fffffff, 0x7ffffffe,
		0x7ffffffe, 0x2aaaaaaa, 0x55555554, 0x00000000,
		0x00000000, 0x00000001, 0x3fffffff, 0x40000000,
		0x7fffffff, 0x7fffffff, 0x2aaaaaaa, 0x55555555,
		0x00000000, 0x00000000, 0x00000001, 0x7ffffffe,
		0x7fffffff, 0xfffffffe, 0xfffffffd, 0x55555554,
		0xaaaaaaa9, 0x00000000, 0x00000000, 0x00000001,
		0x7ffffffe, 0x7fffffff, 0xfffffffd, 0xfffffffc,
		0x55555554, 0xaaaaaaa8, 0x00000000, 0x00000000,
		0x00000000, 0x2aaaaaaa, 0x2aaaaaaa, 0x55555554,
		0x55555554, 0x1c71c71c, 0x38e38e38, 0x00000000,
		0x00000000, 0x00000001, 0x55555554, 0x55555555,
		0xaaaaaaa9, 0xaaaaaaa8, 0x38e38e38, 0x71c71c70,
		0x7fbb1b7e, 0x7e317c5d, 0x34267bcc, 0xef750f1e,
		0x338cdb4c, 0xb81b899a, 0x0cabcf9e, 0x64bde85e,
		0x9619395b, 0x6ff45dc6, 0x73edb49a, 0x00a4af65,
		0x6adfe16d, 0x1c8f1dad, 0x6a5e5727, 0x000ac757,
		0x1436971b, 0x3bb004d3, 0x03756cd6, 0x5f105abe,
		0x0b02652c, 0x8b432ee3, 0x7cc40b20, 0x67ae41f1,
		0x0e65ff10, 0xd6527a01, 0x8d4b6673, 0x565e73d5,
		0x14f9bfe6, 0x00afe3a0, 0x34712c82, 0x2708dc1f
	]
}