import ta_utils

from org.dmad.ta import DigitalSignal
from org.dmad.ta import DigitalBus
from org.dmad.ta import DigitalClock

out_file = ta_utils.setOutputFileName("test_vectors.v")
td = taApp.getTimingDiagram()
ts = td.getTimeScale()
ts_text = ta_utils.getTimeScaleText(ts)
 
signals = td.getSignalList()
for sig in signals:
    i = 0
    tp = 0
    out_file.write("\tinitial begin\n");

    for edge in sig.getEdgeList():
        tc = edge.getPt2Min()
        line = "#%s" % (ta_utils.round3Places((tc - tp) / ts))
        if isinstance(sig, DigitalSignal) or isinstance(sig, DigitalClock):
            if edge.getNextState() == "H":
                line = "%s %s <= 1'b1;"  % (line, sig.getName());
            else:
                line = "%s %s <= 1'b0;"  % (line, sig.getName());

        elif isinstance(sig, DigitalBus):
            state_format = {
                "Hex":  "'h",
                "Bin":  "'b"
            }
            sStart = state_format[sig.getStateFormat()]
            line = " %s %s <= %s%s%s;" % \
                (line, sig.getName(), sig.getNumBits(), sStart, edge.getNextState())
        tp = tc
                    
        if ( i == len(sig.getEdgeList())-1):
            out_file.write("\t\t%s\n\tend\n\n" % (line))
        else:
            out_file.write("\t\t%s\n" % (line))

        i += 1
out_file.close()
