From 1a6e3d5fc36cc31963d5b67f587261756b37f7cd Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Thu, 30 Nov 2023 21:44:29 +0530 Subject: [PATCH 1/8] improve logging --- riscv_config/checker.py | 48 ++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/riscv_config/checker.py b/riscv_config/checker.py index e7ce76a..2b7ff2c 100644 --- a/riscv_config/checker.py +++ b/riscv_config/checker.py @@ -1505,6 +1505,7 @@ def check_warl_legality(spec, logging = False): warlnodes = {} xlen = 64 if 64 in spec['supported_xlen'] else 32 for csrname, csrnode in spec.items(): + logger.debug(f'Checking legality of warl strings for csr: {csrname}') # don't perform any warl legality checks for uarch signal definitions. if csrname == 'uarch_signals': continue @@ -1723,9 +1724,6 @@ def check_debug_specs(debug_spec, isa_spec, and the second being the absolute path to the platform spec file. ''' - if logging: - logger.info('Input-Debug file') - foo1 = isa_spec foo = debug_spec schema = constants.debug_schema @@ -1735,24 +1733,24 @@ def check_debug_specs(debug_spec, isa_spec, """ # Load input YAML file if logging: - logger.info('Loading input file: ' + str(foo)) + logger.info('DebugCheck: Loading input Debug file: ' + str(foo)) master_inp_debug_yaml = utils.load_yaml(foo, no_anchors) # Load input YAML file if logging: - logger.info('Loading input isa file: ' + str(foo1)) + logger.info('DebugCheck: Loading input isa file for debug: ' + str(foo1)) master_inp_yaml = utils.load_yaml(foo1, no_anchors) isa_string = master_inp_yaml['hart0']['ISA'] # instantiate validator if logging: - logger.info('Load Schema ' + str(schema)) + logger.info('DebugCheck: Load Debug Schema ' + str(schema)) master_schema_yaml = utils.load_yaml(schema, no_anchors) outyaml = copy.deepcopy(master_inp_debug_yaml) for x in master_inp_debug_yaml['hart_ids']: if logging: - logger.info('Processing Hart: hart'+str(x)) + logger.info(f'DebugCheck: Processing Hart:{x}') inp_debug_yaml = master_inp_debug_yaml['hart'+str(x)] schema_yaml = add_debug_setters(master_schema_yaml['hart_schema']['schema']) #Extract xlen @@ -1765,13 +1763,13 @@ def check_debug_specs(debug_spec, isa_spec, # Perform Validation if logging: - logger.info('Initiating Validation') + logger.info(f'DebugCheck: Initiating Validation for hart:{x}') valid = validator.validate(normalized) # Print out errors if valid: if logging: - logger.info('No errors for Hart: '+str(x) + ' :)') + logger.info(f'DebugCheck: No errors for Hart:{x}') else: error_list = validator.errors raise ValidationError("Error in " + foo + ".", error_list) @@ -1779,7 +1777,7 @@ def check_debug_specs(debug_spec, isa_spec, normalized['ISA'] = isa_string if logging: - logger.info(f' Updating fields node for each CSR') + logger.info(f'DebugCheck: Updating fields node for each CSR in Hart:{x}') normalized = update_fields(normalized, logging) outyaml['hart'+str(x)] = trim(normalized) @@ -1790,7 +1788,7 @@ def check_debug_specs(debug_spec, isa_spec, dfile = output_filename outfile = open(output_filename, 'w') if logging: - logger.info('Dumping out Normalized Checked YAML: ' + output_filename) + logger.info('DebugCheck: Dumping out Normalized Checked YAML: ' + output_filename) utils.dump_yaml(outyaml, outfile, no_anchors ) return dfile @@ -1830,18 +1828,18 @@ def check_isa_specs(isa_spec, """ # Load input YAML file if logging: - logger.info('Loading input file: ' + str(foo)) + logger.info('ISACheck: Loading input file: ' + str(foo)) master_inp_yaml = utils.load_yaml(foo, no_anchors) # instantiate validator if logging: - logger.info('Load Schema ' + str(schema)) + logger.info('ISACheck: Load Schema ' + str(schema)) master_schema_yaml = utils.load_yaml(schema, no_anchors) outyaml = copy.deepcopy(master_inp_yaml) for x in master_inp_yaml['hart_ids']: if logging: - logger.info('Processing Hart: hart'+str(x)) + logger.info(f'ISACheck: Processing Hart:{x}') inp_yaml = master_inp_yaml['hart'+str(x)] schema_yaml = add_def_setters(master_schema_yaml['hart_schema']['schema']) schema_yaml = add_reset_setters(master_schema_yaml['hart_schema']['schema']) @@ -1855,18 +1853,18 @@ def check_isa_specs(isa_spec, # Perform Validation if logging: - logger.info('Initiating Validation') + logger.info(f'ISACheck: Initiating Validation for Hart:{x}') valid = validator.validate(normalized) # Print out errors if valid: if logging: - logger.info('No errors for Hart: '+str(x) + ' :)') + logger.info(f'ISACheck: No errors for Hart:{x}') else: error_list = validator.errors - raise ValidationError("Error in " + foo + ".", error_list) + raise ValidationError(f"ISACheck: Error in " + foo + ".", error_list) if logging: - logger.info(f' Updating fields node for each CSR') + logger.info(f'ISACheck: Updating fields node for each CSR in Hart:{x}') normalized = update_fields(normalized, logging) outyaml['hart'+str(x)] = trim(normalized) @@ -1877,7 +1875,7 @@ def check_isa_specs(isa_spec, ifile = output_filename outfile = open(output_filename, 'w') if logging: - logger.info('Dumping out Normalized Checked YAML: ' + output_filename) + logger.info('ISACheck: Dumping out Normalized Checked YAML: ' + output_filename) utils.dump_yaml(outyaml, outfile, no_anchors ) return ifile @@ -1911,7 +1909,7 @@ def check_custom_specs(custom_spec, # Load input YAML file if logging: - logger.info('Loading input file: ' + str(foo)) + logger.info('CustomCheck: Loading input file: ' + str(foo)) master_custom_yaml = utils.load_yaml(foo, no_anchors) schema_yaml = utils.load_yaml(constants.custom_schema, no_anchors) validator = schemaValidator(schema_yaml, xlen=[]) @@ -1921,12 +1919,12 @@ def check_custom_specs(custom_spec, normalized = {} for x in master_custom_yaml['hart_ids']: if logging: - logger.info('Processing Hart: hart'+str(x)) + logger.info(f'CustomCheck: Processing Hart:{x}') inp_yaml = master_custom_yaml['hart'+str(x)] valid = validator.validate(inp_yaml) if valid: if logging: - logger.info('No errors for Hart: '+str(x) + ' :)') + logger.info('CustomCheck: No errors for Hart:{x}') else: error_list = validator.errors raise ValidationError("Error in " + foo + ".", error_list) @@ -1942,7 +1940,7 @@ def check_custom_specs(custom_spec, cfile = output_filename outfile = open(output_filename, 'w') if logging: - logger.info('Dumping out Normalized Checked YAML: ' + output_filename) + logger.info('CustomCheck: Dumping out Normalized Checked YAML: ' + output_filename) utils.dump_yaml(outyaml, outfile, no_anchors ) return cfile @@ -2076,7 +2074,7 @@ def check_csr_specs(ispec=None, customspec=None, dspec=None, pspec=None, work_di for entry in hart_ids: csr_db = merged[entry] if logging: - logger.info("Initiating WARL legality checks.") + logger.info(f"Initiating WARL legality checks for hart:{entry}.") errors = check_warl_legality(csr_db, logging) if errors: raise ValidationError("Error in csr definitions", errors) @@ -2086,7 +2084,7 @@ def check_csr_specs(ispec=None, customspec=None, dspec=None, pspec=None, work_di raise ValidationError("Error in csr definitions", errors) if logging: - logger.info("Initiating post processing and reset value checks.") + logger.info(f"Initiating post processing and reset value checks for hart{entry}.") errors = check_reset(csr_db, logging) if errors: raise ValidationError("Error in csr definitions", errors) From b66e8f7041d259d3d177a58a326432ee257cea79 Mon Sep 17 00:00:00 2001 From: incorebot Date: Thu, 30 Nov 2023 21:45:14 +0530 Subject: [PATCH 2/8] update the fields node in the normalized custom yaml --- riscv_config/checker.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/riscv_config/checker.py b/riscv_config/checker.py index 2b7ff2c..e42e307 100644 --- a/riscv_config/checker.py +++ b/riscv_config/checker.py @@ -1916,7 +1916,6 @@ def check_custom_specs(custom_spec, validator.allow_unknown = True outyaml = copy.deepcopy(master_custom_yaml) - normalized = {} for x in master_custom_yaml['hart_ids']: if logging: logger.info(f'CustomCheck: Processing Hart:{x}') @@ -1927,8 +1926,12 @@ def check_custom_specs(custom_spec, logger.info('CustomCheck: No errors for Hart:{x}') else: error_list = validator.errors - raise ValidationError("Error in " + foo + ".", error_list) - normalized[f'hart{x}'] = validator.normalized(inp_yaml, schema_yaml) + raise ValidationError("CustomCheck: Error in " + foo + ".", error_list) + normalized = validator.normalized(inp_yaml, schema_yaml) + if logging: + logger.info(f'CustomCheck: Updating fields node for each CSR Hart:{x}') + normalized = update_fields(normalized, logging) + outyaml['hart'+str(x)] = trim(normalized) errors = check_fields(inp_yaml) if errors: raise ValidationError("Error in " + foo + ".", errors) From b76524723e142b38035655eb32d11ca87c4b7322 Mon Sep 17 00:00:00 2001 From: incorebot Date: Thu, 30 Nov 2023 21:45:37 +0530 Subject: [PATCH 3/8] using hartX naming scheme for merged dict --- riscv_config/checker.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/riscv_config/checker.py b/riscv_config/checker.py index e42e307..34bff9d 100644 --- a/riscv_config/checker.py +++ b/riscv_config/checker.py @@ -2061,21 +2061,21 @@ def check_csr_specs(ispec=None, customspec=None, dspec=None, pspec=None, work_di hart_ids = [] for entry in ispec_dict['hart_ids']: hart_ids.append(entry) - merged[entry] = {} - merged[entry].update(ispec_dict['hart'+str(entry)]) + merged[f'hart{entry}'] = {} + merged[f'hart{entry}'].update(ispec_dict['hart'+str(entry)]) if custom_file is not None: - merged[entry].update(customspec_dict['hart'+str(entry)]) + merged[f'hart{entry}'].update(customspec_dict['hart'+str(entry)]) if debug_file is not None: - merged[entry].update(dspec_dict['hart'+str(entry)]) + merged[f'hart{entry}'].update(dspec_dict['hart'+str(entry)]) try: - uarch_signals = merged[entry]['uarch_signals'] + uarch_signals = merged[f'hart{entry}']['uarch_signals'] except KeyError as e: - logger.info("No uarch signals found for hart"+str(entry)) + logger.info(f"No uarch signals found for hart:{entry}") uarch_signals = {} - + for entry in hart_ids: - csr_db = merged[entry] + csr_db = merged[f'hart{entry}'] if logging: logger.info(f"Initiating WARL legality checks for hart:{entry}.") errors = check_warl_legality(csr_db, logging) From 56aca248508e7f386f83d0a93799b8bb21c861f5 Mon Sep 17 00:00:00 2001 From: incorebot Date: Thu, 30 Nov 2023 21:46:40 +0530 Subject: [PATCH 4/8] update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43e9d86..72ebf47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [3.15.0] - 2024-01-01 - Added function that returns the march and mabi for gcc from a given ISA + +## [3.14.4] - 2023-11-20 + - use the "hartX" naming for the merged dict + - improve logging statements + - update the "fields" node of each csr in the normalized custom yaml + ## [3.14.3] - 2023-12-01 - Add support for Zimop extension From 112c93b332388b23da732a72ee6f47f551a5c358 Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Wed, 27 Dec 2023 09:43:02 +0530 Subject: [PATCH 5/8] remove logger statement to reduce size of logs --- riscv_config/warl.py | 1 - 1 file changed, 1 deletion(-) diff --git a/riscv_config/warl.py b/riscv_config/warl.py index 2811a16..5ff9e2e 100644 --- a/riscv_config/warl.py +++ b/riscv_config/warl.py @@ -63,7 +63,6 @@ def __init__(self, node, csrname, f_msb, f_lsb, spec=None): else: self.uarch_signals = {} except KeyError: - logger.info(f'No uarch_signals found in spec.') self.uarch_signals = {} self.csrname = csrname if spec is not None: From 2f6509d82eefb4d6acd094385ba00d921e89d02f Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Mon, 1 Jan 2024 08:08:24 +0530 Subject: [PATCH 6/8] fix logger --- riscv_config/checker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riscv_config/checker.py b/riscv_config/checker.py index 34bff9d..059f023 100644 --- a/riscv_config/checker.py +++ b/riscv_config/checker.py @@ -1923,7 +1923,7 @@ def check_custom_specs(custom_spec, valid = validator.validate(inp_yaml) if valid: if logging: - logger.info('CustomCheck: No errors for Hart:{x}') + logger.info(f'CustomCheck: No errors for Hart:{x}') else: error_list = validator.errors raise ValidationError("CustomCheck: Error in " + foo + ".", error_list) From f7149ae9c3648b917c58d46cebed5564bc4f24c3 Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Wed, 3 Jan 2024 18:06:01 +0530 Subject: [PATCH 7/8] update changelog entry --- CHANGELOG.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72ebf47..76569e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,15 +2,14 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.15.0] - 2024-01-01 - - Added function that returns the march and mabi for gcc from a given ISA - -## [3.14.4] - 2023-11-20 +## [3.16.0] - 2024-01-03 - use the "hartX" naming for the merged dict - improve logging statements - update the "fields" node of each csr in the normalized custom yaml - +## [3.15.0] - 2024-01-01 + - Added function that returns the march and mabi for gcc from a given ISA + ## [3.14.3] - 2023-12-01 - Add support for Zimop extension From 6c4a0ddb83313b2e930d488ad0cc7e3a65027bcc Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Wed, 3 Jan 2024 18:07:35 +0530 Subject: [PATCH 8/8] =?UTF-8?q?Bump=20version:=203.15.0=20=E2=86=92=203.16?= =?UTF-8?q?.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- riscv_config/__init__.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/riscv_config/__init__.py b/riscv_config/__init__.py index b9924a8..dfbbd6a 100644 --- a/riscv_config/__init__.py +++ b/riscv_config/__init__.py @@ -1,4 +1,4 @@ from pkgutil import extend_path __path__ = extend_path(__path__, __name__) -__version__ = '3.15.0' +__version__ = '3.16.0' diff --git a/setup.cfg b/setup.cfg index 3cb111e..24483d1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.15.0 +current_version = 3.16.0 commit = True tag = True