示例#1
0
 def run(self, clks):
     """
     Run a test bench simulation.
     """
     myhdlvpi = os.path.join(config.verilogdir, 'myhdl.vpi')
     command = "vvp -m {myhdlvpi} {executable}".format(myhdlvpi=myhdlvpi, executable=self.executable)
     cosimdict = dict([(sn, getattr(self, sn)) for sn in self.signal_names])
     dut = Cosimulation(command, **cosimdict)
     drivers = [df() for df in self.drivers]
     sim = Simulation(dut, *drivers)
     sim.run(2*clks)
     dut.__del__()
     del dut
示例#2
0
 def run(self, clks):
     """
     Run a test bench simulation.
     """
     myhdlvpi = os.path.join(config.verilogdir, 'myhdl.vpi')
     command = "vvp -m {myhdlvpi} {executable}".format(
         myhdlvpi=myhdlvpi, executable=self.executable)
     cosimdict = dict([(sn, getattr(self, sn)) for sn in self.signal_names])
     dut = Cosimulation(command, **cosimdict)
     drivers = [df() for df in self.drivers]
     sim = Simulation(dut, *drivers)
     sim.run(2 * clks)
     dut.__del__()
     del dut
示例#3
0
def NeuronBlock(ports, params):
    os.system(
        cmd %
        (params.leak_width, params.weight_width, params.threshold_width,
         params.potential_width, params.num_weights, params.num_reset_modes))
    return Cosimulation("vvp -m ../iverilog/myhdl.vpi NeuronBlock.o",
                        **ports._asdict())
示例#4
0
def bin2gray(B, G):
    width = len(B)
    os.system(cmd % width)
    # return Cosimulation("C:/iverilog/bin/vvp.exe -M -m myhdl bin2gray.o", B=B, G=G)
    # print(os.path)
    # os.system("vvp -M ./ -m myhdl bin2gray") C:/Users/sanmu/PycharmProjects/TestMyHDL
    return Cosimulation("vvp -m .\myhdl64.vpi bin2gray.o", B=B, G=G)
示例#5
0
 def _cosim(self):
     self._prepare_cosim()
     cmd = self.__sim.get_run_cmd(self.__wrapper, lib=self.__worklib)
     cosim_kwargs = {k: v[0] for k, v in self.__port.items()}
     logging.debug('[%s] Cosim kwargs: %s', self, cosim_kwargs)
     cosim = Cosimulation(cmd, **cosim_kwargs)
     return cosim
示例#6
0
def ForwardEastWest(ports, params):
    os.system(cmd %
              (params.packet_width, params.dx_msb, params.dx_lsb,
               params.dy_msb, params.dy_lsb, params.buffer_depth, params.east))

    return Cosimulation("vvp -m ../iverilog/myhdl.vpi ./ForwardEastWest.o",
                        **ports._asdict())
def bin2gray(B, G, width):
    os.system('vlog -quiet +define+width=%s ../../test/verilog/bin2gray.v' %
              (width))
    os.system(
        'vlog -quiet +define+width=%s ../../test/verilog/dut_bin2gray.v' %
        (width))

    return Cosimulation(cmd, B=B, G=G)
示例#8
0
def bin2grayCoSim(B, G, DATA = 8):
    bin2gray_inst = bin2gray(B, G, DATA = DATA)
    name='bin2gray_' + str(DATA)
    bin2gray_inst.convert(hdl='Verilog', header=hdlcfg.header, name=name)
    os.system("iverilog -o bin2gray.o " + \
              "{0}.v ".format(name) + \
              "{0}.v ".format('tb_' + name))
    return Cosimulation("vvp -m myhdl bin2gray.o", B=B, G=G)
def v_im(clock, pc, dout, infile):
    cmd = 'iverilog -o %s %s %s -Din_file=%s' % (
        IM_cosim_o, IM_cosim_v, IM_v, "../samples/Index_Memory_256.hex")
    os.system(cmd)
    return Cosimulation("vvp -m %s %s" % (myhdl_vpi, IM_cosim_o),
                        clock=clock,
                        addr=pc,
                        Instr=dout)
