# Copyright 2020 Project U-Ray Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import numpy as np
import sys

X = 8
N = 200

root = sys.argv[2]

def random_vector(size):
	return "{%s}" % ", ".join(["d[%d]" % np.random.randint(12) for k in range(size)])

for x in range(X):


	with open(root + "/dsp2/dsp_b%d.v" % x, "w") as f:
		print("module top(input [7:0] clk, cen, rst, input [11:0] d, input [7:0] sel, output [63:0] q);", file=f)
		print("    wire [8:0] r = {1'b0, rst}, e = {1'b1, cen};", file=f)
		print("    wire [63:0] int_q[0:%d];" % (N-1), file=f)
		print("    assign q = int_q[sel];", file=f)
		for i in range(N):
			use_preadd = np.random.choice([False, True])
			bmultsel = (np.random.choice(["AD", "B"]) if use_preadd else "B")
			amultsel = (np.random.choice(["AD", "A"]) if use_preadd and bmultsel == "AD" else ("AD" if use_preadd else "A"))
			use_patdet = np.random.choice([False, True])
			print("    (* keep, dont_touch *) DSP48E2 #(", file=f)
			print("        .ADREG(%d)," % (np.random.randint(2) if use_preadd else 0), file=f)
			print("        .ALUMODEREG(%d)," % np.random.randint(2), file=f)
			print("        .AMULTSEL(\"%s\")," % amultsel, file=f)
			print("        .AREG(%d)," % np.random.randint(3), file=f)
			print("        .AUTORESET_PATDET(\"%s\")," % np.random.choice(["NO_RESET", "RESET_MATCH", "RESET_NOT_MATCH"]), file=f)
			print("        .AUTORESET_PRIORITY(\"%s\")," % np.random.choice(["RESET", "CEP"]), file=f)
			print("        .A_INPUT(\"DIRECT\"),", file=f)
			print("        .BMULTSEL(\"%s\")," % bmultsel,file=f)
			print("        .BREG(%d)," % np.random.randint(3), file=f)
			print("        .B_INPUT(\"DIRECT\"),", file=f)
			print("        .CARRYINREG(%d)," % np.random.randint(2), file=f)
			print("        .CARRYINSELREG(%d)," % np.random.randint(2), file=f)
			print("        .CREG(%d)," % np.random.randint(2), file=f)
			print("        .DREG(%d)," % np.random.randint(2), file=f)
			print("        .INMODEREG(%d)," % np.random.randint(2), file=f)
			print("        .IS_ALUMODE_INVERTED(%d)," % np.random.randint(16), file=f)
			print("        .IS_CARRYIN_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_CLK_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_INMODE_INVERTED(%d)," % np.random.randint(32), file=f)
			print("        .IS_OPMODE_INVERTED(%d)," % np.random.randint(512), file=f)
			print("        .IS_RSTALLCARRYIN_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTALUMODE_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTA_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTB_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTCTRL_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTC_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTD_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTINMODE_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTM_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .IS_RSTP_INVERTED(%d)," % np.random.randint(2), file=f)
			print("        .MASK({24'd%d, 24'd%d})," % (np.random.randint(2**24), np.random.randint(2**24)), file=f)
			print("        .MREG(%d)," % np.random.randint(2), file=f)
			print("        .OPMODEREG(%d)," % np.random.randint(2), file=f)
			print("        .PATTERN({24'd%d, 24'd%d})," % (np.random.randint(2**24), np.random.randint(2**24)), file=f)
			print("        .PREADDINSEL(\"%s\")," % np.random.choice(["A", "B"]), file=f)
			print("        .PREG(%d)," % np.random.randint(2), file=f)
			print("        .RND({24'd%d, 24'd%d})," % (np.random.randint(2**24), np.random.randint(2**24)), file=f)
			print("        .SEL_MASK(\"%s\")," % np.random.choice(["MASK", "C", "ROUNDING_MODE1", "ROUNDING_MODE2"]), file=f)
			print("        .SEL_PATTERN(\"%s\")," % np.random.choice(["PATTERN", "C"]), file=f)
			print("        .USE_PATTERN_DETECT(\"%s\")," % ("PATDET" if use_patdet else "NO_PATDET"), file=f)
			print("        .USE_SIMD(\"%s\")," %  np.random.choice(["ONE48", "TWO24", "FOUR12"]), file=f)
			print("        .USE_WIDEXOR(\"%s\")," %  np.random.choice(["TRUE", "FALSE"]), file=f)
			print("        .XORSIMD(\"%s\")" %  np.random.choice(["XOR12", "XOR24_48_96"]), file=f)
			print("    ) dsp_%d (" % i, file=f)
			print("        .A(%s)," % random_vector(30), file=f)
			print("        .ALUMODE(%s)," % random_vector(4), file=f)
			print("        .B(%s)," % random_vector(18), file=f)
			#print("        .C(%s)," % random_vector(48), file=f)
			print("        .CARRYIN(%s)," % random_vector(1), file=f)
			print("        .CEA1(e[%d])," % np.random.randint(9), file=f)
			print("        .CEA2(e[%d])," % np.random.randint(9), file=f)
			print("        .CEAD(e[%d])," % np.random.randint(9), file=f)
			print("        .CEALUMODE(e[%d])," % np.random.randint(9), file=f)
			print("        .CEC(e[%d])," % np.random.randint(9), file=f)
			print("        .CECARRYIN(e[%d])," % np.random.randint(9), file=f)
			print("        .CECTRL(e[%d])," % np.random.randint(9), file=f)
			print("        .CED(e[%d])," % np.random.randint(9), file=f)
			print("        .CEINMODE(e[%d])," % np.random.randint(9), file=f)
			print("        .CEM(e[%d])," % np.random.randint(9), file=f)
			print("        .CEP(e[%d])," % np.random.randint(9), file=f)
			#print("        .D(%s)," % random_vector(27), file=f)
			print("        .INMODE(%s)," % random_vector(5), file=f)
			print("        .OPMODE(%s)," % random_vector(9), file=f)
			print("        .RSTA(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTALLCARRYIN(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTALUMODE(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTB(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTC(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTCTRL(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTD(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTINMODE(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTM(r[%d])," % np.random.randint(9), file=f)
			print("        .RSTP(r[%d])," % np.random.randint(9), file=f)
			o_bit = np.random.randint(-1, 64)
			if o_bit >= 0 and o_bit < 48:
				print("        .P({int_q[%d][0]%s})," % (i, ", {%d{1'bx}}" % o_bit if o_bit > 0 else ""), file=f)
			if o_bit >= 48 and o_bit < 52:
				print("        .CARRYOUT({int_q[%d][48]%s})," % (i, ", {%d{1'bx}}" % (o_bit-48) if o_bit > 48 else ""), file=f)
			if o_bit >= 52 and o_bit < 60:
				print("        .XOROUT({int_q[%d][52]%s})," % (i, ", {%d{1'bx}}" % (o_bit-52) if o_bit > 52 else ""), file=f)
			if o_bit == 60:
				print("        .PATTERNDETECT(int_q[%d][60])," % i, file=f)
			if o_bit == 61:
				print("        .PATTERNBDETECT(int_q[%d][61])," % i, file=f)
			if o_bit == 62:
				print("        .OVERFLOW(int_q[%d][62])," % i, file=f)
			if o_bit == 63:
				print("        .UNDERFLOW(int_q[%d][63])," % i, file=f)
			print("        .CLK(clk[%d])" % np.random.randint(8), file=f)
			print("    );", file=f)
			print("", file=f)
		print("endmodule", file=f)
	with open(root + "/dsp2/dsp_b%d.tcl" % x, "w") as f:
		print("add_files %s" % (root + ("/dsp2/dsp_b%d.v" % x)), file=f)
		print("synth_design -top top -part xczu7ev-ffvc1156-2-e", file=f)
		print("opt_design", file=f)
		print("place_design", file=f)
		print("route_design", file=f)
		print("set_property SEVERITY {Warning} [get_drc_checks NSTD-1]", file=f)
		print("set_property SEVERITY {Warning} [get_drc_checks UCIO-1]", file=f)
		print("set_property SEVERITY {Warning} [get_drc_checks AVAL-*]", file=f)
		print("set_property SEVERITY {Warning} [get_drc_checks REQP-*]", file=f)
		print("set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design]", file=f)
		print("write_checkpoint -force %s/specimen_bram/dsp_b%d.dcp" % (root, x), file=f)
		print("write_edif -force %s/specimen_bram/dsp_b%d.edf" % (root, x), file=f)
		print("write_bitstream -force %s/specimen_bram/dsp_b%d.bit" % (root, x), file=f)
with open(root + "/dsp2/run.sh", "w") as f:
	print("#/usr/bin/env bash", file=f)
	#print("set -ex", file=f)
	for x in range(X):
		print("vivado -mode batch -nolog -nojournal -source dsp_b%d.tcl" % x, file=f)
		print("if [ $? -eq 0 ]; then", file=f)
		print("    ../../ultra/tools/dump_bitstream %s/specimen_bram/dsp_b%d.bit %s/frames.txt > %s/specimen_bram/dsp_b%d.dump" % (root, x, root, root, x), file=f)
		print("    python3 ../../ultra/tools/bits_to_tiles.py %s/tile.json %s/specimen_bram/dsp_b%d.dump > %s/specimen_bram/dsp_b%d.tbits" % (root, root, x, root, x), file=f)
		print("else", file=f)
		print("   rm %s/specimen_bram/dsp_b%d.dump" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp_b%d.tbits" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp_b%d.dcp" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp_b%d.bit" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp_b%d.features" % (root, x), file=f)
		print("fi", file=f)