Skip to content

Commit a3f134f

Browse files
GiuseppeDiGuglielmojmduarte
authored andcommitted
Weights at the interface for VivadoAccelerator backend with AXI master interface
1 parent 57585cb commit a3f134f

File tree

5 files changed

+12
-6
lines changed

5 files changed

+12
-6
lines changed

hls4ml/backends/vivado_accelerator/supported_boards.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"pynq-z2": {
33
"part": "xc7z020clg400-1",
4-
"tcl_scripts": {"axi_lite": "axi_lite_design.tcl", "axi_stream": "axi_stream_design.tcl"},
5-
"python_drivers": {"axi_stream": "axi_stream_driver.py"},
4+
"tcl_scripts": {"axi_lite": "axi_lite_design.tcl", "axi_stream": "axi_stream_design.tcl", "axi_master": "axi_master_design.tcl"},
5+
"python_drivers": {"axi_stream": "axi_stream_driver.py", "axi_master": "axi_master_driver.py"},
66
"c_drivers": {}
77
},
88
"zcu102": {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
print('This is a placeholder!')
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
puts("This is a placeholder!")

hls4ml/writer/vivado_accelerator_writer.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,15 @@ def write_axi_wrapper(self, model):
8282

8383
io_type = model.config.get_config_value("IOType")
8484

85+
model_brams = [var for var in model.get_weight_variables() if var.storage.lower() == 'bram']
86+
8587
for line in f.readlines():
8688
if 'void myproject(' in line:
8789
newline = 'void {}_axi(\n'.format(model.config.get_project_name())
8890
elif '//hls-fpga-machine-learning insert include' in line:
8991
newline = '#include "{}_axi.h"\n'.format(model.config.get_project_name())
92+
for b in model_brams:
93+
newline += '#include "weights/{}.h"\n'.format(b.name)
9094
elif '//hls-fpga-machine-learning insert local vars' in line:
9195
newline = ''
9296
if self.vivado_accelerator_config.get_interface() == 'axi_stream':
@@ -102,8 +106,8 @@ def write_axi_wrapper(self, model):
102106
newline += indent + '#pragma HLS STREAM variable=out_local depth={}\n'\
103107
.format(model.get_output_variables()[0].pragma[1])
104108
elif '//hls-fpga-machine-learning insert call' in line:
105-
newline = indent + '{}(in_local, out_local);\n'.format(
106-
model.config.get_project_name())
109+
brams_str = (''.join([', ' + b.name for b in model_brams])) if len(model_brams) > 0 else "";
110+
newline = indent + '{}(in_local, out_local{});\n'.format(model.config.get_project_name(), brams_str)
107111
elif '//hls-fpga-machine-learning insert interface' in line:
108112
if self.vivado_accelerator_config.get_interface() == 'axi_lite':
109113
newline = ''

hls4ml/writer/vivado_writer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ def print_array_to_cpp(self, var, odir, write_txt_file=True):
3737

3838
if write_txt_file:
3939
h_file.write("#ifndef __SYNTHESIS__\n")
40-
h_file.write(var.definition_cpp() + ";\n")
40+
h_file.write("static " + var.definition_cpp() + ";\n")
4141
h_file.write("#else\n")
4242

43-
h_file.write(var.definition_cpp() + " = {")
43+
h_file.write("static " + var.definition_cpp() + " = {")
4444

4545
#fill c++ array.
4646
#not including internal brackets for multidimensional case

0 commit comments

Comments
 (0)