Skip to content

Commit

Permalink
Nocexample (#145)
Browse files Browse the repository at this point in the history
Fixed slave interface wiring to make sense. Added support for AXI IDs in TB. TB fixes. Added pulpino NOC example.
  • Loading branch information
jameshegarty committed May 15, 2019
1 parent 5242a08 commit fc22a35
Show file tree
Hide file tree
Showing 72 changed files with 2,422 additions and 2,015 deletions.
10 changes: 10 additions & 0 deletions .circleci/config.yml
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ jobs:
- run: sudo apt-get install luajit verilator - run: sudo apt-get install luajit verilator
- run: cd examples; make bjump - run: cd examples; make bjump
- run: test -e examples/out/bjump_done.txt || exit - run: test -e examples/out/bjump_done.txt || exit
pulpino:
docker:
- image: circleci/python:3.7.1
steps:
- checkout
- run: git submodule update --init --recursive
- run: sudo apt-get install luajit verilator
- run: cd examples; make pulpino
- run: test -e examples/out/pulpino_done.txt || exit
unit: unit:
docker: docker:
- image: circleci/python:3.7.1 - image: circleci/python:3.7.1
Expand Down Expand Up @@ -93,3 +102,4 @@ workflows:
- terra - terra
- bjump - bjump
- state - state
- pulpino
10 changes: 8 additions & 2 deletions .gitmodules
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@
path = modules/bsg_ip_cores path = modules/bsg_ip_cores
url = https://bitbucket.org/taylor-bsg/bsg_ip_cores.git url = https://bitbucket.org/taylor-bsg/bsg_ip_cores.git
[submodule "modules/axi_node"] [submodule "modules/axi_node"]
path = modules/axi_node path = modules/pulpino/axi_node
url = https://github.com/pulp-platform/axi_node.git url = https://github.com/pulp-platform/axi_node.git
[submodule "modules/axi_size_conv"] [submodule "modules/axi_size_conv"]
path = modules/axi_size_conv path = modules/pulpino/axi_size_conv
url = https://github.com/pulp-platform/axi_size_conv.git url = https://github.com/pulp-platform/axi_size_conv.git
[submodule "modules/axi"]
path = modules/pulpino/axi
url = https://github.com/pulp-platform/axi.git
[submodule "modules/pulpino/common_cells"]
path = modules/pulpino/common_cells
url = https://github.com/pulp-platform/common_cells.git
2 changes: 1 addition & 1 deletion examples/gold/soc_convgenTaps.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_coeffs=4} return {InstCall_regs_coeffs=4}
Binary file added examples/gold/soc_pulpino_noc.bmp
Binary file not shown.
1 change: 1 addition & 0 deletions examples/gold/soc_pulpino_noc.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1 @@
return {}
1 change: 1 addition & 0 deletions examples/gold/soc_pulpino_noc.verilatorSOC.cycles.txt
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1 @@
1515
2 changes: 1 addition & 1 deletion examples/gold/soc_readlen.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_readAddress=805339136,regs_len=1024,regs_writeAddress=805347328} return {InstCall_regs_readAddress=805339136,InstCall_regs_len=1024,InstCall_regs_writeAddress=805347328}
2 changes: 1 addition & 1 deletion examples/gold/soc_regin.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_offset=200} return {InstCall_regs_offset=200}
2 changes: 1 addition & 1 deletion examples/gold/soc_regout.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_lastPx=33,regs_offset=200} return {InstCall_regs_lastPx=33,InstCall_regs_offset=200}
2 changes: 1 addition & 1 deletion examples/gold/soc_simple_uniform.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_readAddress=805339136,regs_writeAddress=805347328} return {InstCall_regs_readAddress=805339136,InstCall_regs_writeAddress=805347328}
2 changes: 1 addition & 1 deletion examples/gold/soc_tokencounter.regout.lua
Original file line number Original file line Diff line number Diff line change
@@ -1 +1 @@
return {regs_startCnt=16384,regs_endCnt=4096} return {InstCall_regs_startCnt=16384,InstCall_regs_endCnt=4096}
3 changes: 2 additions & 1 deletion examples/makefile
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ VERILATOR_SOC += $(patsubst %.lua,$(BUILDDIR)/%.verilatorSOC.correct.txt,$(SRCS_
VERILATOR_SOC += $(patsubst %.lua,$(BUILDDIR)/%.verilatorSOC.regcorrect.txt,$(SRCS_SOC)) VERILATOR_SOC += $(patsubst %.lua,$(BUILDDIR)/%.verilatorSOC.regcorrect.txt,$(SRCS_SOC))
VERILATOR_SOC += $(patsubst %.lua,$(BUILDDIR)/%.verilatorSOC.cyclescorrect.txt,$(SRCS_SOC)) VERILATOR_SOC += $(patsubst %.lua,$(BUILDDIR)/%.verilatorSOC.cyclescorrect.txt,$(SRCS_SOC))


SRCS_STATE = state_simple.t state_flowcontrol.t # state_flowcontrol.t
SRCS_STATE = state_simple.t


STATE = $(patsubst %.t,$(BUILDDIR)/%.verilatorSOC.bit,$(SRCS_STATE)) STATE = $(patsubst %.t,$(BUILDDIR)/%.verilatorSOC.bit,$(SRCS_STATE))
STATE += $(patsubst %.t,$(BUILDDIR)/%.verilatorSOC.raw,$(SRCS_STATE)) STATE += $(patsubst %.t,$(BUILDDIR)/%.verilatorSOC.raw,$(SRCS_STATE))
Expand Down
4 changes: 2 additions & 2 deletions examples/soc_15x15.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ local types = require "types"
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") regs = SOC.axiRegs({},SDF{1,256}):instantiate("regs")
noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,256},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


------------ ------------
inp = R.input( types.uint(8) ) inp = R.input( types.uint(8) )
Expand Down
4 changes: 2 additions & 2 deletions examples/soc_15x15x15.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ local types = require "types"
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") regs = SOC.axiRegs({},SDF{1,240}):instantiate("regs")
noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,240},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


