Skip to content

Commit e53ec9c

Browse files
committed
Fix incorrect BRAM reporting (fastmachinelearning#798)
1 parent b4bf24e commit e53ec9c

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

hls4ml/templates/vivado/build_prj.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,15 +236,15 @@ if {$opt(export)} {
236236

237237
if {$opt(vsynth)} {
238238
puts "***** VIVADO SYNTHESIS *****"
239-
if {[file exist ${project_name}_prj/solution1/syn/vhdl]} {
239+
if {[file exist ${project_name}_prj/solution1/syn/verilog]} {
240240
set time_start [clock clicks -milliseconds]
241241
exec vivado -mode batch -source vivado_synth.tcl >@ stdout
242242
set time_end [clock clicks -milliseconds]
243243
report_time "VIVADO SYNTHESIS" $time_start $time_end
244244
} else {
245-
puts "ERROR: Cannot find generated VHDL files. Did you run C synthesis?"
245+
puts "ERROR: Cannot find generated Verilog files. Did you run C synthesis?"
246246
exit 1
247247
}
248248
}
249249

250-
exit
250+
exit

hls4ml/templates/vivado/nnet_utils/nnet_dense_resource.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@ void dense_resource_rf_leq_nin(data_T data[CONFIG_T::n_in], res_T res[CONFIG_T::
2626
assert((multiplier_limit == block_factor) && "This function is correct only for RF <= N_IN");
2727

2828
#pragma HLS function_instantiate variable=weights,biases
29-
//#pragma HLS RESOURCE variable=weights core=RAM_2P_BRAM Commenting out the deisgnation HLS seems to choose correctly
3029
#pragma HLS ARRAY_RESHAPE variable=weights block factor=block_factor
3130
#pragma HLS ARRAY_PARTITION variable=biases complete
3231

32+
if (CONFIG_T::reuse_factor > 1) {
33+
#pragma HLS RESOURCE variable=weights core=ROM_nP_BRAM
34+
}
35+
3336
typename CONFIG_T::accum_t acc[CONFIG_T::n_out];
3437
#pragma HLS ARRAY_PARTITION variable=acc complete
3538

@@ -97,10 +100,13 @@ void dense_resource_rf_gt_nin_rem0(data_T data[CONFIG_T::n_in], res_T res[CONFIG
97100
assert((rufactor > nin && rufactor % nin == 0) && "This function is correct only for RF > N_IN && RF % N_IN == 0");
98101

99102
#pragma HLS function_instantiate variable=weights,biases
100-
//#pragma HLS RESOURCE variable=weights core=RAM_2P_BRAM Commenting out the deisgnation HLS seems to choose correctly
101103
#pragma HLS ARRAY_RESHAPE variable=weights block factor=block_factor
102104
#pragma HLS ARRAY_PARTITION variable=biases complete
103105

106+
if (CONFIG_T::reuse_factor > 1) {
107+
#pragma HLS RESOURCE variable=weights core=ROM_nP_BRAM
108+
}
109+
104110
typename CONFIG_T::accum_t acc[CONFIG_T::n_out];
105111
#pragma HLS ARRAY_PARTITION variable=acc complete
106112

@@ -176,10 +182,13 @@ void dense_resource_rf_gt_nin(data_T data[CONFIG_T::n_in], res_T res[CONFIG_T::n
176182
assert((rufactor > nin) && "This function is correct only for RF > N_IN");
177183

178184
#pragma HLS function_instantiate variable=weights,biases
179-
//#pragma HLS RESOURCE variable=weights core=RAM_2P_BRAM Commenting out the deisgnation HLS seems to choose correctly
180185
#pragma HLS ARRAY_RESHAPE variable=weights block factor=block_factor
181186
#pragma HLS ARRAY_PARTITION variable=biases complete
182187

188+
if (CONFIG_T::reuse_factor > 1) {
189+
#pragma HLS RESOURCE variable=weights core=ROM_nP_BRAM
190+
}
191+
183192
typename CONFIG_T::accum_t acc[CONFIG_T::n_out];
184193
#pragma HLS ARRAY_PARTITION variable=acc complete
185194

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set tcldir [file dirname [info script]]
22
source [file join $tcldir project.tcl]
33

4-
add_files ${project_name}_prj/solution1/syn/vhdl
4+
add_files ${project_name}_prj/solution1/syn/verilog
55
synth_design -top ${project_name} -part $part
6-
report_utilization -file vivado_synth.rpt
6+
report_utilization -file vivado_synth.rpt

0 commit comments

Comments
 (0)