def check(): yield delay(100) yield clk.posedge rst.next = 1 yield clk.posedge rst.next = 0 yield clk.posedge yield delay(100) yield clk.posedge yield clk.posedge yield output_axis_tvalid.posedge mt = mt19937.mt19937() print("test 1: check 1000 values") current_test.next = 1 for i in range(1000): while sink.empty(): yield clk.posedge frame = sink.recv() assert frame.data[0] == mt.int32() print("test 2: pause sink") current_test.next = 2 for i in range(100): sink_pause.next = True yield clk.posedge yield clk.posedge yield clk.posedge sink_pause.next = False yield clk.posedge for i in range(1000): while sink.empty(): yield clk.posedge frame = sink.recv() assert frame.data[0] == mt.int32() yield delay(100) print("test 3: new seed") current_test.next = 3 mt.seed(0x12345678) yield clk.posedge seed_val.next = 0x12345678 seed_start.next = 1 yield clk.posedge seed_start.next = 0 yield clk.posedge while not sink.empty(): sink.recv() for i in range(1000): while sink.empty(): yield clk.posedge frame = sink.recv() assert frame.data[0] == mt.int32() raise StopSimulation
#!/usr/bin/env python import mt19937 m = mt19937.mt19937(123) for i in range(0, 1024): print m.extract_number()
#!/usr/bin/env python3 import sys from mt19937 import mt19937, untemper if __name__ == '__main__': # create our own version of an MT19937 PRNG. myprng = mt19937(0) # here are the random numbers generated in the snowball game with open(sys.argv[1], 'r') as file: numbers = [int(x) for x in file.readlines()] # clone the prng for i in range(mt19937.n): myprng.MT[i] = untemper(numbers[i]) # predict the seed for the game print(myprng.extract_number()) print(myprng.extract_number())