Skip to content

Commit fca966f

Browse files
Merge pull request #1 from alex-yang-upenn/merge
Merging changes from separate Vitis Accelerator backend branch
2 parents 9a68ddb + 26a26f7 commit fca966f

File tree

9 files changed

+17
-56
lines changed

9 files changed

+17
-56
lines changed

hls4ml/backends/__init__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22
from hls4ml.backends.fpga.fpga_backend import FPGABackend # noqa: F401
33
from hls4ml.backends.quartus.quartus_backend import QuartusBackend
44
from hls4ml.backends.symbolic.symbolic_backend import SymbolicExpressionBackend
5+
from hls4ml.backends.vitis_accelerator.vitis_accelerator_config import VitisAcceleratorConfig # noqa: F401
56
from hls4ml.backends.vivado.vivado_backend import VivadoBackend
67
from hls4ml.backends.vivado_accelerator.vivado_accelerator_backend import VivadoAcceleratorBackend
78
from hls4ml.backends.vivado_accelerator.vivado_accelerator_config import VivadoAcceleratorConfig # noqa: F401
89

910
from hls4ml.backends.vitis.vitis_backend import VitisBackend # isort: skip
11+
from hls4ml.backends.vitis_accelerator.vitis_accelerator_backend import VitisAcceleratorBackend # isort: skip
1012

11-
#[K] start
12-
from hls4ml.backends.vitis_accelerator.vitis_accelerator_backend import VitisAcceleratorBackend
13-
from hls4ml.backends.vitis_accelerator.vitis_accelerator_config import VitisAcceleratorConfig
14-
#[K] end
1513

1614
register_backend('Vivado', VivadoBackend)
1715
register_backend('VivadoAccelerator', VivadoAcceleratorBackend)
1816
register_backend('Vitis', VitisBackend)
19-
register_backend('VitisAccelerator', VitisAcceleratorBackend) #[K]
17+
register_backend('VitisAccelerator', VitisAcceleratorBackend)
2018
register_backend('Quartus', QuartusBackend)
2119
register_backend('SymbolicExpression', SymbolicExpressionBackend)

hls4ml/backends/vitis_accelerator/vitis_accelerator_backend.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
import os
2-
import sys
3-
4-
from hls4ml.backends import VitisBackend
5-
from hls4ml.backends import VivadoBackend
1+
from hls4ml.backends import VitisBackend, VivadoBackend
62
from hls4ml.model.flow import get_flow, register_flow
7-
from hls4ml.report import parse_vivado_report
83

94

105
class VitisAcceleratorBackend(VitisBackend):
@@ -63,4 +58,4 @@ def _register_flows(self):
6358
ip_flow_requirements.insert(ip_flow_requirements.index('vivado:init_layers'), validation_flow)
6459
ip_flow_requirements.insert(ip_flow_requirements.index('vivado:apply_templates'), template_flow)
6560

66-
self._default_flow = register_flow('ip', None, requires=ip_flow_requirements, backend=self.name)
61+
self._default_flow = register_flow('ip', None, requires=ip_flow_requirements, backend=self.name)

hls4ml/backends/vitis_accelerator/vitis_accelerator_config.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import json
22
import os
33

4-
import numpy as np
5-
6-
from hls4ml.model.layers import FixedPrecisionType, IntegerPrecisionType
7-
8-
94
class VitisAcceleratorConfig:
105
def __init__(self, config):
116
self.config = config.config

hls4ml/templates/vitis_accelerator/myproject_host_cl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void runFPGAHelper(FpgaObj<in_buffer_t, out_buffer_t> &fpga) {
2222
fpga.write_ss_safe(ss.str());
2323
}
2424