------------ ------------
inp = R.input( types.uint(8) ) inp = R.input( types.uint(8) )
Expand Down
5 changes: 3 additions & 2 deletions examples/soc_2in.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ require "types".export()
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC(2):instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")

local noc = Zynq.SimpleNOC(2,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,1024},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate()


local inp = R.input(R.HandshakeTrigger) local inp = R.input(R.HandshakeTrigger)
local inp0, inp1 = RS.fanOut{input=inp,branches=2} local inp0, inp1 = RS.fanOut{input=inp,branches=2}
Expand Down
5 changes: 2 additions & 3 deletions examples/soc_arbiter.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ local SDF = require "sdf"
types.export() types.export()
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")
local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,1024},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger, local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger,
function(i) function(i)
Expand All @@ -23,5 +23,4 @@ local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger,
return G.AXIWriteBurstSeq{"out/soc_arbiter",{64,64},8,noc.write}(arb) return G.AXIWriteBurstSeq{"out/soc_arbiter",{64,64},8,noc.write}(arb)
end} end}



harness({regs.start, OffsetModule, regs.done},nil,{regs}) harness({regs.start, OffsetModule, regs.done},nil,{regs})
6 changes: 4 additions & 2 deletions examples/soc_bjump_cache.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ local bjump = require "bjump"
local NOCACHE = string.find(arg[0],"nocache") local NOCACHE = string.find(arg[0],"nocache")


local W,H = 128,64 local W,H = 128,64
noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,W*H*8*8}):instantiate("regs")

noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,W*H*8*8},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local PosToAddr = G.Module{"PosToAddr",ar(u16,2), local PosToAddr = G.Module{"PosToAddr",ar(u16,2),
function(loc) function(loc)
Expand Down
9 changes: 5 additions & 4 deletions examples/soc_convgen.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ local Zynq = require "zynq"
local ConvWidth = 4 local ConvWidth = 4
local ConvRadius = ConvWidth/2 local ConvRadius = ConvWidth/2


inSize = { 1920, 1080 } local inSize = { 1920, 1080 }
padSize = { 1920+16, 1080+3 } local padSize = { 1920+16, 1080+3 }


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,padSize[1]*padSize[2]}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,padSize[1]*padSize[2]},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local conv = Module{ ar(u(8),ConvWidth,ConvWidth), local conv = Module{ ar(u(8),ConvWidth,ConvWidth),
function(inp) function(inp)
Expand Down
15 changes: 8 additions & 7 deletions examples/soc_convgenTaps.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@ local Zynq = require "zynq"
local ConvWidth = 4 local ConvWidth = 4
local ConvRadius = ConvWidth/2 local ConvRadius = ConvWidth/2


inSize = { 1920, 1080 } local inSize = { 1920, 1080 }
padSize = { 1920+16, 1080+3 } local padSize = { 1920+16, 1080+3 }


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({
noc.extern=true

regs = SOC.axiRegs({
coeffs={ar(u(32),ConvWidth,ConvWidth), coeffs={ar(u(32),ConvWidth,ConvWidth),
{4, 14, 14, 4, {4, 14, 14, 4,
14, 32, 32, 14, 14, 32, 32, 14,
14, 32, 32, 14, 14, 32, 32, 14,
4, 14, 14, 4}}},SDF{1,padSize[1]*padSize[2]},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs") 4, 14, 14, 4}}},SDF{1,padSize[1]*padSize[2]}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true



local conv = Module{ ar(u(8),ConvWidth,ConvWidth), local conv = Module{ ar(u(8),ConvWidth,ConvWidth),
function(inp) function(inp)
Expand Down
5 changes: 3 additions & 2 deletions examples/soc_convtest.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ require "types".export()
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,8192}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,8192},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


ConvTop = G.Module{ ConvTop = G.Module{
function(i) function(i)
Expand Down
5 changes: 3 additions & 2 deletions examples/soc_filterseq.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ types.export()
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,128*64}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,128*64},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger, local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger,
function(i) function(i)
Expand Down
5 changes: 3 additions & 2 deletions examples/soc_filterseq8.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ local J = require "common"
types.export() types.export()
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,1024},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


IdxGT = G.Module{"IdxGT",function(i) return G.GT(i[0][1],i[1][1]) end} IdxGT = G.Module{"IdxGT",function(i) return G.GT(i[0][1],i[1][1]) end}


Expand Down
7 changes: 4 additions & 3 deletions examples/soc_flip.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"
require "types".export() require "types".export()


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,1024},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local W,H = 128,64 local W,H = 128,64


addrGen = Module{function(inp) addrGen = Module{SDF{1,1},function(inp)
local x, y = Index{0}(Index{0}(inp)), Index{1}(Index{0}(inp)) local x, y = Index{0}(Index{0}(inp)), Index{1}(Index{0}(inp))
local resx = AddMSBs{16}(x) local resx = AddMSBs{16}(x)
local resy = Mul( Sub(c(H-1,u(32)),AddMSBs{16}(y)),c(W/8,u(32)) ) local resy = Mul( Sub(c(H-1,u(32)),AddMSBs{16}(y)),c(W/8,u(32)) )
Expand Down
7 changes: 4 additions & 3 deletions examples/soc_flipWrite.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ local SDF = require "sdf"
require "types".export() require "types".export()
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
regs = SOC.axiRegs({},SDF{1,1024},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


local W,H = 128,64 local W,H = 128,64


AddrGen = Module{function(inp) AddrGen = Module{SDF{1,1},function(inp)
local x, y = Index{0}(Index{0}(inp)), Index{1}(Index{0}(inp)) local x, y = Index{0}(Index{0}(inp)), Index{1}(Index{0}(inp))
local resx = AddMSBs{16}(x) local resx = AddMSBs{16}(x)
local resy = Mul( Sub(c(H-1,u(32)),AddMSBs{16}(y)),c(W/8,u(32)) ) local resy = Mul( Sub(c(H-1,u(32)),AddMSBs{16}(y)),c(W/8,u(32)) )
Expand Down
5 changes: 3 additions & 2 deletions examples/soc_parread.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ local SDF = require "sdf"
types.export() types.export()
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC(2):instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,(128*64)/16}):instantiate("regs")

local noc = Zynq.SimpleNOC(2,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,(128*64)/16},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate()


-- this will use 2 AXI ports to read in parallel at twice the BW -- this will use 2 AXI ports to read in parallel at twice the BW


Expand Down
57 changes: 39 additions & 18 deletions examples/soc_pulpino_noc.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,36 +9,57 @@ local G = require "generators"
local types = require "types" local types = require "types"
local harness = require "harnessSOC" local harness = require "harnessSOC"


zynqNOC = Zynq.SimpleNOC():instantiate("ZynqNOC")
-- axiRegs expects 32 bit port
local regs = SOC.axiRegs( {}, SDF{1,(128*64)/8} ):instantiate("regs")
--local regs_read_32 = Pulpino.AXIReadBusResize(regs.read,64,32)
--local regs_write_32 = Pulpino.AXIWriteBusResize(regs.write,64,32)



-- zynq noc master ports are 32bit, but our slave is 64, so resize
--local noc_read0_32 = Pulpino.AXIReadBusResize(noc.read,32,64):instantiate("ZynqNOC_NOCSLV_read")
--local noc_write0_32 = Pulpino.AXIWriteBusResize(noc.write,32,64):instantiate("ZynqNOC_NOC_SLV_write")

local ZynqNOC = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}) -- needs to instantiate pulp noc, but not finalize
local zynqNOC = ZynqNOC:instantiate("ZynqNOC")
zynqNOC.extern=true zynqNOC.extern=true


local noc = Pulpino.AXIInterconnect(3,2):instantiate("pulpinoNOC") local noc = Pulpino.AXIInterconnect(2,2,{{zynqNOC.read,zynqNOC.write}}):instantiate("PulpinoNOC")
local regs = SOC.axiRegs( {}, SDF{1,(128*64)/8}, noc.readSource1, noc.readSink1, noc.writeSource1, noc.writeSink1 ):instantiate("regs")
--noc:addSlaveRead(ZynqNoc.read)
--noc:addSlaveWrite(ZynqNoc.write)


local IP_plus200 = C.linearPipeline({G.AXIReadBurst{ "frame_128.raw", {128,32}, types.u8, 8, noc.read1, SDF{1,(128*32)/8} },G.HS{G.Map{G.Add{200}}},G.AXIWriteBurst{"out/soc_simple",noc.write1}},"IP_plus100") print(ZynqNOC)

local IP_plus200 = C.linearPipeline({G.AXIReadBurst{ "frame_128.raw", {128,32}, types.u8, 8, noc.read, SDF{1,(128*32)/8}, R.Address(0x30008000) },G.MapFramed{G.FIFO{512}},G.HS{G.Map{G.Add{200}}},G.AXIWriteBurst{"out/soc_simple_plus200",noc.write, R.Address(0x3000C000)} },"IP_plus100")


local Inv = G.Module{"Inv",types.u(8),SDF{1,1},function(i) return G.Sub(R.c(255,types.u8),i) end} local Inv = G.Module{"Inv",types.u(8),SDF{1,1},function(i) return G.Sub(R.c(255,types.u8),i) end}


local IP_inv = C.linearPipeline({G.AXIReadBurst{ "frame_128.raw", {128,32}, types.u8, 8, noc.read2, SDF{1,(128*32)/8} },G.HS{G.Map{Inv}},G.AXIWriteBurst{"out/soc_simple",noc.write2}},"IP_inv") local IP_inv = C.linearPipeline({G.AXIReadBurst{ "frame_128.raw", {128,32}, types.u8, 8, noc.read1, SDF{1,(128*32)/8}, R.Address(0x3000A000) },G.MapFramed{G.FIFO{512}},G.HS{G.Map{G.Add{100}}},G.HS{G.Map{G.Add{100}}},G.AXIWriteBurst{"out/soc_simple_inv",noc.write1, R.Address(0x3000D000)}},"IP_inv")


local PTop = G.Module{"PTop", local PTop = G.Module{"PTop",types.HandshakeTrigger,
function(i) function(i)
local st = G.FanOut{2}(regs:start(i)) local st = G.FanOut{2}(i)
local done_plus200, done_inv = IP_plus200(st[0]), IP_inv(st[1]) local done_plus200, done_inv = IP_plus200(st[0]), IP_inv(st[1])
done_plus200 = G.FIFO{128}(done_plus200) done_plus200 = G.FIFO{128}(done_plus200)
done_inv = G.FIFO{128}(done_inv) done_inv = G.FIFO{128}(done_inv)


-- zynq noc master ports are 32bit, but our slave is 64, so resize
local noc_read0_32 = Pulpino.AXIReadBusResize(noc.read0,32,64)
local noc_write0_32 = Pulpino.AXIWriteBusResize(noc.write0,32,64)


return R.statements{ -- return regs:done(G.FanIn(done_plus200,done_inv))
regs:done(G.FanIn(done_plus200,done_inv)), return G.FanIn(done_plus200,done_inv)
noc:readSink0(zynqNOC:read(noc:readSource0())),
noc:writeSink0(zynqNOC:write(noc:writeSource0())),
zynqNOC:readSink(noc_read0_32(zynqNOC:readSource())),
zynqNOC:writeSink(noc_write0_32(zynqNOC:writeSource()))
}
end} end}


harness(PTop) print(PTop)

print(noc.module)

local Top = C.linearPipeline({regs.start,PTop,regs.done},"Top",nil,{regs,noc})

Top.globalMetadata.InstCall_PulpinoNOC_write1_write_filename=nil
Top.globalMetadata.InstCall_PulpinoNOC_write_write_filename="out/soc_pulpino_noc"
Top.globalMetadata.InstCall_PulpinoNOC_write_write_H=64

print(Top)
--harness({regs.start,PTop,regs.done},nil,{regs,noc})
harness(Top)
5 changes: 3 additions & 2 deletions examples/soc_read.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ require "types".export()
local SDF = require "sdf" local SDF = require "sdf"
local Zynq = require "zynq" local Zynq = require "zynq"


noc = Zynq.SimpleNOC():instantiate("ZynqNOC") local regs = SOC.axiRegs({},SDF{1,30*14*9}):instantiate("regs")

local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true noc.extern=true
local regs = SOC.axiRegs({},SDF{1,30*14*9},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink):instantiate("regs")


PosToAddr = G.Module{ "PosToAddr", ar(u16,2), PosToAddr = G.Module{ "PosToAddr", ar(u16,2),
function(loc) function(loc)
Expand Down
Loading

0 comments on commit fc22a35

Please sign in to comment.