示例#10
0
文件: fir.py 项目: xinfushe/fpgacloud
def fir(clk, resetn, enable, inP, outP, out_enable):
    os.system(cmd)
    return Cosimulation("vvp -m ./myhdl fir.o -fst",
                        clk=clk,
                        resetn=resetn,
                        enable=enable,
                        inP=inP,
                        outP=outP,
                        out_enable=out_enable)
示例#11
0
def v_dm(clock, MR, MW, Addr, WD, RD):
    cmd = 'iverilog -o %s %s %s' % (DM_cosim_o, DM_cosim_v, DM_v)
    os.system(cmd)
    return Cosimulation("vvp -m %s %s" % (myhdl_vpi, DM_cosim_o),
                        Clk=clock,
                        MR=MR,
                        MW=MW,
                        Addr=Addr,
                        WD=WD,
                        RD=RD)
示例#12
0
文件: buffer.py 项目: UA-RCL/RANC
def buffer(clk, rst, din, din_valid, read_en, dout, empty, full, depth=4):
    os.system(cmd % (len(din), depth))
    return Cosimulation('vvp -m ../iverilog/myhdl.vpi buffer.o',
                        clk=clk,
                        rst=rst,
                        din=din,
                        din_valid=din_valid,
                        read_en=read_en,
                        dout=dout,
                        empty=empty,
                        full=full)
示例#13
0
def v_alu(clock, reset, ALUcontrol, A, B, R, zero):
    cmd = "iverilog -o %s %s %s" % (ALU_cosim_o, ALU_cosim_v, ALU_v)
    os.system(cmd)
    return Cosimulation("vvp -m %s %s" % (myhdl_vpi, ALU_cosim_o),
                        clock=clock,
                        reset=reset,
                        ALUcontrol=ALUcontrol,
                        A=A,
                        B=B,
                        R=R,
                        zero=zero)
示例#14
0
def bin2grayCoSim(B, G, DATA=8):
    functionStat(inspect.currentframe().f_code.co_name, __name__)
    bin2gray_inst = bin2gray(B, G, DATA=DATA)
    name = 'bin2gray_' + str(DATA)
    bin2gray_inst.convert(hdl='Verilog',
                          header=hdlcfg.header,
                          directory=hdlcfg.hdl_path,
                          name=name)
    os.system("iverilog -o bin2gray.o " + \
              hdlcfg.hdl_path+"/{0}.v ".format(name) + \
              hdlcfg.hdl_path+"/{0}.v ".format('tb_' + name))
    return Cosimulation("vvp -m myhdl bin2gray.o -vcd test.vcd", B=B, G=G)
示例#15
0
def setupCosimulationIcarus(options, parameters, kwargs, \
	srcprefix = "", tbprefix = None):
	try:
		libfiles = options['libfiles']
	except KeyError:
		libfiles = ""

	if not tbprefix:
		tbprefix = srcprefix

	name = options['name']
	if 'tbname' in options:
		tbname = options['tbname']
	else:
		tbname = name

	objfile = "%s.o" % name
	if os.path.exists(objfile):
	    os.remove(objfile)

	analyze_cmd = ['iverilog' ]
	analyze_cmd += ['-s', "tb_" + tbname]
	analyze_cmd += ['-D', "mixed_hdl"]

	src = srcprefix + '%s.v' % name
	tbsrc = tbprefix + 'tb_%s.v' % tbname
	
	for p in parameters.keys():
		analyze_cmd += [ '-P', 'tb_%s.%s=%s' % (tbname, p, parameters[p]) ]

	analyze_cmd += ['-o', objfile, src, tbsrc]
	analyze_cmd += libfiles
	print(analyze_cmd)
	subprocess.call(analyze_cmd)
	simulate_cmd = ['vvp', '-m', MYHDL_COSIMULATION + '/myhdl.vpi']
	simulate_cmd += IVL_MODULE_PATH_ARGS
	simulate_cmd += [objfile]
	c = Cosimulation(simulate_cmd, **kwargs)
	c.name = name
	return c