25-
int main(int argc, char** argv) {
25+
int main(int argc, char **argv) {
2626
if (argc != 2) {
2727
std::cout << "Usage: " << argv[0] << " <XCLBIN Filename>" << std::endl;
2828
return EXIT_FAILURE;

hls4ml/templates/vitis_accelerator/nnet_utils/nnet_types.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ template <typename T, unsigned N> struct array {
1919
const T &operator[](size_t pos) const { return data[pos]; }
2020

2121
array &operator=(const array &other) {
22-
// if (&other == this)
23-
// return *this;
22+
// if (&other == this)
23+
// return *this;
2424

2525
assert(N == other.size && "Array sizes must match.");
2626

hls4ml/writer/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from hls4ml.writer.quartus_writer import QuartusWriter
22
from hls4ml.writer.symbolic_writer import SymbolicExpressionWriter
3-
from hls4ml.writer.vitis_writer import VitisWriter
43
from hls4ml.writer.vitis_accelerator_writer import VitisAcceleratorWriter
4+
from hls4ml.writer.vitis_writer import VitisWriter
55
from hls4ml.writer.vivado_accelerator_writer import VivadoAcceleratorWriter
66
from hls4ml.writer.vivado_writer import VivadoWriter
77
from hls4ml.writer.writers import Writer, get_writer, register_writer # noqa: F401

hls4ml/writer/vitis_accelerator_writer.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import glob
21
import os
32
from shutil import copy, copytree
43

@@ -51,29 +50,8 @@ def write_parameters_overrides(self, model):
5150
fout.write(newline)
5251
f.close()
5352
fout.close()
54-
55-
def write_build_script_backend_override(self, model):
56-
# try:
57-
#
58-
## filedir = os.path.dirname(os.path.abspath(__file__))
59-
## writerspath = os.path.join(filedir, '../writer')
60-
## vitis_accelerator_writer_file = writerspath + "vitis_accelerator_writer.py"
61-
# with open(model.config.get_output_dir() + '/project.tcl', 'r') as file:
62-
# lines = file.readlines()
63-
# print("[K]\n")
64-
# print(lines)
65-
#
66-
# with open(model.config.get_output_dir() + '/project.tcl', 'r', 'w') as file:
67-
# print ('[K] overriding project.tcl')
68-
# for line in lines:
69-
# if 'backend' in line:
70-
# index = line.find('backend')
71-
# line = line[:index] + 'backend ' + 'vitisaccelerator' + '\n'
72-
# file.write(line)
73-
#
74-
# except FileNotFoundError:
75-
# print("File project.tcl not found.")
7653

54+
def write_build_script_backend_override(self, model):
7755
# project.tcl
7856
f = open(f'{model.config.get_output_dir()}/project.tcl', 'w')
7957
f.write('variable project_name\n')
@@ -276,7 +254,7 @@ def write_nnet_utils_overrides(self, model):
276254
srcpath = os.path.join(filedir, '../templates/vitis_accelerator/nnet_utils/')
277255
dstpath = f'{model.config.get_output_dir()}/firmware/nnet_utils/'
278256
copy(srcpath + "nnet_types.h", dstpath + "nnet_types.h")
279-
257+
280258
def write_hls(self, model):
281259
"""
282260
Write the HLS project. Calls the steps from VivadoWriter, adapted for Vitis

prj_backend_tests/hls4ml_setup.sh

Lines changed: 0 additions & 5 deletions
This file was deleted.

prj_backend_tests/tuto_vitis_stream.py renamed to vitis_accelerator_test/tuto_vitis_stream.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import hls4ml
2+
from hls4ml.backends import VitisAcceleratorConfig
23

34
# Fetch a keras model from our example repository
45
# This will download our example model to your working directory and return an example configuration file
56
config = hls4ml.utils.fetch_example_model('KERAS_3layer.json')
67

78
# You can print it to see some default parameters
8-
#print("[K] Print config:")
99
#print(config)
1010

1111
# Default config:
@@ -29,17 +29,17 @@
2929
config['OutputDir'] = 'prj_tuto_vitis_stream'
3030
config['ProjectName'] = 'PrjTutoVitisStream'
3131
config['Backend'] = 'VitisAccelerator'
32-
config['Part'] = 'xcvc1902-vsvd1760-2MP-e-S'
32+
config['Part'] = 'xcu50-fsvh2104-2-e'
3333
config['IOType'] = 'io_stream'
34+
config['AcceleratorConfig'] = {} # Initialize AcceleratorConfig as a dictionary
35+
config['AcceleratorConfig']['Platform'] = 'xilinx_u50_gen3x16_xdma_5_202210_1'
3436

35-
#print("[K] Print config after setting up backend:")
36-
#print(config)
37+
print("[K] Print config after setting up backend:")
38+
print(config)
3739

38-
#print("[K] Convert it to hls project")
3940
# Convert it to a hls project
4041
hls_model = hls4ml.converters.keras_to_hls(config)
4142

42-
#print("[K] Print full list of example model if you want to explore more")
4343
## Print full list of example model if you want to explore more
4444
#hls4ml.utils.fetch_example_list()
4545

0 commit comments

Comments
 (0)