import net.mograsim.logic.core.components.gates.NotGate;\r
import net.mograsim.logic.core.components.gates.OrGate;\r
import net.mograsim.logic.core.components.gates.XorGate;\r
-import net.mograsim.logic.core.components.memory.WordAddressableMemoryComponent;\r
import net.mograsim.logic.core.timeline.Timeline;\r
import net.mograsim.logic.core.types.Bit;\r
import net.mograsim.logic.core.types.BitVector;\r
test2.assertAfterSimulationIs(Bit.ONE);\r
}\r
\r
- @Test\r
- public void wordAddressableMemoryLargeTest()\r
- {\r
- Wire rW = new Wire(t, 1, 2);\r
- Wire data = new Wire(t, 16, 2);\r
- Wire address = new Wire(t, 64, 2);\r
- ReadWriteEnd rWI = rW.createReadWriteEnd();\r
- ReadWriteEnd dataI = data.createReadWriteEnd();\r
- ReadWriteEnd addressI = address.createReadWriteEnd();\r
-\r
- WordAddressableMemoryComponent memory = new WordAddressableMemoryComponent(t, 4, 4096L, Long.MAX_VALUE, data.createReadWriteEnd(),\r
- rW.createReadOnlyEnd(), address.createReadOnlyEnd());\r
-\r
- Random r = new Random();\r
- for (long j = 1; j > 0; j *= 2)\r
- {\r
- for (int i = 0; i < 50; i++)\r
- {\r
- String sAddress = String.format("%64s", BigInteger.valueOf(4096 + i + j).toString(2)).replace(' ', '0');\r
- sAddress = new StringBuilder(sAddress).reverse().toString();\r
- BitVector bAddress = BitVector.parse(sAddress);\r
- addressI.feedSignals(bAddress);\r
- t.executeAll();\r
- String random = BigInteger.valueOf(Math.abs(r.nextInt())).toString(5);\r
- random = random.substring(Integer.max(0, random.length() - 16));\r
- random = String.format("%16s", random).replace(' ', '0');\r
- random = random.replace('2', 'X').replace('3', 'Z').replace('4', 'U');\r
- BitVector vector = BitVector.parse(random);\r
- dataI.feedSignals(vector);\r
- rWI.feedSignals(Bit.ZERO);\r
- t.executeAll();\r
- rWI.feedSignals(Bit.ONE);\r
- t.executeAll();\r
- dataI.clearSignals();\r
- t.executeAll();\r
-\r
- assertBitArrayEquals(dataI.getValues(), vector.getBits());\r
- }\r
- }\r
- }\r
-\r
private static void assertBitArrayEquals(BitVector actual, Bit... expected)\r
{\r
assertArrayEquals(expected, actual.getBits());\r