Skip to content

Commit 2f43e5c

Browse files
committed
updated for connection between Full and Lite
1 parent baebd60 commit 2f43e5c

File tree

1 file changed

+21
-144
lines changed

1 file changed

+21
-144
lines changed

veriloggen/types/axi.py

Lines changed: 21 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import functools
66
import math
7+
from collections import defaultdict
78

89
import veriloggen.core.vtypes as vtypes
910
from veriloggen.seq.seq import Seq
@@ -1315,7 +1316,7 @@ def __init__(self, m, name, clk, rst, datawidth=32, addrwidth=32,
13151316

13161317
# default values
13171318
self.wresp.bresp.assign(0)
1318-
if wresp.buser is not None:
1319+
if self.wresp.buser is not None:
13191320
self.wresp.buser.assign(user_value)
13201321
self.rdata.rresp.assign(0)
13211322
if self.rdata.ruser is not None:
@@ -1709,6 +1710,8 @@ def connect(self, ports, name):
17091710
if not self.noio:
17101711
raise ValueError('I/O ports can not be connected to others.')
17111712

1713+
ports = defaultdict(lambda: None, ports)
1714+
17121715
if '_'.join([name, 'awid']) in ports:
17131716
awid = ports['_'.join([name, 'awid'])]
17141717
else:
@@ -1731,13 +1734,14 @@ def connect(self, ports, name):
17311734
if self.waddr.awid is not None:
17321735
self.waddr.awid.connect(awid if awid is not None else 0)
17331736
self.waddr.awaddr.connect(awaddr)
1734-
self.waddr.awlen.connect(awlen)
1735-
self.waddr.awsize.connect(awsize)
1736-
self.waddr.awburst.connect(awburst)
1737-
self.waddr.awlock.connect(awlock)
1737+
self.waddr.awlen.connect(awlen if awlen is not None else 0)
1738+
self.waddr.awsize.connect(awsize if awsize is not None else
1739+
int(math.log(self.datawidth // 8)))
1740+
self.waddr.awburst.connect(awburst if awburst is not None else BURST_INCR)
1741+
self.waddr.awlock.connect(awlock if awlock is not None else 0)
17381742
self.waddr.awcache.connect(awcache)
17391743
self.waddr.awprot.connect(awprot)
1740-
self.waddr.awqos.connect(awqos)
1744+
self.waddr.awqos.connect(awqos if awqos is not None else 0)
17411745
if self.waddr.awuser is not None:
17421746
self.waddr.awuser.connect(awuser if awuser is not None else 0)
17431747
self.waddr.awvalid.connect(awvalid)
@@ -1755,7 +1759,7 @@ def connect(self, ports, name):
17551759

17561760
self.wdata.wdata.connect(wdata)
17571761
self.wdata.wstrb.connect(wstrb)
1758-
self.wdata.wlast.connect(wlast)
1762+
self.wdata.wlast.connect(wlast if wlast is not None else 1)
17591763
if self.wdata.wuser is not None:
17601764
self.wdata.wuser.connect(wuser if wuser is not None else 0)
17611765
self.wdata.wvalid.connect(wvalid)
@@ -1803,13 +1807,14 @@ def connect(self, ports, name):
18031807
if self.raddr.arid is not None:
18041808
self.raddr.arid.connect(arid if arid is not None else 0)
18051809
self.raddr.araddr.connect(araddr)
1806-
self.raddr.arlen.connect(arlen)
1807-
self.raddr.arsize.connect(arsize)
1808-
self.raddr.arburst.connect(arburst)
1809-
self.raddr.arlock.connect(arlock)
1810+
self.raddr.arlen.connect(arlen if arlen is not None else 0)
1811+
self.raddr.arsize.connect(arsize if arsize is not None else
1812+
int(math.log(self.datawidth // 8)))
1813+
self.raddr.arburst.connect(arburst if arburst is not None else BURST_INCR)
1814+
self.raddr.arlock.connect(arlock if arlock is not None else 0)
18101815
self.raddr.arcache.connect(arcache)
18111816
self.raddr.arprot.connect(arprot)
1812-
self.raddr.arqos.connect(arqos)
1817+
self.raddr.arqos.connect(arqos if arqos is not None else 0)
18131818
if self.raddr.aruser is not None:
18141819
self.raddr.aruser.connect(aruser if aruser is not None else 0)
18151820
self.raddr.arvalid.connect(arvalid)
@@ -1833,7 +1838,8 @@ def connect(self, ports, name):
18331838
rid.connect(self.rdata.rid if self.rdata.rid is not None else 0)
18341839
rdata.connect(self.rdata.rdata)
18351840
rresp.connect(self.rdata.rresp)
1836-
rlast.connect(self.rdata.rlast)
1841+
if rlast is not None:
1842+
rlast.connect(self.rdata.rlast)
18371843
if ruser is not None:
18381844
ruser.connect(self.rdata.ruser if self.rdata.ruser is not None else 0)
18391845
rvalid.connect(self.rdata.rvalid)
@@ -2186,6 +2192,8 @@ def __init__(self, m, name, clk, rst, datawidth=32, addrwidth=32,
21862192
self.id_width = id_width
21872193
self.user_width = user_width
21882194

2195+
self.noio = True
2196+
21892197
self.mem_datawidth = mem_datawidth
21902198
self.mem_addrwidth = mem_addrwidth
21912199

@@ -2409,137 +2417,6 @@ def _make_fsm(self, write_delay=10, read_delay=10, sleep=4):
24092417
self.fsm.If(self.rdata.rvalid, self.rdata.rready,
24102418
read_count == 0).goto_init()
24112419

2412-
def connect(self, ports, name):
2413-
if '_'.join([name, 'awid']) in ports:
2414-
awid = ports['_'.join([name, 'awid'])]
2415-
else:
2416-
awid = None
2417-
awaddr = ports['_'.join([name, 'awaddr'])]
2418-
awlen = ports['_'.join([name, 'awlen'])]
2419-
awsize = ports['_'.join([name, 'awsize'])]
2420-
awburst = ports['_'.join([name, 'awburst'])]
2421-
awlock = ports['_'.join([name, 'awlock'])]
2422-
awcache = ports['_'.join([name, 'awcache'])]
2423-
awprot = ports['_'.join([name, 'awprot'])]
2424-
awqos = ports['_'.join([name, 'awqos'])]
2425-
if '_'.join([name, 'awuser']) in ports:
2426-
awuser = ports['_'.join([name, 'awuser'])]
2427-
else:
2428-
awuser = None
2429-
awvalid = ports['_'.join([name, 'awvalid'])]
2430-
awready = ports['_'.join([name, 'awready'])]
2431-
2432-
if self.waddr.awid is not None:
2433-
self.waddr.awid.connect(awid if awid is not None else 0)
2434-
self.waddr.awaddr.connect(awaddr)
2435-
self.waddr.awlen.connect(awlen)
2436-
self.waddr.awsize.connect(awsize)
2437-
self.waddr.awburst.connect(awburst)
2438-
self.waddr.awlock.connect(awlock)
2439-
self.waddr.awcache.connect(awcache)
2440-
self.waddr.awprot.connect(awprot)
2441-
self.waddr.awqos.connect(awqos)
2442-
if self.waddr.awuser is not None:
2443-
self.waddr.awuser.connect(awuser if awuser is not None else 0)
2444-
self.waddr.awvalid.connect(awvalid)
2445-
awready.connect(self.waddr.awready)
2446-
2447-
wdata = ports['_'.join([name, 'wdata'])]
2448-
wstrb = ports['_'.join([name, 'wstrb'])]
2449-
wlast = ports['_'.join([name, 'wlast'])]
2450-
if '_'.join([name, 'wuser']) in ports:
2451-
wuser = ports['_'.join([name, 'wuser'])]
2452-
else:
2453-
wuser = None
2454-
wvalid = ports['_'.join([name, 'wvalid'])]
2455-
wready = ports['_'.join([name, 'wready'])]
2456-
2457-
self.wdata.wdata.connect(wdata)
2458-
self.wdata.wstrb.connect(wstrb)
2459-
self.wdata.wlast.connect(wlast)
2460-
if self.wdata.wuser is not None:
2461-
self.wdata.wuser.connect(wuser if wuser is not None else 0)
2462-
self.wdata.wvalid.connect(wvalid)
2463-
wready.connect(self.wdata.wready)
2464-
2465-
if '_'.join([name, 'bid']) in ports:
2466-
bid = ports['_'.join([name, 'bid'])]
2467-
else:
2468-
bid = None
2469-
bresp = ports['_'.join([name, 'bresp'])]
2470-
if '_'.join([name, 'buser']) in ports:
2471-
buser = ports['_'.join([name, 'buser'])]
2472-
else:
2473-
buser = None
2474-
bvalid = ports['_'.join([name, 'bvalid'])]
2475-
bready = ports['_'.join([name, 'bready'])]
2476-
2477-
if bid is not None:
2478-
bid.connect(self.wresp.bid if self.wresp.bid is not None else 0)
2479-
bresp.connect(self.wresp.bresp)
2480-
if buser is not None:
2481-
buser.connect(self.wresp.buser if self.wresp.buser is not None else 0)
2482-
bvalid.connect(self.wresp.bvalid)
2483-
self.wresp.bready.connect(bready)
2484-
2485-
if '_'.join([name, 'arid']) in ports:
2486-
arid = ports['_'.join([name, 'arid'])]
2487-
else:
2488-
arid = None
2489-
araddr = ports['_'.join([name, 'araddr'])]
2490-
arlen = ports['_'.join([name, 'arlen'])]
2491-
arsize = ports['_'.join([name, 'arsize'])]
2492-
arburst = ports['_'.join([name, 'arburst'])]
2493-
arlock = ports['_'.join([name, 'arlock'])]
2494-
arcache = ports['_'.join([name, 'arcache'])]
2495-
arprot = ports['_'.join([name, 'arprot'])]
2496-
arqos = ports['_'.join([name, 'arqos'])]
2497-
if '_'.join([name, 'aruser']) in ports:
2498-
aruser = ports['_'.join([name, 'aruser'])]
2499-
else:
2500-
aruser = None
2501-
arvalid = ports['_'.join([name, 'arvalid'])]
2502-
arready = ports['_'.join([name, 'arready'])]
2503-
2504-
if self.raddr.arid is not None:
2505-
self.raddr.arid.connect(arid if arid is not None else 0)
2506-
self.raddr.araddr.connect(araddr)
2507-
self.raddr.arlen.connect(arlen)
2508-
self.raddr.arsize.connect(arsize)
2509-
self.raddr.arburst.connect(arburst)
2510-
self.raddr.arlock.connect(arlock)
2511-
self.raddr.arcache.connect(arcache)
2512-
self.raddr.arprot.connect(arprot)
2513-
self.raddr.arqos.connect(arqos)
2514-
if self.raddr.aruser is not None:
2515-
self.raddr.aruser.connect(aruser if aruser is not None else 0)
2516-
self.raddr.arvalid.connect(arvalid)
2517-
arready.connect(self.raddr.arready)
2518-
2519-
if '_'.join([name, 'rid']) in ports:
2520-
rid = ports['_'.join([name, 'rid'])]
2521-
else:
2522-
rid = None
2523-
rdata = ports['_'.join([name, 'rdata'])]
2524-
rresp = ports['_'.join([name, 'rresp'])]
2525-
rlast = ports['_'.join([name, 'rlast'])]
2526-
if '_'.join([name, 'ruser']) in ports:
2527-
ruser = ports['_'.join([name, 'ruser'])]
2528-
else:
2529-
ruser = None
2530-
rvalid = ports['_'.join([name, 'rvalid'])]
2531-
rready = ports['_'.join([name, 'rready'])]
2532-
2533-
if rid is not None:
2534-
rid.connect(self.rdata.rid if self.rdata.rid is not None else 0)
2535-
rdata.connect(self.rdata.rdata)
2536-
rresp.connect(self.rdata.rresp)
2537-
rlast.connect(self.rdata.rlast)
2538-
if ruser is not None:
2539-
ruser.connect(self.rdata.ruser if self.rdata.ruser is not None else 0)
2540-
rvalid.connect(self.rdata.rvalid)
2541-
self.rdata.rready.connect(rready)
2542-
25432420
def read(self, fsm, addr):
25442421
""" intrinsic for thread """
25452422

0 commit comments

Comments
 (0)