You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+64-38Lines changed: 64 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,73 +1,106 @@
1
1
PyCoRAM
2
2
==============================
3
-
Python-based Implementation of CoRAM Memory Architecture with a Python-to-Verilog High-Level Synthesis Compiler for AXI4 Interconnections
4
3
5
-
Copyright (C) 2014, Shinya Takamaeda-Yamazaki
4
+
Python-based Portable IP-core Synthesis Framework for FPGA-based Computing
5
+
6
+
Copyright (C) 2013, Shinya Takamaeda-Yamazaki
6
7
7
8
E-mail: shinya\_at\_is.naist.jp
8
9
9
10
10
11
License
11
12
==============================
13
+
12
14
Apache License 2.0
13
15
(http://www.apache.org/licenses/LICENSE-2.0)
14
16
15
17
16
18
What's PyCoRAM?
17
19
==============================
18
20
19
-
PyCoRAM is a Python-based Implementation of CoRAM (Connected RAM) Memory Architecture.
20
-
PyCoRAM generates AXI4 IP-core design from your computing kernel logic and memory access pattern descriptions in Python.
21
-
The generated IP-core can be used as a standard IP-core with other common IP-cores together on vendor-provided EDK.
22
-
PyCoRAM includes a Verilog-to-Verilog design translator and a Python-to-Verilog high-level synthesis compiler to generate a control logic of memory operations.
21
+
PyCoRAM is a Python-based portable IP-core synthesis framework with CoRAM (Connected RAM) memory architecture.
22
+
23
+
PyCoRAM framework generates a portable IP-core package from computing logic descriptions in Verilog HDL and memory access pattern descriptions in Python.
24
+
Designers can easily build an FPGA-based custom accelerator using a generated IP-core with any common IP-cores on vendor-provided EDA tools.
25
+
PyCoRAM framework includes (1) the Verilog-to-Verilog design translation compiler and (2) the Python-to-Verilog high-level synthesis (HLS) compiler for generating control circuits of memory operations.
23
26
24
-
PyCoRAM differs in some points from the original soft-logic implementation of CoRAM on existing FPGAs.
27
+
There are some major differences between PyCoRAM and the original soft-logic implementation of CoRAM.
25
28
26
29
* Memory access pattern representation in Python
27
-
- The original CoRAM uses C to represent a memory access pattern (control thread). In PyCoRAM, you can describe in easier way using popular scripting language.
28
-
- The Python script of memory access pattern is translated into hardware design of Verilog HDL by a Python-to-Verilog high-level synthesis compiler.
29
-
* AMBA AXI4 Interconnection Support
30
-
- The original CoRAM uses CONNECT to generate an on-chip interconnect. PyCoRAM compiler generates IP-core design for AXI4 interconnection from you computing kernel logic. AMBA AXI4 is standard interconnection architecture supported in various environments.
30
+
- The original CoRAM uses C language to represent a memory access pattern (called 'control thread').
31
+
- In PyCoRAM, you can easily describe them by using popular lightweight scripting language.
32
+
- A Python script of memory access patterns is translated into an RT-level hardware design in Verilog HDL by the Python-to-Verilog high-level synthesis compiler.
33
+
* Commercial interconnect supports (AMBA AXI4 and Altera Avalon)
34
+
- The original CoRAM uses CONNECT to generate an on-chip interconnect.
35
+
- PyCoRAM compiler generates a IP-core design with AMBA AXI4 or Altera Avalon. Both are commonly used on vendor-provided EDA tools.
31
36
* Parameterized RTL Design Support
32
-
- The original CoRAM has some limitations in description of computing kernel logic. PyCoRAM has a sophisticated RTL analyzer to translate your logic design into suitable design for PyCoRAM.
33
-
37
+
- The original CoRAM has some limitations in Verilog HDL description of computing logic, such as no supports of generate statement.
38
+
- PyCoRAM has a sophisticated RTL analyzer/translator to convert RTL descriptions into synthesizable IP-core package under memory abstractions of CoRAM.
If you want to use PyCoRAM as a general library, you can install on your environment by using setup.py.
82
+
83
+
If Python 2.7 is used,
84
+
85
+
python setup.py install
86
+
87
+
If Python 3.x is used,
88
+
89
+
python3 setup.py install
90
+
91
+
Then you can use the pycoram command from your console.
92
+
93
+
pycoram-0.9.0-py3.4.1
65
94
66
95
67
96
Getting Started
68
97
==============================
69
98
70
-
You can find the sample input projects in 'input/tests/single\_memory'.
99
+
First, please check 'base.mk' in 'sample'. If you use the installed pycoram command on your environment, please modify 'TARGET' in base.mk as below (the version number depends on your environment)
100
+
101
+
TARGET=pycoram-0.9.0-py2.7.0
102
+
103
+
You can find the sample projects in 'sample/tests/single\_memory'.
71
104
72
105
* ctrl\_thread.py : Control-thread definition in Python
73
106
* userlogic.v : User-defined Verilog code using CoRAM memory blocks
@@ -79,7 +112,7 @@ Then type 'make' and 'make run' to simulate sample system.
0 commit comments