FPGA Prototyping - Princeton...
Transcript of FPGA Prototyping - Princeton...
Getting to Work with OpenPiton
Princeton University
OpenPit
http://openpiton.org
FPGA Prototyping
2
Supported Development Boards
Boards supported by toolchain:
Xilinx VC707
Digilent Genesys2
Digilent NexysVideoDigilent Nexys4DDR** doesn’t have DDR controller and FPU
3
Comparison of Supported Boards
Development Board,FPGA name,
Part
Core Clock(1 core)
Max# of Cores
DDR Type,Size,
Data Width
Price (nonacademic/
academic)
Xilinx VC707Virtex-7
XC7VX485T-2FFG1761C67 MHz 4
DDR31 GB
64 bits$3,495
Digilent Genesys2Kintex-7
XC7K325T-2FFG900C50 MHz 2
DDR31GB
32 bits
$1,299/$600
Digilent NexysVideoArtix-7
XC7A200T-1SBG484C29 MHz 1
DDR3512MB16 bits
$490/$250
Digilent Nexys 4 DDRArtix-7
XC7A100T-ACSG324C29MHz 1
DDR2128MiB16 bits
$320/$160
4
Prototype Architecture
OpenPitonCore
DRAM
SD Master
UART
Switches, LEDs
ETH IO_C
TRL_
TOP
Digilent Genesys2
5
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
DRAM
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
SD
DRAM
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
UART
SD
DRAM
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
UART
SD
DRAM
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
UART
SD
DRAM
ETH
6
I/O Interfaces
Wishbone SD Master*:• Up to 2GB SD (microSD) cards• Storage for HV/OS/tests
UART:• Terminal I/O• Loading of assembly test(DMW - Direct Memory Write)
DDR controller*:• Xilinx’s MIG 7 IP core• Configurable data width• Used as main memory
*optional
Ethernet controller*:• Xilinx’s Ethernet Lite MAC IP Core• Driver from Linux kernel• 100 Mb/s
To/From OpenPiton core
7
Demo
8
Setup for Hands-on with FPGA
9
Setting up Your FPGA Board
10
Setting up Your FPGA Board
10
Setting up Your FPGA Board
10
Setting up Your FPGA Board
10
Setting up Your FPGA Board
10
Setting up Your FPGA Board
10
Setting up Your FPGA Board
GO!
10
Booting Linux
11
Booting Linux
11
FPGA Linux Boot
12
FPGA Linux Boot
After ~4 min
12
Coffee Break
13
FPGA Linux Boot
14
Hands on: Login to the System
15
Hands on: Login to the System
15
Suggested Configurations
BRAM_TEST SD with OS + Eth
UART DMWto DDR
BRAM with hardwired test
DRAM memory controller
SD card controller
UART 16550
Ethernet Lite MAC
UART support fortest streaming
16
Suggested Configurations
BRAM_TEST SD with OS + Eth
UART DMWto DDR
BRAM with hardwired test
DRAM memory controller
SD card controller
UART 16550
Ethernet Lite MAC
UART support fortest streaming
16
Tools
• protosyn
All encompassing tool for creation of FPGA project and generating programming file
• pitonstream
Tool for running assembly tests on FPGA
Sources are located at piton/tools/src/proto/
pitonstreamboard type, asm test list .ustr
protosynboard type, design, config opt.xpr
.bit
17
protosyn Flow
bram test?
*.v.pyv -> *tmp.v
sims build
sims run
RTL
mapping test to BRAM
create project?
mem.imagesims.log
test_proto.coe
project creation .xpr
synthesis
mapping, placing, routing, bitstream generation, STA
NO
YES
implement?
YES
NO
IP cfg (.xci),constraints (.cdc),defines
YES
NO
.xpr
.bit,
.ltx
LegendControl FlowData Flowpyv preprocessorSims scriptVivadoinput/output filesflow step conditions
18
Bringing up Network
19
Bringing up Network
Put a MAC from your board!
19
Bringing up Network
Put a MAC from your board!
19
Bringing up Network
Put a MAC from your board!
19
Running protosyn
…more options are in FPGA manual
20
Running protosyn
…more options are in FPGA manual
20
Running protosyn
…more options are in FPGA manual
20
Running protosyn
…more options are in FPGA manual
20
Example protosyn run
21
Example protosyn run
21
Example protosyn run
21
Example protosyn run
21
Example protosyn run
21
Example protosyn run
21
Example protosyn run
21
FPGA Flow Runtimes
• System including DDR controller
– ~1.5 hour including IP generation
– ~40 mins excluding IP generation
22
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
23
FPGA Flow Outputs
24
FPGA Flow Outputs
24
FPGA Flow Outputs
24
FPGA Flow Outputs
24
FPGA Flow Outputs
25
FPGA Flow Outputs
25
FPGA Flow Outputs
25
FPGA Flow Outputs
25
Bringing up Network
26
Bringing up Network
Put a MAC from your board!
26
Bringing up Network
Put a MAC from your board!
26
Bringing up Network
Put a MAC from your board!
26
Example pitonstream Run
27
Example pitonstream Run
27
Example pitonstream Run
27
Example pitonstream Run
27
Writing OS Image to SD Card
28
Writing OS Image to SD Card
28
Writing OS Image to SD Card
29
Writing OS Image to SD Card
30
Writing OS Image to SD Card
30
Hands-on with FPGA
31
Running Tetris on OpenPiton
32
Running Tetris on OpenPiton
32
Browsing OpenPiton web page onOpenPiton
33
Browsing OpenPiton web page onOpenPiton
33
Browsing OpenPiton web page onOpenPiton
33