示例#16
0
def setupCosimulationIcarus(**kwargs):
    name = kwargs['name']
    objfile = "%s.o" % name
    if path.exists(objfile):
        os.remove(objfile)
    analyze_cmd = ['iverilog', '-o', objfile, '%s.v' % name, 'tb_%s.v' % name]
    subprocess.call(analyze_cmd)
    if sys.platform != "win32":
        simulate_cmd = [
            'vvp', '-m', '../../../../cosimulation/icarus/myhdl.vpi', objfile
        ]
    else:
        # assume that myhdl.vpi has been copied to the iverilog\lib\ivl
        simulate_cmd = ['vvp', '-m', 'myhdl', objfile]
    return Cosimulation(simulate_cmd, **kwargs)
示例#17
0
def RANCNetwork(input_ports, output_ports, params):
    os.system(
        cmd %
        (params.grid_dimension_x, params.grid_dimension_y,
         params.output_core_x_coordinate, params.output_core_y_coordinate,
         params.num_outputs, params.num_neurons, params.num_axons,
         params.num_ticks, params.num_weights, params.num_reset_modes,
         params.potential_width, params.weight_width, params.leak_width,
         params.threshold_width, params.dx_msb, params.dx_lsb, params.dy_msb,
         params.dy_lsb, params.input_buffer_depth, params.router_buffer_depth,
         params.memory_filepath, params.maximum_number_of_packets,
         params.c_s00_axis_tdata_width))

    return Cosimulation("vvp -m ../iverilog/myhdl.vpi RANCNetwork.o",
                        **input_ports._asdict(), **output_ports._asdict())
示例#18
0
def v_rf(readA, readB, write, rAddrA, rAddrB, wAddr, writeSignal, clock, reset,
         registers):
    cmd = 'iverilog -o %s %s %s' % (RF_cosim_o, RF_cosim_v, RF_v)
    os.system(cmd)
    return Cosimulation('vvp -m %s %s' % (myhdl_vpi, RF_cosim_o),
                        readA=readA,
                        readB=readB,
                        write=write,
                        rAddrA=rAddrA,
                        rAddrB=rAddrB,
                        wAddr=wAddr,
                        writeSignal=writeSignal,
                        clock=clock,
                        reset=reset,
                        regOut0=registers[0],
                        regOut1=registers[1],
                        regOut2=registers[2],
                        regOut3=registers[3],
                        regOut4=registers[4],
                        regOut5=registers[5],
                        regOut6=registers[6],
                        regOut7=registers[7],
                        regOut8=registers[8],
                        regOut9=registers[9],
                        regOut10=registers[10],
                        regOut11=registers[11],
                        regOut12=registers[12],
                        regOut13=registers[13],
                        regOut14=registers[14],
                        regOut15=registers[15],
                        regOut16=registers[16],
                        regOut17=registers[17],
                        regOut18=registers[18],
                        regOut19=registers[19],
                        regOut20=registers[20],
                        regOut21=registers[21],
                        regOut22=registers[22],
                        regOut23=registers[23],
                        regOut24=registers[24],
                        regOut25=registers[25],
                        regOut26=registers[26],
                        regOut27=registers[27],
                        regOut28=registers[28],
                        regOut29=registers[29],
                        regOut30=registers[30],
                        regOut31=registers[31])
示例#19
0
 def simulate(self, clks=None):
     """
     Run a test bench simulation.
     """
     if clks is None:
         clks = 200
     self.dut = Cosimulation(
         "vvp -m ./myhdl.vpi fftexec",
         clk=self.clk,
         rst_n=self.rst_n,
         din=self.in_data,
         din_nd=self.in_nd,
         dout=self.out_data,
         dout_nd=self.out_nd,
         overflow=self.overflow,
     )
     sim = Simulation(self.dut, self.clk_driver(), self.control())
     sim.run(self.half_period * 2 * clks)
示例#20
0
 def deflate(i_mode, o_done, i_data, o_iprogress, o_oprogress, o_byte,
             i_waddr, i_raddr, clk, reset):
     print("Cosimulation")
     cmd = "iverilog -o deflate " + \
           "deflate.v " + \
           "tb_deflate.v "  # "dump.v "
     os.system(cmd)
     return Cosimulation("vvp -m ./myhdl deflate",
                         i_mode=i_mode,
                         o_done=o_done,
                         i_data=i_data,
                         o_iprogress=o_iprogress,
                         o_oprogress=o_oprogress,
                         o_byte=o_byte,
                         i_waddr=i_waddr,
                         i_raddr=i_raddr,
                         clk=clk,
                         reset=reset)
示例#21
0
def bin2gray(B, G, width):
    return Cosimulation(cmd % width, B=B, G=G)
示例#22
0
def inc(count, enable, clock, reset, n):
    os.system('vlog -quiet +define+n=%s ../../test/verilog/inc.v' % (n))
    os.system('vlog -quiet +define+n=%s ../../test/verilog/dut_inc.v' % (n))

    return Cosimulation(cmd, **locals())
示例#23
0
def dff_clkout(clkout, q, d, clk, reset):
    os.system(cmd % vhdl_srcroute)
    return Cosimulation("%s/dut_dff_clkout"  % vhdl_srcroute, **locals())
示例#24
0
def setupCosimulationCver(**kwargs):
    name = kwargs['name']
    cmd = "cver -q +loadvpi=../../../../cosimulation/cver/myhdl_vpi:vpi_compat_bootstrap " + \
          "%s.v tb_%s.v " % (name, name)
    return Cosimulation(cmd, **kwargs)
示例#25
0
def dff(q, d, clk, reset):
    os.system(cmd)
    return Cosimulation("vvp -m ../myhdl.vpi dff.o", **locals())
示例#26
0
def dff(q, d, clk, reset):
    return Cosimulation(cmd, **locals())
from __future__ import generators
from __future__ import print_function

from myhdl import Signal, Simulation, Cosimulation
from myhdl import delay, intbv, now

import os
cmd = "iverilog -o tb_test.o ./tb_test.v "
os.system(cmd)

a = Signal(intbv(1))
b = Signal(intbv(2))
c = Signal(intbv(3))

cosim = Cosimulation("vvp -v -m ../myhdl.vpi tb_test.o", a=a, b=b, c=c)


def stimulus(a, b):
    for i in range(10):
        yield delay(10)
        # print "Python a=%s b=%s" % (a, b)
        a.next = a + 1
        b.next = b + 2


def response(c):
    while 1:
        yield c
        print("Python: %s %s %s %s" % (now(), c, a, b))

示例#28
0
def bin2gray(B, G, width):
    os.system(cmd % width)
    return Cosimulation("vvp -m ../myhdl.vpi bin2gray.o", B=B, G=G)
示例#29
0
def speechfifo(i_clk, o_uart_tx):
    ''' A Cosimulation object, used to simulate Verilog modules '''
    os.system('iverilog -o speechfifo.vvp speechfifo.v speechfifo_tb.v')
    return Cosimulation('vvp -m ./myhdl.vpi speechfifo.vvp', i_clk=i_clk, o_uart_tx=o_uart_tx)
示例#30
0
def dff_clkout(clkout, q, d, clk, reset):
    os.system('vlog -quiet ../../test/verilog/dff_clkout.v')
    os.system('vlog -quiet ../../test/verilog/dut_dff_clkout.v')

    return Cosimulation(cmd, **locals())
示例#31
0
    def cosim_dut(self, cosim_name, fifo_args, whitebox_args):
        """Get the ``Cosimulation`` object.

        :param cosim_name: The name of the cosimulation.
        :param fifo_args: A dictionary of args to pass to the FIFOs.
        :param whitebox_args: A dictionary of args to pass to the Whitebox Peripheral.
        :returns: A `myhdl.Cosimulation` object.
        """
        bus_pclk = self.bus.pclk
        bus_paddr = self.bus.paddr
        bus_psel = self.bus.psel
        bus_penable = self.bus.penable
        bus_pwrite = self.bus.pwrite
        bus_pwdata = self.bus.pwdata
        bus_pslverr = self.bus.pslverr
        bus_pready = self.bus.pready
        bus_prdata = self.bus.prdata

        clearn = ResetSignal(0, 0, async=True)

        fifo_depth = fifo_args['depth']

        tx_fifo_re = Signal(bool(False))
        tx_fifo_rclk = self.dac_clock
        tx_fifo_rdata = Signal(intbv(0)[32:])
        tx_fifo_we = Signal(bool(False))
        tx_fifo_wclk = self.bus.pclk
        tx_fifo_wdata = Signal(intbv(0)[32:])
        tx_fifo_full = Signal(bool(False))
        tx_fifo_afull = Signal(bool(False))
        tx_fifo_empty = Signal(bool(True))
        tx_fifo_aempty = Signal(bool(True))
        tx_fifo_afval = Signal(intbv(fifo_depth - 1)[10:])
        tx_fifo_aeval = Signal(intbv(0)[10:])
        tx_fifo_wack = Signal(bool(False))
        tx_fifo_dvld = Signal(bool(False))
        tx_fifo_overflow = Signal(bool(False))
        tx_fifo_underflow = Signal(bool(False))
        tx_fifo_rdcnt = Signal(intbv(0, min=0, max=fifo_depth + 1))
        tx_fifo_wrcnt = Signal(intbv(fifo_depth, min=0, max=fifo_depth + 1))

        tx_fifo_signals = (clearn, tx_fifo_re, tx_fifo_rclk, tx_fifo_rdata,
                           tx_fifo_we, tx_fifo_wclk, tx_fifo_wdata,
                           tx_fifo_full, tx_fifo_afull, tx_fifo_empty,
                           tx_fifo_aempty, tx_fifo_afval, tx_fifo_aeval,
                           tx_fifo_wack, tx_fifo_dvld, tx_fifo_overflow,
                           tx_fifo_underflow, tx_fifo_rdcnt, tx_fifo_wrcnt)
        tx_fifo = fifo(*tx_fifo_signals, **fifo_args)

        rx_fifo_depth = fifo_args['depth']
        rx_fifo_re = Signal(bool(False))
        rx_fifo_rclk = self.bus.pclk
        rx_fifo_rdata = Signal(intbv(0)[32:])
        rx_fifo_we = Signal(bool(False))
        rx_fifo_wclk = self.dac_clock
        rx_fifo_wdata = Signal(intbv(0)[32:])
        rx_fifo_full = Signal(bool(False))
        rx_fifo_afull = Signal(bool(False))
        rx_fifo_empty = Signal(bool(True))
        rx_fifo_aempty = Signal(bool(True))
        rx_fifo_afval = Signal(intbv(fifo_depth - 1)[10:])
        rx_fifo_aeval = Signal(intbv(0)[10:])
        rx_fifo_wack = Signal(bool(False))
        rx_fifo_dvld = Signal(bool(False))
        rx_fifo_overflow = Signal(bool(False))
        rx_fifo_underflow = Signal(bool(False))
        rx_fifo_rdcnt = Signal(intbv(0, min=0, max=fifo_depth + 1))
        rx_fifo_wrcnt = Signal(intbv(fifo_depth, min=0, max=fifo_depth + 1))
        rx_fifo_signals = (clearn, rx_fifo_re, rx_fifo_rclk, rx_fifo_rdata,
                           rx_fifo_we, rx_fifo_wclk, rx_fifo_wdata,
                           rx_fifo_full, rx_fifo_afull, rx_fifo_empty,
                           rx_fifo_aempty, rx_fifo_afval, rx_fifo_aeval,
                           rx_fifo_wack, rx_fifo_dvld, rx_fifo_overflow,
                           rx_fifo_underflow, rx_fifo_rdcnt, rx_fifo_wrcnt)
        rx_fifo = fifo(*rx_fifo_signals, **fifo_args)

        config_file = tempfile.NamedTemporaryFile(delete=False)
        config_file.write('+define+COSIM_NAME="%s"' % (cosim_name, ))
        config_file.close()

        cmd = 'iverilog -o %s.v -c %s whitebox.v whitebox_reset.v /home/testa/whitebox/hdl/cosim_whitebox.v' % (
            cosim_name, config_file.name)
        os.system(cmd)

        fir_coeff_ram_addr = self.fir_coeff_ram.port['a'].addr
        fir_coeff_ram_din0 = self.fir_coeff_ram.port['a'].din[0]
        fir_coeff_ram_din1 = self.fir_coeff_ram.port['a'].din[1]
        fir_coeff_ram_width0 = self.fir_coeff_ram.port['a'].width0
        fir_coeff_ram_width1 = self.fir_coeff_ram.port['a'].width1
        fir_coeff_ram_pipe = self.fir_coeff_ram.port['a'].pipe
        fir_coeff_ram_wmode = self.fir_coeff_ram.port['a'].wmode
        fir_coeff_ram_blk = self.fir_coeff_ram.port['a'].blk
        fir_coeff_ram_wen = self.fir_coeff_ram.port['a'].wen
        fir_coeff_ram_clk = self.fir_coeff_ram.port['a'].clk
        fir_coeff_ram_dout0 = self.fir_coeff_ram.port['a'].dout[0]
        fir_coeff_ram_dout1 = self.fir_coeff_ram.port['a'].dout[1]
        fir_load_coeff_ram_addr = self.fir_coeff_ram.port['b'].addr
        fir_load_coeff_ram_din0 = self.fir_coeff_ram.port['b'].din[0]
        fir_load_coeff_ram_din1 = self.fir_coeff_ram.port['b'].din[1]
        fir_load_coeff_ram_width0 = self.fir_coeff_ram.port['b'].width0
        fir_load_coeff_ram_width1 = self.fir_coeff_ram.port['b'].width1
        fir_load_coeff_ram_pipe = self.fir_coeff_ram.port['b'].pipe
        fir_load_coeff_ram_wmode = self.fir_coeff_ram.port['b'].wmode
        fir_load_coeff_ram_blk = self.fir_coeff_ram.port['b'].blk
        fir_load_coeff_ram_wen = self.fir_coeff_ram.port['b'].wen
        fir_load_coeff_ram_clk = self.fir_coeff_ram.port['b'].clk
        fir_load_coeff_ram_dout0 = self.fir_coeff_ram.port['b'].dout[0]
        fir_load_coeff_ram_dout1 = self.fir_coeff_ram.port['b'].dout[1]
        fir_delay_line_i_ram_addr = self.fir_delay_line_i_ram.port['a'].addr
        fir_delay_line_i_ram_din = self.fir_delay_line_i_ram.port['a'].din
        fir_delay_line_i_ram_width0 = self.fir_delay_line_i_ram.port[
            'a'].width0
        fir_delay_line_i_ram_width1 = self.fir_delay_line_i_ram.port[
            'a'].width1
        fir_delay_line_i_ram_pipe = self.fir_delay_line_i_ram.port['a'].pipe
        fir_delay_line_i_ram_wmode = self.fir_delay_line_i_ram.port['a'].wmode
        fir_delay_line_i_ram_blk = self.fir_delay_line_i_ram.port['a'].blk
        fir_delay_line_i_ram_wen = self.fir_delay_line_i_ram.port['a'].wen
        fir_delay_line_i_ram_clk = self.fir_delay_line_i_ram.port['a'].clk
        fir_delay_line_i_ram_dout = self.fir_delay_line_i_ram.port['a'].dout
        fir_delay_line_q_ram_addr = self.fir_delay_line_q_ram.port['a'].addr
        fir_delay_line_q_ram_din = self.fir_delay_line_q_ram.port['a'].din
        fir_delay_line_q_ram_width0 = self.fir_delay_line_q_ram.port[
            'a'].width0
        fir_delay_line_q_ram_width1 = self.fir_delay_line_q_ram.port[
            'a'].width1
        fir_delay_line_q_ram_pipe = self.fir_delay_line_q_ram.port['a'].pipe
        fir_delay_line_q_ram_wmode = self.fir_delay_line_q_ram.port['a'].wmode
        fir_delay_line_q_ram_blk = self.fir_delay_line_q_ram.port['a'].blk
        fir_delay_line_q_ram_wen = self.fir_delay_line_q_ram.port['a'].wen
        fir_delay_line_q_ram_clk = self.fir_delay_line_q_ram.port['a'].clk
        fir_delay_line_q_ram_dout = self.fir_delay_line_q_ram.port['a'].dout

        whitebox_test = Cosimulation(
            'vvp -m ./myhdl.vpi %s.v' % (cosim_name, ),
            resetn=self.bus.presetn,
            pclk=self.bus.pclk,
            paddr=self.bus.paddr,
            psel=self.bus.psel,
            penable=self.bus.penable,
            pwrite=self.bus.pwrite,
            pwdata=self.bus.pwdata,
            pready=self.bus.pready,
            prdata=self.bus.prdata,
            #pslverr=self.bus.pslverr,
            clearn=clearn,
            clear_enable=self.clear_enable,
            dac_clock=self.dac_clock,
            dac2x_clock=self.dac2x_clock,
            dac_en=self.dac_en,
            dac_data=self.dac_data,
            adc_idata=self.adc_idata,
            adc_qdata=self.adc_qdata,
            tx_status_led=self.tx_status_led,
            tx_dmaready=self.tx_dmaready,
            rx_status_led=self.rx_status_led,
            rx_dmaready=self.rx_dmaready,
            tx_fifo_re=tx_fifo_re,
            tx_fifo_rclk=tx_fifo_rclk,
            tx_fifo_rdata=tx_fifo_rdata,
            tx_fifo_we=tx_fifo_we,
            tx_fifo_wclk=tx_fifo_wclk,
            tx_fifo_wdata=tx_fifo_wdata,
            tx_fifo_full=tx_fifo_full,
            tx_fifo_afull=tx_fifo_afull,
            tx_fifo_empty=tx_fifo_empty,
            tx_fifo_aempty=tx_fifo_aempty,
            tx_fifo_afval=tx_fifo_afval,
            tx_fifo_aeval=tx_fifo_aeval,
            tx_fifo_wack=tx_fifo_wack,
            tx_fifo_dvld=tx_fifo_dvld,
            tx_fifo_overflow=tx_fifo_overflow,
            tx_fifo_underflow=tx_fifo_underflow,
            tx_fifo_rdcnt=tx_fifo_rdcnt,
            tx_fifo_wrcnt=tx_fifo_wrcnt,
            rx_fifo_re=rx_fifo_re,
            rx_fifo_rclk=rx_fifo_rclk,
            rx_fifo_rdata=rx_fifo_rdata,
            rx_fifo_we=rx_fifo_we,
            rx_fifo_wclk=rx_fifo_wclk,
            rx_fifo_wdata=rx_fifo_wdata,
            rx_fifo_full=rx_fifo_full,
            rx_fifo_afull=rx_fifo_afull,
            rx_fifo_empty=rx_fifo_empty,
            rx_fifo_aempty=rx_fifo_aempty,
            rx_fifo_afval=rx_fifo_afval,
            rx_fifo_aeval=rx_fifo_aeval,
            rx_fifo_wack=rx_fifo_wack,
            rx_fifo_dvld=rx_fifo_dvld,
            rx_fifo_overflow=rx_fifo_overflow,
            rx_fifo_underflow=rx_fifo_underflow,
            rx_fifo_rdcnt=rx_fifo_rdcnt,
            rx_fifo_wrcnt=rx_fifo_wrcnt,
            fir_coeff_ram_addr=fir_coeff_ram_addr,
            fir_coeff_ram_din0=fir_coeff_ram_din0,
            fir_coeff_ram_din1=fir_coeff_ram_din1,
            fir_coeff_ram_width0=fir_coeff_ram_width0,
            fir_coeff_ram_width1=fir_coeff_ram_width1,
            fir_coeff_ram_pipe=fir_coeff_ram_pipe,
            fir_coeff_ram_wmode=fir_coeff_ram_wmode,
            fir_coeff_ram_blk=fir_coeff_ram_blk,
            fir_coeff_ram_wen=fir_coeff_ram_wen,
            fir_coeff_ram_clk=fir_coeff_ram_clk,
            fir_coeff_ram_dout0=fir_coeff_ram_dout0,
            fir_coeff_ram_dout1=fir_coeff_ram_dout1,
            fir_load_coeff_ram_addr=fir_load_coeff_ram_addr,
            fir_load_coeff_ram_din0=fir_load_coeff_ram_din0,
            fir_load_coeff_ram_din1=fir_load_coeff_ram_din1,
            fir_load_coeff_ram_width0=fir_load_coeff_ram_width0,
            fir_load_coeff_ram_width1=fir_load_coeff_ram_width1,
            fir_load_coeff_ram_pipe=fir_load_coeff_ram_pipe,
            fir_load_coeff_ram_wmode=fir_load_coeff_ram_wmode,
            fir_load_coeff_ram_blk=fir_load_coeff_ram_blk,
            fir_load_coeff_ram_wen=fir_load_coeff_ram_wen,
            fir_load_coeff_ram_clk=fir_load_coeff_ram_clk,
            fir_load_coeff_ram_dout0=fir_load_coeff_ram_dout0,
            fir_load_coeff_ram_dout1=fir_load_coeff_ram_dout1,
            fir_delay_line_i_ram_addr=fir_delay_line_i_ram_addr,
            fir_delay_line_i_ram_din=fir_delay_line_i_ram_din,
            fir_delay_line_i_ram_width0=fir_delay_line_i_ram_width0,
            fir_delay_line_i_ram_width1=fir_delay_line_i_ram_width1,
            fir_delay_line_i_ram_pipe=fir_delay_line_i_ram_pipe,
            fir_delay_line_i_ram_wmode=fir_delay_line_i_ram_wmode,
            fir_delay_line_i_ram_blk=fir_delay_line_i_ram_blk,
            fir_delay_line_i_ram_wen=fir_delay_line_i_ram_wen,
            fir_delay_line_i_ram_clk=fir_delay_line_i_ram_clk,
            fir_delay_line_i_ram_dout=fir_delay_line_i_ram_dout,
            fir_delay_line_q_ram_addr=fir_delay_line_q_ram_addr,
            fir_delay_line_q_ram_din=fir_delay_line_q_ram_din,
            fir_delay_line_q_ram_width0=fir_delay_line_q_ram_width0,
            fir_delay_line_q_ram_width1=fir_delay_line_q_ram_width1,
            fir_delay_line_q_ram_pipe=fir_delay_line_q_ram_pipe,
            fir_delay_line_q_ram_wmode=fir_delay_line_q_ram_wmode,
            fir_delay_line_q_ram_blk=fir_delay_line_q_ram_blk,
            fir_delay_line_q_ram_wen=fir_delay_line_q_ram_wen,
            fir_delay_line_q_ram_clk=fir_delay_line_q_ram_clk,
            fir_delay_line_q_ram_dout=fir_delay_line_q_ram_dout,
        )
        return tx_fifo, rx_fifo, self.fir_coeff_ram.rama, self.fir_coeff_ram.ramb, self.fir_delay_line_i_ram.ram, self.fir_delay_line_q_ram.ram, whitebox_test