# 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 = 120

root = sys.argv[2]

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

for x in range(X):


	with open(root + "/dsp1/dsp%d.v" % x, "w") as f:
		print("module top(input [7:0] clk, cen, rst, input [39: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("    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("        .CLK(clk[%d])," % np.random.randint(8), 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)
			print("        .P(int_q[%d][47:0])," % i, file=f)
			print("        .CARRYOUT(int_q[%d][51:48])," % i, file=f)
			print("        .XOROUT(int_q[%d][59:52])," % i, file=f)
			print("        .PATTERNDETECT(int_q[%d][60])," % i, file=f)
			print("        .PATTERNBDETECT(int_q[%d][61])," % i, file=f)
			print("        .OVERFLOW(int_q[%d][62])," % i, file=f)
			print("        .UNDERFLOW(int_q[%d][63])" % i, file=f)
			print("    );", file=f)
			print("", file=f)
		print("endmodule", file=f)
	with open(root + "/dsp1/dsp%d.tcl" % x, "w") as f:
		print("add_files %s" % (root + ("/dsp1/dsp%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%d.dcp" % (root, x), file=f)
		print("write_edif -force %s/specimen_bram/dsp%d.edf" % (root, x), file=f)
		print("write_bitstream -force %s/specimen_bram/dsp%d.bit" % (root, x), file=f)
with open(root + "/dsp1/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%d.tcl" % x, file=f)
		print("if [ $? -eq 0 ]; then", file=f)
		print("    ../../ultra/tools/dump_bitstream %s/specimen_bram/dsp%d.bit %s/frames.txt > %s/specimen_bram/dsp%d.dump" % (root, x, root, root, x), file=f)
		print("    python3 ../../ultra/tools/bits_to_tiles.py %s/tile.json %s/specimen_bram/dsp%d.dump > %s/specimen_bram/dsp%d.tbits" % (root, root, x, root, x), file=f)
		print("else", file=f)
		print("   rm %s/specimen_bram/dsp%d.dump" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp%d.tbits" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp%d.dcp" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp%d.bit" % (root, x), file=f)
		print("   rm %s/specimen_bram/dsp%d.features" % (root, x), file=f)
		print("fi", file=f)