async2010 - asipide tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/asy… ·...
TRANSCRIPT
![Page 1: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/1.jpg)
1
Bringing together GALS design and open-source tools
in a hardware-software-FPGA co-simulation flow
Lilian Janin, Doug Edwards ASYNC-NOCS 2010
AsipIDE Tutorial
2
EU Project GALAXY
! GALs interfAce for compleX digital sYstem integration
! Supported by European Commission 7th Framework Programme (2007-2013) Objective ICT-2007.3.3: Embedded System Design
![Page 2: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/2.jpg)
3
EU Project GALAXY
! GALAXY Project Partners • IHP GmbH - Innovations for High
Performance Microelectronics (Germany) • EPFL - Ecole Polytechnique Fédérale de
Lausanne (Switzerland) • Università di Bologna (Italy) • Silistix UK Ltd. (United Kingdom) • Infineon Technologies AG (Germany)
4
EU Project GALAXY
! GALAXY Project Goals • Remove existing barriers to the adoption of
GALS technology • Integrated GALS design flow • Interoperability framework between existing
open and commercial CAD tools • Heterogeneous systems at mixed levels of
abstraction • Novel Network-on-Chip capabilities
![Page 3: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/3.jpg)
5
EU Project GALAXY
! GALAXY Demonstrator: Wireless communication system in 40nm CMOS process • Evaluate GALS approach to solve system
integration issues • Prove robustness to process variability
problems in nanoscale geometries • Explore the low EMI properties, inherent
low-power features
6
Tutorial Overview
! General presentation of tools and IDE
! Demo of main features
! Hands-on: A home surveillance system
![Page 4: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/4.jpg)
7
General presentation of tools and IDE
! Motivation • Bringing GALS to the masses! • Gcc brought software programming to home users • Many open-source/freely-available hardware
design tools – Icarus Verilog simulator – Xilinx ISE – VHDL Alliance tools from Lip6
• But full open-source hardware-software-FPGA design flow still unclear
• Also integrates commercial tools
8
General presentation of tools and IDE
! AsipIDE connects existing tools together to form a (co-)simulation design flow • Iterative design methodology
– Transforming software... – …to hardware
• Hardware-software-FPGA co-simulation • Automatically generated GALS
communications • Graphical debugging
– Multiple abstractions represented together – Animation from simulation traces
![Page 5: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/5.jpg)
9
General presentation of tools and IDE
! Calculator demo • Demonstrates iterative GALS prototyping
! Baseband processor&G3card demo • Demonstrates scalable environment • Navigation in large embedded system
! Features demo
10
Calculator Demo
• Calculator: • Keyboard • LCD • Main program
• polling the keyboard • processing • sending value to LCD
• Keyboard asynchronous interface • LCD asynchronous interface
![Page 6: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/6.jpg)
11
Calculator Demo • High level architecture in C/C++ • Step-by-step implementation on hardware • FPGA board prototyping
12
Calculator Demo
Keyboard (synchronous)
Main Calculator (asynchronous)
LCD (synchronous)
Software simulation Hardware
Step 1. All in Software
![Page 7: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/7.jpg)
13
Calculator Demo
Keyboard (synchronous)
Main Calculator (asynchronous)
LCD (synchronous)
Software simulation Hardware
Step 2. Keyboard in Hardware
14
Calculator Demo: FPGA board
![Page 8: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/8.jpg)
15
! Simplified view of board for Galaxy tools
Calculator Demo: FPGA board
16
! Simplified view of board ! Importing components to targets
Calculator Demo: FPGA board
![Page 9: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/9.jpg)
17
! Simplified view of board ! Importing components to targets ! Links Analysis
• Impossible links re-routed
Calculator Demo: FPGA board
18
! Main execution on host ! SystemC transaction “poll keyboard”
• Sent to router1 • Routed through router2 and router3 • Converted to hardware asynchronous channel
transaction
Calculator Demo: Hw-Sw Sync-Async Cosimulation
! Verilog keyboard_if: • Synchronous
implementation • Asynchronous
interface
![Page 10: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/10.jpg)
19
External Tool Flow
Xilinx tool flow integrated with SystemC and C++ flows
20
Calculator Demo
Keyboard (synchronous)
Main Calculator (asynchronous)
LCD (synchronous)
Software simulation Hardware
Step 3. All in Hardware
![Page 11: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/11.jpg)
21
Baseband processor&G3card Demo
! Illustrating scalability • Zoom&pan inside large designs
22
Baseband processor&G3card Demo
![Page 12: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/12.jpg)
23
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
24
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 13: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/13.jpg)
25
Features Demo: Automatic instantiation of adapters
26
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 14: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/14.jpg)
27
Features Demo: Automatic use of transactors
28
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 15: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/15.jpg)
29
Features Demo: Switching between abstractions
30
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets
! Automatic use of local and remote tools for compilation, synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 16: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/16.jpg)
31
Features Demo: Simulator/FPGA selection
32
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 17: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/17.jpg)
33
Features Demo: Tool flows
34
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving
space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 18: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/18.jpg)
35
Features Demo: Trace file animation for debugging
36
Features Demo ! Automatic instantiation of adapters ! Automatic use of transactors ! Easy to switch components between multiple levels of
abstractions, with always a proper interface regenerated ! Selection of any simulators or FPGA target
• Ability to use asynchronous-specific simulators: Balsa, Petri nets ! Automatic use of local and remote tools for compilation,
synthesis and simulation flow; remote resource sharing (queues)
! Trace file animation, debugging • Colour-based channel representation, clearer and saving space • Asynchronous debugging such as deadlock detection
! Asynchronous NoC • XPipes: graphical updates ! regenerates everything automatically
![Page 19: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/19.jpg)
37
Features Demo: Asynchronous XPipes NoC
38
Features Demo: Asynchronous XPipes NoC
![Page 20: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/20.jpg)
39
Features Demo: Asynchronous XPipes NoC
40
Features Demo: Asynchronous XPipes NoC
![Page 21: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/21.jpg)
41
Hands-on: A home surveillance system
! Motivation • Typical application which home developers
would like to use FPGAs for, but encounter design flow problems
• Linux-based solutions available • USB webcam • Zoneminder analysis • Remote storage
– High purchase cost – High consumption
• FPGA cheaper final solution
42
Hands-on: A home surveillance system
! Video processing application • Webcam " motion detection " video encoding " ethernet
streaming to remote server
! Outline • Requirements definition • Identification of re-usable open-source components • Creation of components, architecture exploration • Components assembly, automatic adapters • Automatic code generation, code running in SW • Iterative refinement of SW components to HW • Co-simulation software-FPGA
![Page 22: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/22.jpg)
43
Requirements Definition
! Inputs: webcam + keypad ! Outputs:
• Ethernet connection to send the motion-detected images/videos
• Replaced by local VGA output for the demo ! Movement is detected by subtracting 2
consecutive frames ! Changes in input frame pixels start the
recording ! Threshold set by keypad
44
Block Diagram
Frame Grabber
Keypad
Image Processor
Video Output
![Page 23: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/23.jpg)
45
Block Diagram
Keypad
Image Processor Video encoder
Ethernet output
VGA out Frame Grabber
46
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
1. All simulated in software at TLM level
![Page 24: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/24.jpg)
47
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
2. Keypad refined to Verilog Co-debugging SystemC TLM-Verilog
48
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
3. Keypad moved to hardware Transaction routing through board’s CPU and FPGA
Co-debugging hardware-software
![Page 25: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/25.jpg)
49
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
4. Processor and output moved to hardware Based on re-usable open-source cores
50
Identification of re-usable open-source components
Available from www.opencores.org
• Keypad scanner
• JPEG-MJPEG video encoder • VGA/LCD controller • Wishbone Memory wrapper
![Page 26: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/26.jpg)
51
Start of Hands-on
! Initialise environment source asipide_env_setup!
! Create and enter your own directory mkdir your_name!cd your_name!
! Start IDE asipide!
52
Hands-on Step 1 - How to: Create a new component
! If it will contain sub-components • Select the parent component in the graphical design view • Design Menu " Create component " Create sub-circuit component
! If it will be a “leaf” component, referring to existing source code files • Select the parent component in the graphical design view • Design Menu " Create component " Create single element component
![Page 27: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/27.jpg)
53
Step 1 - How to: Create a new component
! After a component creation, the IDE enters “Edit mode” • Components can be moved • Components can be resized
! Next created component will inherit the same size
! You can edit the component and instance names in the Property View
54
Step 1: Creation of component architecture
Create these 6 components: • Image_processor • Frame_grabber
• Keypad_scanner • Video_output, with sub-components:
– Video_encoder
– Ethernet_output
![Page 28: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/28.jpg)
55
Step 1 - Result: Created components
56
Components assembly
! We will now import and assemble the components together
! Often the hardware is not available at the start of a project. We need to do as much as possible using software and simulators.
! Version 1 (mostly to define the architecture and the main communication data types): • Frame_grabber component will take its input from files
• Ethernet output will dump results to a file
• Image processor will just subtract the new frame's pixels values from the previous frame's and check whether the max pixel change goes over a certain threshold
• Video encoder will use free software encoders: ffmpeg/libavcodec
! Communications will use TLM, the highest level of abstraction integrated in AsipIDE.
![Page 29: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/29.jpg)
57
Definition of ASIP communication types
! The image processor will be the main module (initiating requests) • Initiates requests to frame grabber • Sends probe requests to keypad scanner • Provides commands and data to video
output ! Create TLM ports for each component
• Select appropriately target or initiator ! Connect TLM ports
58
Hands-on Step 2 - How to: Create a component port
1. Select component in the graphical design view 2. Design Menu " Create port" Create TLM port 3. In Property View: Select port direction
2 3 1
![Page 30: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/30.jpg)
59
Step 2: Creation of component ports
Create the following ports: • Image processor
– 3 TLM initiator ports • Frame grabber
– 1 TLM target port • Keypad scanner
– 1 TLM target port • Video encoder
– 1 TLM target port + 1 TLM initiator port • Ethernet output
– 1 TLM target port
60
Step 2 - Result: Created ports
![Page 31: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/31.jpg)
61
Hands-on Step 3 - How to: Connect two component ports
Several ways to do it, one being: • Switch to “Connection mode” by clicking the first icon below the design view • For each connection:
– Move the mouse near port 1 • It should get highlighted when you are close enough
– Click and drag the mouse to port 2 – Release
• Deactivate “Connection mode” by clicking the first icon below the design view
Connection Mode Switch
62
Step 3: Connecting components
Create the following connections: • Image processor " Frame grabber • Image processor " Keypad scanner • Video encoder " Ethernet output • Image processor " Video encoder
(Move the automatically created port to a better position)
![Page 32: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/32.jpg)
63
Step 3 - Result: Connected components
64
Hands-on Step 4 - How to: Assign source code to a component
! Select the component ! In Property View
• Use the File entry’s “Browse…” button to select the relevant file
Browse button
![Page 33: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/33.jpg)
65
Step 4: Component implementations
! We prepared a SystemC implementation for each component • Available in directory
~/AsipIDE/SystemC/ ! Assign the some source code to each
component • Image processor: image_processor.cpp • Frame grabber : frame_grabber.cpp • Keypad scanner: keypad_scanner.cpp • Video encoder: video_encoder.cpp • Ethernet output: ethernet_output.cpp
66
Hands-on Step 5: SystemC simulation
! Start simulation • Click Simulation Menu"Run Simulation
! Automatic generation of top-level SystemC code
! Reads input from directory images ! Streams output to file
/tmp/asipide_tutorial.mpg • Output can be played with mplayer
![Page 34: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/34.jpg)
67
Debugging: Design view animation
! Simulation trace observable in IDE ! Controlled via Simulation controller view
1. Scan Trace File
2. Animate Graph View
Same as Simulation Menu "
Run Simulation
68
Connecting a real webcam
! Still in software
! New implementation of frame grabber
• Access to webcam from the host computer
! SystemC source code provided
![Page 35: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/35.jpg)
69
Hands-on Step 6 - How to: Create an extra implementation
1. Select component in the graphical design view 2. Design Menu " Create component" Create an
implementation
70
Step 6: New component implementation
! Select the frame_grabber component ! Create a new implementation
• Of type “single-element”
• Attached to the source code frame_grabber_webcam.cpp
! Check that the new implementaion is selected
! Simulate
![Page 36: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/36.jpg)
71
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
2. Keypad refined to Verilog Co-debugging SystemC TLM-Verilog
72
Iterative refinement to hardware
! With everything working at TLM level, we will slowly move components to Verilog and then to hardware
! TLM ports refined to pin level
! Starting with the keypad
![Page 37: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/37.jpg)
73
Hands-on Step 7: Changing keypad to keypad_v2
1. Add library demo_hardware_lib_1
2. Drag&drop keypad_v2 on top of keypad_scanner
3. A new dialog suggests how the connections from the old component can be transferred to the new component. Accept the suggested mapping.
74
Hands-on Step 7: keypad_v2 inspection
! Select keypad_v2 for inspection ! Two implementations
• Our first SystemC TLM implementation • A new Verilog implementation
! Two interfaces • TLM interface • Pin-level interface
![Page 38: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/38.jpg)
75
Hands-on Step 7: keypad_v2 transactor
! Different combinations of implementation + interface possible • TLM impl. + TLM interface
– as used until now • Verilog impl. + pins interface
– No connections between keypad_v2’s pins and image_processor’s TLM ports
• TLM impl. + pins interface – We haven’t defined a transactor for this, as we don’t plan
to simulate using this configuration • Verilog impl. + TLM interface
– Useful to us, as the TLM interface can connect to the image_processor’s TLM ports
– Transactor automatically instantiated
76
Step 7 - Result: keypad_v2 transactor
![Page 39: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/39.jpg)
77
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
3. Keypad moved to hardware Transaction routing through board’s CPU and FPGA
Co-debugging hardware-software
78
Targeting Hardware
! We want to use a real hardware keypad ! But keep the rest in simulators
Problem: ! No direct link between host and keypad ! Need to go through Host " Serial cable
" ARM CPU " Bus " FPGA " Keypad
![Page 40: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/40.jpg)
79
FPGA board
80
Hands-on Step 8: Targeting the FPGA board
! Select the inner component inside keyboard_v2 ! In Property View, select the desired Target:
“Virtex FPGA on demo board”
![Page 41: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/41.jpg)
81
Hands-on Step 8: Targeting the FPGA board
! The Simulation targets view detects that the 2 simulation targets cannot communicate directly (blue link)
82
Hands-on Step 8: Targeting the FPGA board
1. Select the blue link 2. Apply the suggested ASIP routers
2
1
![Page 42: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/42.jpg)
83
Step 8 - Results: Targeted FPGA board
84
Hands-on Step 9: FPGA-software co-simulation
! Click on the icon “Show Tool Flow” ! Launching Simulation
• Generates SystemC to FPGA board communications
• Generates top-level code for each target – SystemC – Host to board controller (precompiled software) – Board’s ARM CPU – Board’s FPGA
![Page 43: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/43.jpg)
85
Step 9 - Results: Tool Flow
86
Step 9 – Results: Hardware-software co-simulation
! SystemC requests to the keypad module are forwarded to the hardware keypad via: • Host to board controller
• Board’s ARM CPU • Board’s FPGA
! Response forwarded back
![Page 44: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/44.jpg)
87
! Main execution on host ! SystemC transaction “poll keyboard”
• Sent to router1 • Routed through router2 and router3 • Converted to hardware asynchronous channel
transaction
Hw-Sw Sync-Async Cosimulation
! Verilog keyboard_if: • Synchronous
implementation • Asynchronous
interface
88
Demo Contents
Frame Grabber
Keypad
Image Processor
Video Output
4. Processor and output moved to hardware Based on re-usable open-source cores
![Page 45: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/45.jpg)
89
Open-source IP Re-use
! IP re-use from www.opencores.org • Video output
– VGA/LCD Controller
• Keypad scanner – Keypad Scanner
• Frame grabber – Hand-made component
! Opencores components use Wishbone interface
90
Final refinement to hardware
! Definition of ports at pin level ! Verilog implementations of modules ! All modules moved to FPGA
![Page 46: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/46.jpg)
91
Hands-on Step 10: IP Re-use
! Open and inspect tutorial_final_1.asip.xml
! This project illustrates how the cores from opencores.org were imported and connected together in a synchronous way (1 clock domain) with Wishbone interconnect
92
Hands-on Step 11: Integration in existing frameworks
! Launch Simulation • Environment is setup to demonstrate
interactive use of ISE within AsipIDE compilation/synthesis flow
• Instead of compiling and reporting errors in AsipIDE, designers can debug the Verilog inside ISE while other compilation branches (ARM ASM, SystemC, …) follow their own tool flows
![Page 47: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/47.jpg)
93
Hands-on Step 12: Assisted GALS design
! Open and inspect tutorial_final_2.asip.xml
! This project illustrates “assisted GALS design” • Same cores from opencores.org
• Wrapped by AsipIDE with GALS interfaces
• Can serve to bootstrap GALS project or to learn about GALS
94
Quick Peek
! Feature coming soon: Embedded visualisation of HDL • E.g. Verilog components will show their
inner synthesised netlist • Trace file events will be animated on the
netlist in the GUI • Multiple languages visualised
simultaneously
![Page 48: ASYNC2010 - ASIPIDE Tutorialapt.cs.manchester.ac.uk/projects/tools/asipide/demo_download/ASY… · Bringing together GALS design and open-source tools in a hardware-software-FPGA](https://reader033.vdocuments.us/reader033/viewer/2022060212/5f04f3367e708231d4108371/html5/thumbnails/48.jpg)
95
Thank You!
AsipIDE Tutorial