From 39741b0e19853176cf823b1fad75ba5ac46a837c Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Tue, 17 Feb 2026 13:37:42 -0600 Subject: [PATCH 1/5] move WriteTar check to write_hls and align Catapult behavior --- hls4ml/backends/catapult/catapult_backend.py | 4 ++++ hls4ml/writer/catapult_writer.py | 15 ++++++++------- hls4ml/writer/libero_writer.py | 15 +++++++-------- hls4ml/writer/oneapi_writer.py | 16 ++++++++-------- hls4ml/writer/quartus_writer.py | 16 ++++++++-------- hls4ml/writer/symbolic_writer.py | 4 +++- hls4ml/writer/vitis_writer.py | 4 +++- hls4ml/writer/vivado_accelerator_writer.py | 10 ++++++---- hls4ml/writer/vivado_writer.py | 17 ++++++++--------- 9 files changed, 55 insertions(+), 46 deletions(-) diff --git a/hls4ml/backends/catapult/catapult_backend.py b/hls4ml/backends/catapult/catapult_backend.py index 5b493cd944..8ee06fb4a1 100644 --- a/hls4ml/backends/catapult/catapult_backend.py +++ b/hls4ml/backends/catapult/catapult_backend.py @@ -195,6 +195,7 @@ def create_initial_config( fifo=None, clock_period=5, io_type='io_parallel', + write_tar=False, ): config = {} @@ -206,6 +207,9 @@ def create_initial_config( config['ClockPeriod'] = clock_period config['FIFO'] = fifo config['IOType'] = io_type + config['WriterConfig'] = { + 'WriteTar': write_tar, + } config['HLSConfig'] = {} return config diff --git a/hls4ml/writer/catapult_writer.py b/hls4ml/writer/catapult_writer.py index ba7e511995..520b424e02 100755 --- a/hls4ml/writer/catapult_writer.py +++ b/hls4ml/writer/catapult_writer.py @@ -892,12 +892,11 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ - - if not os.path.exists(model.config.get_output_dir() + '.tar.gz'): - with tarfile.open(model.config.get_output_dir() + '.tar.gz', mode='w:gz') as archive: - archive.add(model.config.get_output_dir(), recursive=True) - else: - print('Project .tar.gz archive already exists') + tar_path = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tar_path): + os.remove(tar_path) + with tarfile.open(tar_path, mode='w:gz') as archive: + archive.add(model.config.get_output_dir(), recursive=True, arcname='') def write_hls(self, model): self.write_output_dir(model) @@ -912,4 +911,6 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) diff --git a/hls4ml/writer/libero_writer.py b/hls4ml/writer/libero_writer.py index a5be68c81e..b46c973ec6 100644 --- a/hls4ml/writer/libero_writer.py +++ b/hls4ml/writer/libero_writer.py @@ -884,13 +884,10 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ - - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - tar_path = Path(model.config.get_output_dir() + '.tar.gz') - tar_path.unlink(missing_ok=True) - with tarfile.open(tar_path, mode='w:gz') as archive: - archive.add(model.config.get_output_dir(), recursive=True, arcname='') + tar_path = Path(model.config.get_output_dir() + '.tar.gz') + tar_path.unlink(missing_ok=True) + with tarfile.open(tar_path, mode='w:gz') as archive: + archive.add(model.config.get_output_dir(), recursive=True, arcname='') def write_hls(self, model): print('Writing HLS project') @@ -906,5 +903,7 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) print('Done') diff --git a/hls4ml/writer/oneapi_writer.py b/hls4ml/writer/oneapi_writer.py index 3c0a778c50..6d37b53327 100644 --- a/hls4ml/writer/oneapi_writer.py +++ b/hls4ml/writer/oneapi_writer.py @@ -971,13 +971,11 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ - - if model.config.get_writer_config().get('WriteTar', False): - tar_path = model.config.get_output_dir() + '.tar.gz' - if os.path.exists(tar_path): - os.remove(tar_path) - with tarfile.open(model.config.get_output_dir() + '.tar.gz', mode='w:gz') as archive: - archive.add(model.config.get_output_dir(), recursive=True) + tar_path = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tar_path): + os.remove(tar_path) + with tarfile.open(tar_path, mode='w:gz') as archive: + archive.add(model.config.get_output_dir(), recursive=True) def write_hls(self, model): self.write_project_dir(model) @@ -993,4 +991,6 @@ def write_hls(self, model): self.write_activation_tables(model) self.write_generated_code(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) diff --git a/hls4ml/writer/quartus_writer.py b/hls4ml/writer/quartus_writer.py index e0d6338ac3..c0922ca979 100644 --- a/hls4ml/writer/quartus_writer.py +++ b/hls4ml/writer/quartus_writer.py @@ -1330,13 +1330,11 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ - - if model.config.get_writer_config().get('WriteTar', False): - tar_path = model.config.get_output_dir() + '.tar.gz' - if os.path.exists(tar_path): - os.remove(tar_path) - with tarfile.open(model.config.get_output_dir() + '.tar.gz', mode='w:gz') as archive: - archive.add(model.config.get_output_dir(), recursive=True) + tar_path = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tar_path): + os.remove(tar_path) + with tarfile.open(tar_path, mode='w:gz') as archive: + archive.add(model.config.get_output_dir(), recursive=True) def write_hls(self, model): self.write_project_dir(model) @@ -1351,4 +1349,6 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_activation_tables(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) diff --git a/hls4ml/writer/symbolic_writer.py b/hls4ml/writer/symbolic_writer.py index 0ade2d46ca..06b2887404 100644 --- a/hls4ml/writer/symbolic_writer.py +++ b/hls4ml/writer/symbolic_writer.py @@ -114,4 +114,6 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) diff --git a/hls4ml/writer/vitis_writer.py b/hls4ml/writer/vitis_writer.py index 505e87b6e9..d6bdbd6ab4 100644 --- a/hls4ml/writer/vitis_writer.py +++ b/hls4ml/writer/vitis_writer.py @@ -73,4 +73,6 @@ def write_hls(self, model): self.write_board_script_override(model) self.write_build_prj_override(model) self.write_build_opts(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) diff --git a/hls4ml/writer/vivado_accelerator_writer.py b/hls4ml/writer/vivado_accelerator_writer.py index 7557eee019..7bc9cdd35b 100644 --- a/hls4ml/writer/vivado_accelerator_writer.py +++ b/hls4ml/writer/vivado_accelerator_writer.py @@ -405,10 +405,12 @@ def write_driver(self, model): ) def write_new_tar(self, model): - tarfile = model.config.get_output_dir() + '.tar.gz' - if os.path.exists(tarfile): - os.remove(tarfile) - super().write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + tarfile = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tarfile): + os.remove(tarfile) + super().write_tar(model) def write_hls(self, model): """ diff --git a/hls4ml/writer/vivado_writer.py b/hls4ml/writer/vivado_writer.py index dc5556cb33..3a0436ae1a 100644 --- a/hls4ml/writer/vivado_writer.py +++ b/hls4ml/writer/vivado_writer.py @@ -1112,14 +1112,11 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ - - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - tar_path = model.config.get_output_dir() + '.tar.gz' - if os.path.exists(tar_path): - os.remove(tar_path) - with tarfile.open(tar_path, mode='w:gz') as archive: - archive.add(model.config.get_output_dir(), recursive=True, arcname='') + tar_path = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tar_path): + os.remove(tar_path) + with tarfile.open(tar_path, mode='w:gz') as archive: + archive.add(model.config.get_output_dir(), recursive=True, arcname='') def write_hls(self, model, is_multigraph=False): if not is_multigraph: @@ -1135,7 +1132,9 @@ def write_hls(self, model, is_multigraph=False): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - self.write_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_tar(model) else: self.write_project_dir(model) self.write_build_script_multigraph(model) From bd2f33fc97a1ca3c4db15e119ecdf63a033a2541 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Tue, 17 Feb 2026 15:53:45 -0600 Subject: [PATCH 2/5] test_writer_config:test_write_tar include Catapult backend --- test/pytest/test_writer_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pytest/test_writer_config.py b/test/pytest/test_writer_config.py index 90e35e056e..74a32e5ce4 100644 --- a/test/pytest/test_writer_config.py +++ b/test/pytest/test_writer_config.py @@ -42,7 +42,7 @@ def test_emulator(test_case_id, keras_model, io_type, backend): hls_model.compile() # It's enough that the model compiles -@pytest.mark.parametrize('backend', ['Vivado', 'Vitis']) # No Quartus for now +@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Catapult']) # No Quartus for now @pytest.mark.parametrize('write_tar', [True, False]) def test_write_tar(test_case_id, keras_model, write_tar, backend): config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name') From ebd2fd56b0746cfe411c16983bf5c4892165b755 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Tue, 17 Feb 2026 16:28:21 -0600 Subject: [PATCH 3/5] fix write_tar for VivadoAccelerator --- .../vivado_accelerator_backend.py | 9 ++++++++- hls4ml/writer/vivado_accelerator_writer.py | 14 +++++++------- test/pytest/test_writer_config.py | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/hls4ml/backends/vivado_accelerator/vivado_accelerator_backend.py b/hls4ml/backends/vivado_accelerator/vivado_accelerator_backend.py index 128a8a8345..6bb4ed1200 100644 --- a/hls4ml/backends/vivado_accelerator/vivado_accelerator_backend.py +++ b/hls4ml/backends/vivado_accelerator/vivado_accelerator_backend.py @@ -102,6 +102,7 @@ def create_initial_config( clock_period=5, clock_uncertainty='12.5%', io_type='io_parallel', + write_tar=False, interface='axi_stream', driver='python', input_type='float', @@ -131,7 +132,13 @@ def create_initial_config( populated config """ board = board if board is not None else 'pynq-z2' - config = super().create_initial_config(part, clock_period, clock_uncertainty, io_type) + config = super().create_initial_config( + part=part, + clock_period=clock_period, + clock_uncertainty=clock_uncertainty, + io_type=io_type, + write_tar=write_tar, + ) config['AcceleratorConfig'] = {} config['AcceleratorConfig']['Board'] = board config['AcceleratorConfig']['Interface'] = interface # axi_stream, axi_master, axi_lite diff --git a/hls4ml/writer/vivado_accelerator_writer.py b/hls4ml/writer/vivado_accelerator_writer.py index 7bc9cdd35b..9afcc46b28 100644 --- a/hls4ml/writer/vivado_accelerator_writer.py +++ b/hls4ml/writer/vivado_accelerator_writer.py @@ -405,12 +405,10 @@ def write_driver(self, model): ) def write_new_tar(self, model): - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - tarfile = model.config.get_output_dir() + '.tar.gz' - if os.path.exists(tarfile): - os.remove(tarfile) - super().write_tar(model) + tarfile = model.config.get_output_dir() + '.tar.gz' + if os.path.exists(tarfile): + os.remove(tarfile) + super().write_tar(model) def write_hls(self, model): """ @@ -428,4 +426,6 @@ def write_hls(self, model): self.write_wrapper_test(model) self.write_axi_wrapper(model) self.modify_build_script(model) - self.write_new_tar(model) + write_tar = model.config.get_writer_config().get('WriteTar', False) + if write_tar: + self.write_new_tar(model) diff --git a/test/pytest/test_writer_config.py b/test/pytest/test_writer_config.py index 74a32e5ce4..6a5df26dae 100644 --- a/test/pytest/test_writer_config.py +++ b/test/pytest/test_writer_config.py @@ -42,7 +42,7 @@ def test_emulator(test_case_id, keras_model, io_type, backend): hls_model.compile() # It's enough that the model compiles -@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Catapult']) # No Quartus for now +@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Catapult', 'VivadoAccelerator']) # No Quartus for now @pytest.mark.parametrize('write_tar', [True, False]) def test_write_tar(test_case_id, keras_model, write_tar, backend): config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name') From e77010f1f4996e79c23b4ad570f3219dbbd45a10 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Mon, 2 Mar 2026 16:41:12 -0600 Subject: [PATCH 4/5] writer: restore write_tar semantics and add env override --- hls4ml/writer/catapult_writer.py | 6 ++--- hls4ml/writer/libero_writer.py | 6 ++--- hls4ml/writer/oneapi_writer.py | 6 ++--- hls4ml/writer/quartus_writer.py | 6 ++--- hls4ml/writer/symbolic_writer.py | 4 +-- hls4ml/writer/vitis_writer.py | 4 +-- hls4ml/writer/vivado_accelerator_writer.py | 6 ++--- hls4ml/writer/vivado_writer.py | 6 ++--- hls4ml/writer/writers.py | 11 ++++++++ test/pytest/test_writer_config.py | 29 ++++++++++++++++++++-- 10 files changed, 58 insertions(+), 26 deletions(-) diff --git a/hls4ml/writer/catapult_writer.py b/hls4ml/writer/catapult_writer.py index 520b424e02..6b32357f4d 100755 --- a/hls4ml/writer/catapult_writer.py +++ b/hls4ml/writer/catapult_writer.py @@ -892,6 +892,8 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ + if not self.should_write_tar(model): + return tar_path = model.config.get_output_dir() + '.tar.gz' if os.path.exists(tar_path): os.remove(tar_path) @@ -911,6 +913,4 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) diff --git a/hls4ml/writer/libero_writer.py b/hls4ml/writer/libero_writer.py index b46c973ec6..c3c6a1b56a 100644 --- a/hls4ml/writer/libero_writer.py +++ b/hls4ml/writer/libero_writer.py @@ -884,6 +884,8 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ + if not self.should_write_tar(model): + return tar_path = Path(model.config.get_output_dir() + '.tar.gz') tar_path.unlink(missing_ok=True) with tarfile.open(tar_path, mode='w:gz') as archive: @@ -903,7 +905,5 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) print('Done') diff --git a/hls4ml/writer/oneapi_writer.py b/hls4ml/writer/oneapi_writer.py index 6d37b53327..87ee1df2eb 100644 --- a/hls4ml/writer/oneapi_writer.py +++ b/hls4ml/writer/oneapi_writer.py @@ -971,6 +971,8 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ + if not self.should_write_tar(model): + return tar_path = model.config.get_output_dir() + '.tar.gz' if os.path.exists(tar_path): os.remove(tar_path) @@ -991,6 +993,4 @@ def write_hls(self, model): self.write_activation_tables(model) self.write_generated_code(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) diff --git a/hls4ml/writer/quartus_writer.py b/hls4ml/writer/quartus_writer.py index c0922ca979..c23e49da62 100644 --- a/hls4ml/writer/quartus_writer.py +++ b/hls4ml/writer/quartus_writer.py @@ -1330,6 +1330,8 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ + if not self.should_write_tar(model): + return tar_path = model.config.get_output_dir() + '.tar.gz' if os.path.exists(tar_path): os.remove(tar_path) @@ -1349,6 +1351,4 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_activation_tables(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) diff --git a/hls4ml/writer/symbolic_writer.py b/hls4ml/writer/symbolic_writer.py index 06b2887404..0ade2d46ca 100644 --- a/hls4ml/writer/symbolic_writer.py +++ b/hls4ml/writer/symbolic_writer.py @@ -114,6 +114,4 @@ def write_hls(self, model): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) diff --git a/hls4ml/writer/vitis_writer.py b/hls4ml/writer/vitis_writer.py index d6bdbd6ab4..505e87b6e9 100644 --- a/hls4ml/writer/vitis_writer.py +++ b/hls4ml/writer/vitis_writer.py @@ -73,6 +73,4 @@ def write_hls(self, model): self.write_board_script_override(model) self.write_build_prj_override(model) self.write_build_opts(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) diff --git a/hls4ml/writer/vivado_accelerator_writer.py b/hls4ml/writer/vivado_accelerator_writer.py index 9afcc46b28..e6a2a744d3 100644 --- a/hls4ml/writer/vivado_accelerator_writer.py +++ b/hls4ml/writer/vivado_accelerator_writer.py @@ -405,6 +405,8 @@ def write_driver(self, model): ) def write_new_tar(self, model): + if not self.should_write_tar(model): + return tarfile = model.config.get_output_dir() + '.tar.gz' if os.path.exists(tarfile): os.remove(tarfile) @@ -426,6 +428,4 @@ def write_hls(self, model): self.write_wrapper_test(model) self.write_axi_wrapper(model) self.modify_build_script(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_new_tar(model) + self.write_new_tar(model) diff --git a/hls4ml/writer/vivado_writer.py b/hls4ml/writer/vivado_writer.py index 3a0436ae1a..7fdb7478f6 100644 --- a/hls4ml/writer/vivado_writer.py +++ b/hls4ml/writer/vivado_writer.py @@ -1112,6 +1112,8 @@ def write_tar(self, model): Args: model (ModelGraph): the hls4ml model. """ + if not self.should_write_tar(model): + return tar_path = model.config.get_output_dir() + '.tar.gz' if os.path.exists(tar_path): os.remove(tar_path) @@ -1132,9 +1134,7 @@ def write_hls(self, model, is_multigraph=False): self.write_nnet_utils(model) self.write_generated_code(model) self.write_yml(model) - write_tar = model.config.get_writer_config().get('WriteTar', False) - if write_tar: - self.write_tar(model) + self.write_tar(model) else: self.write_project_dir(model) self.write_build_script_multigraph(model) diff --git a/hls4ml/writer/writers.py b/hls4ml/writer/writers.py index 54caec1d11..3b8b752d80 100644 --- a/hls4ml/writer/writers.py +++ b/hls4ml/writer/writers.py @@ -1,7 +1,18 @@ +import os + +WRITE_TAR_ENV_VAR = 'HLS4ML_WRITE_TAR' + + class Writer: def __init__(self): pass + def should_write_tar(self, model): + write_tar_config = model.config.get_writer_config().get('WriteTar', False) + env_value = os.environ.get(WRITE_TAR_ENV_VAR, '') + write_tar_env = env_value.strip().lower() in {'1', 'true'} + return write_tar_config or write_tar_env + def write_hls(self, model): raise NotImplementedError diff --git a/test/pytest/test_writer_config.py b/test/pytest/test_writer_config.py index 6a5df26dae..86dfc208b2 100644 --- a/test/pytest/test_writer_config.py +++ b/test/pytest/test_writer_config.py @@ -42,10 +42,10 @@ def test_emulator(test_case_id, keras_model, io_type, backend): hls_model.compile() # It's enough that the model compiles -@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Catapult', 'VivadoAccelerator']) # No Quartus for now +@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Quartus', 'Catapult', 'oneAPI', 'VivadoAccelerator']) @pytest.mark.parametrize('write_tar', [True, False]) def test_write_tar(test_case_id, keras_model, write_tar, backend): - config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name') + config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name', backend=backend) odir = str(test_root_path / test_case_id) if os.path.exists(odir + '.tar.gz'): @@ -60,6 +60,31 @@ def test_write_tar(test_case_id, keras_model, write_tar, backend): assert tar_written == write_tar +@pytest.mark.parametrize('backend', ['Vivado', 'Vitis', 'Quartus', 'Catapult', 'oneAPI', 'VivadoAccelerator']) +@pytest.mark.parametrize( + 'env_write_tar, expected_tar', + [ + ('false', False), + ('1', True), + ], +) +def test_write_tar_env_override(test_case_id, keras_model, backend, monkeypatch, env_write_tar, expected_tar): + config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name', backend=backend) + odir = str(test_root_path / test_case_id) + + if os.path.exists(odir + '.tar.gz'): + os.remove(odir + '.tar.gz') + + monkeypatch.setenv('HLS4ML_WRITE_TAR', env_write_tar) + hls_model = hls4ml.converters.convert_from_keras_model( + keras_model, hls_config=config, output_dir=odir, backend=backend, write_tar=False + ) + hls_model.write() + + tar_written = os.path.exists(odir + '.tar.gz') + assert tar_written == expected_tar + + @pytest.mark.parametrize('backend', ['Vivado', 'Vitis']) # No Quartus for now @pytest.mark.parametrize('write_weights_txt', [True, False]) def test_write_weights_txt(test_case_id, keras_model, write_weights_txt, backend): From 1f4f187b65d5d007951fc1c6ef9f1e48707778fd Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Wed, 4 Mar 2026 10:21:48 -0600 Subject: [PATCH 5/5] test: add explicit ids for write_tar env override parametrization --- test/pytest/test_writer_config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/pytest/test_writer_config.py b/test/pytest/test_writer_config.py index 86dfc208b2..d04655d6c4 100644 --- a/test/pytest/test_writer_config.py +++ b/test/pytest/test_writer_config.py @@ -67,6 +67,7 @@ def test_write_tar(test_case_id, keras_model, write_tar, backend): ('false', False), ('1', True), ], + ids=['write_tar_env_false', 'write_tar_env_true'], ) def test_write_tar_env_override(test_case_id, keras_model, backend, monkeypatch, env_write_tar, expected_tar): config = hls4ml.utils.config_from_keras_model(keras_model, granularity='name', backend=backend)