Skip to content
Snippets Groups Projects
Commit 1deaba58 authored by Pepping's avatar Pepping
Browse files

Added methods and classes

parent 6240452f
No related branches found
No related tags found
No related merge requests found
...@@ -56,15 +56,27 @@ class Generic: ...@@ -56,15 +56,27 @@ class Generic:
self.name = name self.name = name
self.type = type self.type = type
self.default = default self.default = default
def setPortDir(self, newDir): class Constant:
self.dir = newDir def __init__(self, name, type, value=""):
self.name = name
self.type = type
self.value = value
class signal:
def __init__(self, name, type, default=""):
self.name = name
self.type = type
self.default = default
class Entity: class Entity:
s_port_start = " PORT (\n" s_port_start = " PORT (\n"
s_port_map_start = " PORT MAP(\n" s_port_map_start = " PORT MAP(\n"
s_generic_start = " GENERIC (\n" s_generic_start = " GENERIC (\n"
s_generic_map_start = " GENERIC MAP(\n"
def __init__(self, name = ""): def __init__(self, name = ""):
""" """
...@@ -81,7 +93,9 @@ class Entity: ...@@ -81,7 +93,9 @@ class Entity:
self.longestGenericType = 8 self.longestGenericType = 8
def read_entity_from_file(self, path, name): def read_entity_from_file(self, path, name):
f = file((path + name + ".vhd"), "r") fname = path + name + ".vhd"
if not(os.path.isfile(fname)): sys.exit('Error : Specified VHD file does not exist: ' + fname)
f = file(fname, "r")
s = "" s = ""
s = f.readline() s = f.readline()
# Read the entity name # Read the entity name
...@@ -146,7 +160,45 @@ class Entity: ...@@ -146,7 +160,45 @@ class Entity:
s = s[0:i] + "\n" s = s[0:i] + "\n"
return s.strip() return s.strip()
def make_instance(self, inst_type="ENTITY"): def make_instantiation(self, connect=True):
if self.generics:
self.set_longest_generic_name()
self.set_longest_generic_type()
if self.ports:
self.set_longest_port_name()
self.set_longest_port_dir()
# Create start
s_return = "u_inst_" + self.name + " : ENTITY work." + self.name + "\n"
for i in range(len(self.generics)):
if(i == 0):
s_return = s_return + self.s_generic_map_start
s_generic = " " + self.generics[i].name.ljust(self.longestGenericName) + " => "
if(connect):
s_generic = s_generic + self.generics[i].name
if(i != len(self.generics)-1):
s_generic = s_generic + ",\n"
else:
s_generic = s_generic + "\n )\n"
s_return = s_return + s_generic
for i in range(len(self.ports)):
if(i == 0):
s_return = s_return + self.s_port_map_start
s_port = " " + self.ports[i].name.ljust(self.longestPortName) + " => "
if(connect):
s_port = s_port + self.ports[i].name
if(i != len(self.ports)-1):
s_port = s_port + ",\n"
else:
s_port = s_port + "\n );\n"
s_return = s_return + s_port
return s_return
def make_definition(self, inst_type="ENTITY"):
if self.generics: if self.generics:
self.set_longest_generic_name() self.set_longest_generic_name()
...@@ -185,11 +237,11 @@ class Entity: ...@@ -185,11 +237,11 @@ class Entity:
return s_return return s_return
def make_entity_instance(self, indend = 0): def make_entity_definition(self, indend = 0):
return self.apply_indend(self.make_instance("ENTITY"), indend) return self.apply_indend(self.make_definition("ENTITY"), indend)
def make_component_instance(self, indend = 0): def make_component_definition(self, indend = 0):
return self.apply_indend(self.make_instance("COMPONENT"), indend) return self.apply_indend(self.make_definition("COMPONENT"), indend)
def apply_indend(self, s, indend): def apply_indend(self, s, indend):
s_indend = "" s_indend = ""
...@@ -197,6 +249,10 @@ class Entity: ...@@ -197,6 +249,10 @@ class Entity:
s_indend = s_indend + " " s_indend = s_indend + " "
s_return =s_indend + s.replace('\n', '\n' + s_indend) s_return =s_indend + s.replace('\n', '\n' + s_indend)
return (s_return) return (s_return)
def comment(self, s):
s_return ="-- " + s.replace('\n', '\n' + "-- ") + '\n'
return (s_return)
def set_longest_port_name(self): def set_longest_port_name(self):
self.portNames = [] self.portNames = []
...@@ -225,4 +281,26 @@ class Entity: ...@@ -225,4 +281,26 @@ class Entity:
def add_port(self, name, dir, type, default = ""): def add_port(self, name, dir, type, default = ""):
newPort = Port(name, dir, type, default) newPort = Port(name, dir, type, default)
self.ports.append(newPort) self.ports.append(newPort)
def add_generic(self, name, type, default = ""):
newGeneric = Generic(name, type, default)
self.generics.append(newGeneric)
def replace_std_logic_vector_with_std_logic(self):
for i in self.ports:
if i.type == "std_logic_vector(0 downto 0)":
i.type = "std_logic"
elif i.type == "STD_LOGIC_VECTOR(0 DOWNTO 0)":
i.type = "STD_LOGIC"
class Architecture:
def __init__(self, name = ""):
"""
"""
self.name = name
self.constants = []
self.signals = []
self.components = []
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment