#!/usr/bin/env python3 # -*- coding: utf-8 -*- from random import randint point_mask = randint(0, 0xFF) points = [(randint(0, 0xFF), randint(0, 0xFF)) for i in range(8)] x0, y0 = (randint(0, 0xFF), randint(0, 0xFF)) tmp_out_mask = 0 cur_pt_mask = 1 min_dist = 0xFF if __name__ == "__main__": for x, y in points: if not cur_pt_mask & point_mask: cur_pt_mask <<= 1 continue dist = abs(x - x0) + abs(y - y0) if dist < min_dist: min_dist = dist tmp_out_mask = cur_pt_mask elif dist == min_dist: tmp_out_mask |= cur_pt_mask cur_pt_mask <<= 1 print("signal RAM: ram_type := (0 => std_logic_vector(to_unsigned({}, 8)),".format(point_mask)) for i in range(1, 17): if i % 2 == 1: val = points[(i-1)//2][0] else: val = points[(i-1)//2][1] print(" {} => std_logic_vector(to_unsigned({}, 8)),".format(i, val)) print(" 17 => std_logic_vector(to_unsigned({}, 8)),".format(x0)) print(" 18 => std_logic_vector(to_unsigned({}, 8)),".format(y0)) print(" others => (others =>'0'));") print() print() print(bin(tmp_out_mask), tmp_out_mask, min_dist)