This project adheres to Semantic Versioning.
- Added boolean parameters in functions that enables exporting of the normalized yaml as a dictionary
- support march generation without custom extensions
- use the "hartX" naming for the merged dict
- improve logging statements
- update the "fields" node of each csr in the normalized custom yaml
- Added function that returns the march and mabi for gcc from a given ISA
- Add support for Zimop extension
- Add Zcmop extension.
- Add support for Zicfilp and Zicfiss extensions
- Include Sdext in the list of S extensions
- Add support for Zabha extension
- do not assign subfield to None
- Perform satp checks only when the CSR is accessible.
- Add support for Code Size Reduction (Zce) extension
- Fixed issue #110
- Fixed issue #108
- Fixed issue #114
- Fixed issue #127
- Fixed issue #82
- Fixed issue #103
- updated contribution guidelines on versioning
- added docs for indexed CSRs
- Add support for Svadu extension
- Add support for Zacas extension
- Add support for Zfa extension
- Fix Checks for FCSR, FFLAGS and FRM to depend on F instead of U.
- Check if YAMLs are None before they're merged for performing CSR checks.
- Perform XLEN specific satp checks based on XLEN value.
- Check triggers only when debug CSRs are available.
- Add support to include hidden uarch dependencies in YAML definitions of CSRs.
- Perform checks on all CSRs together instead of handling each spec seperately.
- Add a schema for custom CSR specification. Add a node for listing uarch signals.
- fix the address for mnstatus
- Add support for Srnmi extension
- All extension existence checks to be performed on extension_list from isa validator.
- Add support for Zicond extension
- change all hpmcounters to be read-only shadows of the corresponding machine mode mhpmcounters.
- adding Zicntr and Zihpm extensions
- add V extensions ISA string constraints check
- special checks for vxsat csr added which apply only the max-xlen subsections of the csr
- Added Zbpbo, Zpn, Zpsfoperand into constants.py
- Added ISA string legality checker for Zp* extension into isa_validator.py
- Added vxsat CSR into schema_isa.yaml (Credits: chuanhua)
- Add support for indexed registers
- Add schemas for triggers
- Fix bugs in WARL class
- Add function to get a legal value from WARL fields.
- support x-extension parsing in ISA string
- added check to capture duplicates in the extensions present in the isa string
- documentation cleanup for adding new extensions in riscv-config
- disabled pdf asset generation for each release.
- rewrote regular expression for determining legal ISA/extension strings to fix bugs and simplify maintenance. (#104)
- updated example and regex in new-extensions.rst to match
- adding new function to get a legal value from a warl node
- if the value being tested is out of bounds, then skip with error immediately
- fix pypi dependencies for docs
- scounteren can be a ro_constant now
- the maxval checks for mask/fixedval should be based on the length of the part
- adding support for mtval_update field
- adding support for pte_ad_hw_update field
- cleaned up documentation
-
created new warl class for warl node handling
- better comments
- more functions to keep things simple
- fixed a lot of bugs in checking legal values
- bitmask and range values can now co-exist in a legal string
- added new and improved checks for syntax validity of warl strings
-
fixed validationError function to correctly print all errors (dict and/or list)
-
removed wr_illegal checks from the schema since they are now done as part of the new warl class checks
-
updates to the new warl checks and reset-value checks
-
satp.mode should have one of sv* translation schemes as a legal value. (#89)
-
default setters for pmps fixed
-
pmp checks have been improved (#88)
-
improve WARL documentation
- Support for Zfinx, Zdinx, Zfh, Zhinx, Zhinxmin in ISA string added.
- fixed bug in regex where Zk and Zknh were missing an underscore
- fixed overlap checks for crypto extensions
- removing K and P extension strings from regex
- added missing Z extensions from Kcrypto
- fixed ordering of the Z extensions as per isa spec.
- moved ISA validation as a separate api function to enable import in other python tools
- add support for Zicbo* extensions
- add new node in platform_schema: zicbo_cache_block_sz
- fix for index-based dependency checks in warl string.
- Added setup.cfg to automate bumpversion
- Fix wording for legal strings in dependency warl fields.
- add support for detection of svnapot in ISA string
- genralize conversion of hex, oct, bin values to int in warl functions
- machine flat schema to include wlrl types as well
- added mbe and sbe fields in mstatush
- fixed default setter for vsstatus in RV32 mode
- support for hypervisor csrs
- change default for dcsr.v and fix the
check_with
function for the same - ensures proper checks for csrs defined as 32-bit only registers
- Fixed the relationship between fflags, frm and fcsr
- Enable subfield to be shadow field of whole csr, and vice versa
- adding the missing shadow_type field for hpmcounter17
- canonical ordering requirement of
_Z
extensions fixed
- adding support for Zmmul extension in ISA regex
- islegal function under the warl_interpreter class fixed. The based and bound values are not extracted correctly as either hex or decimal values. Also removed the logic to truncate values
- Changed the default value of 'accessible' to false so input yamls need not declare unsupported xlen
- added default-setters for misa's reset value to match the ISA extensions, to modify warl function of extensions under misa
- added default setter for reset value of mstatus
- changed default values of types for subfields in mstatus
- changed default values of types for mhpmevent*, mcountinhibit, mcounteren and mhpmcounter* to read only constant 0
- changed default values of types for fflags, frm and fcsr to warl if F is present, else read-only constant 0
- changed default values of types for mcycle[h], minstret[h] to warl
- changed default values of types and added checks for subfields of scause, satp, stvec, sie, sip and sstatus
- removed an unadded feature in rv32i_platform.yaml
- removed debug_interrupts under mip in rv64i_isa.yaml
- fixed issue #58 by adding extra checks for bitmask
- fixed issue #59 by removing custom cause from platform yaml
- resolved inconsistencies in the use of "xlen" and "supported_xlen" in schemaValidator
- added extra "shadow_type" fields in the csr schemas. These indicate the nature of shadow (read-only, read-write, etc).
- added parking_loop node in debug_schema to indicate the address of debug rom. Can be empty in implementations which do not have this feature
- Added checks for K (sub)extension(s)
- Updated docs with information on adding new extension, csrs or specs.
- Added github actions based CI
- added new debug schema for debug based csrs and spec
- cli now takes debug spec as input as well along with isa-spec
- added support for defining custom exceptions and interrupts
- added priv_mode field to sedeleg and sideleg csrs
- Allow B extension in ISA schema
- msb,lsb values of "SD" field in mstatus must be 63 in rv64 mode
- added checks for reset value of misa to adhere to the extensions enabled in the input yaml
- fixed dead-link in the docs.
- Added support for custom csr yaml
- Added new nodes in isa_schema: pmp_granularity and physical_addr_sz
- Checks for pmp, counters and custom csrs
- medeleg, mideleg check for S or N extension
- updated the warl syntax slightly for easier parsing.
- fixed warl parsing and islegal function to check reset values
- modified sn_check and su_check
- scounteren checks to make it depend only on u
- medeleg, mideleg check for S or N extension
- added all n extension csrs
- added missing supervisor csrs
- added default setters for subfields in sip, sie , uip and uie to make it depend as shadows on machine csrs
- default mpp value to 0
- adding defaults to sub-fields of mtvec
- Added support for pmp csrs in the schema
- Added support for mcycleh and minstreth
- Added special checks for ensuring the shadows are implemented correctly.
- Added support for the following supervisor csrs in the schema: sstatus, sie, sip, stvec, sepc, stval, scause and satp
- Added support for user performance counters, frm, fcsr, time[h], cycle[h] and instret[h] csrs in the schema.
- all fields are now subsumed under a hartid. This allows specifying multiple harts in the same yaml
- logging mechanism improved.
- isa spec is now validated independently of the platform spec
- privilege and unprivilege version checks are no longer required. This satisfied via the "allowed" field now.
- improved the 'implemented/accessible' checks for s, u and n extensions
- the "fields" node is now populated by subfields in the increasing order of the placement in the csr.
- using aliases to reduce the code size
- Added Zihintpause to ISA string (for PAUSE Hint instruction extension)..
- Size of the isa schema has been reduced significantly.
- Using anchors in the schema.
- Provided a command line argument to disable anchors in the checked yaml dump.
- adding mycycle, minstret, pmpcfgs and pmpaddrs
- added support for defining multiple harts
- Changed quickstart 'riscv_config' to 'riscv-config'
- Changed checker.py to add check_reset_fill_fields() description
- Changed minimum python version requirement to 3.6.0 which is typically easy to install on all major distributions
- Updated readme with better installation instructions
- Renamed the 'implemented' field in rv32 and rv64 nodes to 'accessible'.
- Modified appropriate definitions for fields dependent on specific extensions like NSU.
- doc issue for mtimecmp
- mimpid is now part of the default setters list
- Moved machine timer nodes to platform yaml.
--version
option to arguments to print version and exit when specified.- Print help and exit when no options/arguments are specified.
- Redundant reset-val check for mtvec and misa registers.
- typos in quickstart doc
- disabled deployment to repository until authentication issue is fixed.
- adding support for warl fields and support
- documentation for the warl fields added
- reset-value checks added
- using a new common template for defining all csrs
- updated docs with new template
- using special function within conf.py to extract comments from yaml file as docs.
- closed issues #10, #11, #12, #13
- Log is generated only if specified(for API calls to checker.check_specs).
- link in readme now points to github instead of gitlab.
- Work directory isnt deleted if the directory exists, although the files of the same name will be overwritten.
- Checked yaml passes validation too.
- Added work_dir as arg and always outputs to that dir.
- Added reset vector and nmi vector to platform.yaml
- Vendor description fields in schema.
- An xlen field added for internal use.
- In ISA field in isa_specs subsequent 'Z' extensions should be prefixed by an underscore '_'
- Fixed
cerberus.validator.DocumentError: document is missing
error when platform specs is empty. - mtvec:mode max value is set to 1.
- privilege-spec and user-spec are taken as strings instead of float.
- The representation of the int fields is preserved in the checked-yaml.
- mepc is a required field.
- check_specs function now returns the paths to the dumped normalized files.
- No other entries in node where implemented is False.
- Readonly fields are purged by default.
- Multiple values/entries for the same node is not allowed.
- remove *_checked.yaml files from Examples.
- changed templates_platform.yaml to template_platform.yaml in docs.
- doc update
- pdf documentation
- ci-cd to host pdf as well
- Documentation to install and use pyenv
- Initial schemas for M mode and S mode csrs with constraints as specified in the spec.