# 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)
