Skip to content

Commit 22223eb

Browse files
committed
get_name method in Interface
1 parent 41c46bc commit 22223eb

File tree

4 files changed

+39
-32
lines changed

4 files changed

+39
-32
lines changed

sample/bram/bram.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
from veriloggen import *
66

77
class BramInterface(Interface):
8-
def __init__(self, m, prefix, postfix, addrwidth, datawidth, io=False):
9-
Interface.__init__(self, m, prefix, postfix, io)
10-
8+
def __init__(self, m, prefix, postfix, addrwidth, datawidth, direction):
9+
Interface.__init__(self, m, prefix, postfix)
10+
11+
self.direction = direction
1112
self.addrwidth = self.Parameter('ADDR_WIDTH', addrwidth)
1213
self.datawidth = self.Parameter('DATA_WIDTH', datawidth)
1314

14-
In = self.Input if self.io else self.Reg # self.Wire
15-
Out = self.Output if self.io else self.Wire
15+
In = self.Input if self.direction == 'in' else self.Reg # self.Wire
16+
Out = self.Output if self.direction == 'in' else self.Wire
1617

1718
self.addr = In('addr', addrwidth)
1819
self.datain = In('datain', datawidth)
@@ -26,7 +27,7 @@ def mkBram(name):
2627
datawidth = m.Parameter('DATA_WIDTH', 32)
2728

2829
clk = m.Input('CLK')
29-
bramif = BramInterface(m, '', '', addrwidth, datawidth, io=True)
30+
bramif = BramInterface(m, '', '', addrwidth, datawidth, direction='in')
3031

3132
d_addr = m.Reg('d_' + bramif.addr.name, datawidth)
3233
mem = m.Reg('mem', datawidth, Int(2)**addrwidth)
@@ -46,7 +47,7 @@ def mkTop():
4647
datawidth = m.Parameter('DATA_WIDTH', 32)
4748
clk = m.Input('CLK')
4849
rst = m.Input('RST')
49-
bramif = BramInterface(m, 'bram_', '', addrwidth, datawidth)
50+
bramif = BramInterface(m, 'bram_', '', addrwidth, datawidth, direction='out')
5051

5152
params = collections.OrderedDict()
5253
params.update(bramif.connectAllParameters())

veriloggen/interface.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,48 @@
88
import vtypes
99

1010
class Interface(vtypes.VeriloggenNode):
11-
def __init__(self, module, prefix='', postfix='', io=False):
11+
def __init__(self, module, prefix='', postfix=''):
1212
self.module = module
1313
self.prefix = prefix
1414
self.postfix = postfix
15-
self.io = io
1615

16+
def get_name(self, name):
17+
return self.prefix + name + self.postfix
18+
19+
def get_basename(self, name):
20+
return re.sub(r'' + self.postfix + '$', '', name.replace(self.prefix, '', 1))
21+
22+
1723
def Input(self, name, width=1, length=None, signed=False, value=None):
18-
new_name = self.prefix + name + self.postfix
24+
new_name = self.get_name(name)
1925
return self.module.Input(name, width, length, signed, value)
2026

2127
def Output(self, name, width=1, length=None, signed=False, value=None):
22-
new_name = self.prefix + name + self.postfix
28+
new_name = self.get_name(name)
2329
return self.module.Output(name, width, length, signed, value)
2430

2531
def OutputReg(self, name, width=1, length=None, signed=False, value=None):
26-
new_name = self.prefix + name + self.postfix
32+
new_name = self.get_name(name)
2733
return self.module.OutputReg(name, width, length, signed, value)
2834

2935
def Inout(self, name, width=1, length=None, signed=False, value=None):
30-
new_name = self.prefix + name + self.postfix
36+
new_name = self.get_name(name)
3137
return self.module.Inout(name, width, length, signed, value)
3238

3339
def Reg(self, name, width=1, length=None, signed=False, value=None):
34-
new_name = self.prefix + name + self.postfix
40+
new_name = self.get_name(name)
3541
return self.module.Reg(name, width, length, signed, value)
3642

