Ejemplo n.º 1
0
    def func_sub(in_a, in_b, c_in):
        if in_a < in_b:
            a = util.qt_numbers_bit(32) - in_a
            b = util.qt_numbers_bit(32) - in_b

            c_out = 1

            output = ((a - b) ^ util.qt_numbers_bit(32)) + 1 - c_in
        else:
            output = (in_a - in_b)
            c_out = 0

        return output, c_out
Ejemplo n.º 2
0
    def func_nand(in_a, in_b):
        maior = in_a if in_a > in_b else in_b

        if maior == 0:
            maior = 1

        return (in_a & in_b) ^ util.qt_numbers_bit(maior.bit_length())
Ejemplo n.º 3
0
    def sub(in_a, in_b, c_in):
        maior = in_a if in_a > in_b else in_b
        bits_a = in_a.bit_length()

        if maior == 0:
            maior = 1
        if in_a == 0:
            bits_a = 1

        max_bits = util.qt_numbers_bit(maior.bit_length())

        p = in_a ^ in_b
        g = Inv.inverter(in_a ^ in_b, max_bits)

        output = p ^ c_in
        c_out = (c_in & g) | (in_b & Inv.inverter(in_a, util.qt_numbers_bit(bits_a)))

        return output, c_out
Ejemplo n.º 4
0
# -*- coding: utf-8 -*-

import os
import pathlib

from utils import constants, modules, util

pathlib.Path(constants.TV_PATH).mkdir(parents=True, exist_ok=True)
pathlib.Path(constants.TB_PATH).mkdir(parents=True, exist_ok=True)
FILENAME = os.path.splitext(os.path.basename(os.path.realpath(__file__)))[0].split('_')[0]

MAX_BIT_VALUE = util.qt_numbers_bit(constants.N_BITS_INPUT.get(FILENAME))
SEL_RANGE = constants.RANGES.get(FILENAME)
formatter = '0' + str(MAX_BIT_VALUE.bit_length()) + 'b'

with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f:
    for a in range(0, MAX_BIT_VALUE + 1):
        for b in range(0, MAX_BIT_VALUE + 1):
            for c in range(0, MAX_BIT_VALUE + 1):
                for d in range(0, MAX_BIT_VALUE + 1):
                    for s in range(0, SEL_RANGE):
                        selection = str(format(s, '02b'))
                        s1 = int(selection[0:1])
                        s2 = int(selection[1:2])

                        f.write(str(s1) + str(s2) + constants.DELIMITER + format(a, formatter) + constants.DELIMITER
                                + format(b, formatter) + constants.DELIMITER + format(c, formatter)
                                + constants.DELIMITER + format(d, formatter) + constants.DELIMITER
                                + format(modules.Mux.mux4_v2(a, b, c, d, s), formatter) + '\n')
Ejemplo n.º 5
0
# -*- coding: utf-8 -*-

import os
import pathlib

from utils import constants, modules, util

pathlib.Path(constants.TV_PATH).mkdir(parents=True, exist_ok=True)
pathlib.Path(constants.TB_PATH).mkdir(parents=True, exist_ok=True)
FILENAME = os.path.splitext(os.path.basename(
    os.path.realpath(__file__)))[0].split('_')[0]

MAX_BIT_VALUE_INPUT_ADDR = util.qt_numbers_bit(
    constants.N_BITS_INPUT.get(FILENAME))
MAX_BIT_VALUE_INPUT_REG = util.qt_numbers_bit(
    constants.N_BITS_INPUT.get(FILENAME + '_reg'))

formatter_addr = '0' + str(MAX_BIT_VALUE_INPUT_ADDR.bit_length()) + 'b'
formatter_reg = '0' + str(MAX_BIT_VALUE_INPUT_REG.bit_length()) + 'b'
'''
with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f:
    for a in range(0, MAX_BIT_VALUE_INPUT_ADDR + 1):
        for r in range(0, MAX_BIT_VALUE_INPUT_REG + 1):
            f.write(format(a, formatter_addr) + constants.DELIMITER + format(r, formatter_reg) + constants.DELIMITER
                    + modules.Signal.shift_left_aggr(a, r, constants.RANGES.get(FILENAME),
                                                     constants.N_BITS_INPUT.get(FILENAME + '_reg'),
                                                     constants.N_BITS_OUTPUT.get(FILENAME)) + '\n')
'''

with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f:
    a = 0