Source code for hwtLib.examples.arithmetic.vhdl_vector_auto_casts
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hwt.hdl.types.bits import Bits
from hwt.interfaces.std import Signal
from hwt.synthesizer.unit import Unit
from hwtLib.examples.base_serialization_TC import BaseSerializationTC
[docs]class VhdlVectorAutoCastExample(Unit):
def _declr(self):
std_logic = Bits(1)
std_logic_vector_0 = Bits(1, force_vector=True)
self.a = Signal(dtype=std_logic)
self.b = Signal(dtype=std_logic)._m()
self.c = Signal(dtype=std_logic_vector_0)._m()
self.d = Signal(dtype=std_logic_vector_0)
self.e = Signal(dtype=std_logic)._m()
self.f = Signal(dtype=std_logic)
self.g = Signal(dtype=std_logic_vector_0)
self.i = Signal(dtype=std_logic)._m()
self.j = Signal(dtype=std_logic)._m()
def _impl(self):
# no conversion
self.b(self.a)
# std_logic -> std_logic_vector
self.c(self.a)
# std_logic_vector -> std_logic
self.e(self.d)
# unsigned(std_logic) + unsigned(std_logic_vector) -> std_logic_vector -> std_logic
self.i(self.f + self.g)
# unsigned(std_logic) + unsigned(std_logic_vector) -> std_logic_vector -> std_logic
self.j(self.g + self.f)
[docs]class VhdlVectorAutoCastExampleTC(BaseSerializationTC):
__FILE__ = __file__
[docs] def test_vhdl(self):
u = VhdlVectorAutoCastExample()
self.assert_serializes_as_file(u, "VhdlVectorAutoCastExample.vhd")
if __name__ == '__main__':
from hwt.synthesizer.utils import to_rtl_str
from hwt.serializer.vhdl import Vhdl2008Serializer
u = VhdlVectorAutoCastExample()
print(to_rtl_str(u, Vhdl2008Serializer))
import unittest
testLoader = unittest.TestLoader()
# suite = unittest.TestSuite([VhdlVectorAutoCastExampleTC("test_vhdl")])
suite = testLoader.loadTestsFromTestCase(VhdlVectorAutoCastExampleTC)
runner = unittest.TextTestRunner(verbosity=3)
runner.run(suite)