3743
def Wire(self, name, width=1, length=None, signed=False, value=None):
38-
new_name = self.prefix + name + self.postfix
44+
new_name = self.get_name(name)
3945
return self.module.Wire(name, width, length, signed, value)
4046

4147
def Parameter(self, name, value, width=None, signed=False):
42-
new_name = self.prefix + name + self.postfix
48+
new_name = self.get_name(name)
4349
return self.module.Parameter(name, value, width, signed)
4450

4551
def Localparam(self, name, value, width=None, signed=False):
46-
new_name = self.prefix + name + self.postfix
52+
new_name = self.get_name(name)
4753
return self.module.Localparam(name, value, width, signed)
4854

4955
def connectAllPorts(self, prefix='', postfix=''):
@@ -54,19 +60,19 @@ def connectAllPorts(self, prefix='', postfix=''):
5460
wires = [ s for s in self.__dir__() if isinstance(getattr(self, s), vtypes.Wire) ]
5561
ret = collections.OrderedDict()
5662
for p in inputs:
57-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
63+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
5864
ret[name] = getattr(self, p)
5965
for p in outputs:
60-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
66+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
6167
ret[name] = getattr(self, p)
6268
for p in inouts:
63-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
69+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
6470
ret[name] = getattr(self, p)
6571
for p in regs:
66-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
72+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
6773
ret[name] = getattr(self, p)
6874
for p in wires:
69-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
75+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
7076
ret[name] = getattr(self, p)
7177
return ret
7278

@@ -75,10 +81,10 @@ def connectAllParameters(self, prefix='', postfix=''):
7581
localparams = [ s for s in self.__dir__() if isinstance(getattr(self, s), vtypes.Localparam) ]
7682
ret = collections.OrderedDict()
7783
for p in parameters:
78-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
84+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
7985
ret[name] = getattr(self, p)
8086
for p in localparams:
81-
name = prefix + re.sub(r'' + self.postfix + '$', '', getattr(self, p).name.replace(self.prefix, '', 1)) + postfix
87+
name = prefix + self.get_basename(getattr(self, p).name) + postfix
8288
ret[name] = getattr(self, p)
8389
return ret
8490

veriloggen/toverilog.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,13 @@ def visit_Ulnot(self, node):
280280
#---------------------------------------------------------------------------
281281
# First clas object wrapper
282282
def visit_Int(self, node):
283-
return vast.IntConst(str(node))
283+
return vast.IntConst(str(node.value))
284284

285285
def visit_Float(self, node):
286-
return vast.FloatConst(str(node))
286+
return vast.FloatConst(str(node.value))
287287

288288
def visit_Str(self, node):
289-
return vast.StringConst(node)
289+
return vast.StringConst(node.value)
290290

291291
#---------------------------------------------------------------------------
292292
def visit_int(self, node):
@@ -494,13 +494,13 @@ def visit_Cond(self, node):
494494
#---------------------------------------------------------------------------
495495
# First clas object wrapper
496496
def visit_Int(self, node):
497-
return vast.IntConst(str(node))
497+
return vast.IntConst(str(node.value))
498498

499499
def visit_Float(self, node):
500-
return vast.FloatConst(str(node))
500+
return vast.FloatConst(str(node.value))
501501

502502
def visit_Str(self, node):
503-
return vast.StringConst(node)
503+
return vast.StringConst(node.value)
504504

505505
#---------------------------------------------------------------------------
506506
def visit_int(self, node):

veriloggen/vtypes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ def __ne__(self, r):
1616
return NotEq(self, r)
1717

1818
def __ge__(self, r):
19-
return GreaerEq(self, r)
19+
return GreaterEq(self, r)
2020

2121
def __gt__(self, r):
22-
return GreaerThan(self, r)
22+
return GreaterThan(self, r)
2323

2424
def __add__(self, r):
2525
return Plus(self, r)

0 commit comments

Comments
 (0)