Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tywaves annotations #3

Merged
merged 23 commits into from
Jun 7, 2024
Merged

Tywaves annotations #3

merged 23 commits into from
Jun 7, 2024

Commits on Apr 18, 2024

  1. Annotate ports with Chisel type information in firrtl

    - Create `TywavesAnnotation` (firrtl) case class to represent the annotation
    - Add companion object to generate `TywavesChiselAnnotation`s for Chisel circuit: it parses a chisel circuit, extracts the necessary information from each component, and annotates each FIRRTL target
    - Support annotation for IO ports
    - Add support for modules and data types (grounds, aggregates, and user-defined (only extended bundles))
    - Support nested modules and data types
    - Create `AddTywavesAnnotations` phase to add the TywavesAnnotation to the elaborated Chisel circuit
    - Update `ChiselStage` to integrate `AddTywavesAnnotation` phase (run before `Convert` phase only if `withDebug` is true)
    - Added following tests:
            - Module tests:
    		- Empty module
    		- Module with submodule(s)
    		- Modules with parameters and paremetrized modules (need to extract scala meta-programming information though)
    		- BlackBoxes
    		- Intrinsics
    		- Classes
            - Ports test:
    		- Explict Clock, SyncReset (Bool), AsyncReset and Reset
    		- Implicit clock and reset
    		- Ground types: Bool, UInt, SInt, Analog
    		- Bundles: empty, anonymous, user-defined, nested
    		- Vecs: 1-D, 2-D
    		- MixedVec
    		- Vecs of bundles
    		- Bundles of vecs
    rameloni committed Apr 18, 2024
    Configuration menu
    Copy the full SHA
    65a47f3 View commit details
    Browse the repository at this point in the history

Commits on Apr 19, 2024

  1. Annotate registers and wires with Chisel type information in firrtl

    - Added "createAnno" from DefWire, DefRef, DefRegInit case
    - Reorganize test structure making reusable modules for different bindings (IO, Reg, Wire)
    - Added following tests:
            - Ports tests:
    		- Ports inside a submodule
            - Wire/reg tests:
                    - Explict Clock, SyncReset (Bool), AsyncReset and Reset
    		- Implicit clock and reset
    		- Ground types: Bool, UInt, SInt
    		- Analog (only wires)
    		- Bundles: empty, anonymous, user-defined, nested
    		- Vecs: 1-D, 2-D
    		- MixedVec
    		- Vecs of bundles
    		- Bundles of vecs
    		- Wires/regs inside a submodule
    rameloni committed Apr 19, 2024
    Configuration menu
    Copy the full SHA
    18153de View commit details
    Browse the repository at this point in the history

Commits on Apr 21, 2024

  1. Refactor of TywavesAnnotationSpec test structure

    - Move module and data types tests in different subdirectories
    - Add readmes with output samples of the annotations
    rameloni committed Apr 21, 2024
    Configuration menu
    Copy the full SHA
    e6de3b6 View commit details
    Browse the repository at this point in the history
  2. Annotate Chisel Memories

    - Added "createAnno" from DefMemory, DefSeqMemory, FirrtlMemory and DefMemPort case
    - Implement "createAnnoMem" to create a TyeavesAnnotation for memory (a memory does not extend the Data type)
    - Return empty annotations from Connect, DefInvalid
    - Add warning message for "Unhandled circuit commands"
    - Added the following tests:
    	- ROM of ground type
    	- SyncReadMem (when UNUSED) of ground type, aggregate types (bundle)
    	- Mem (when UNUSED) of ground type, aggregate types (bundle)
    	- SRAM of ground type (with different combs of ports), aggregate types
    	- SyncReadMem (when USED) of ground type, aggregate types (this instantiate MPORT)
            - Mem (when USED) of ground type, aggregate types (this instantiate MPORT)
    rameloni committed Apr 21, 2024
    Configuration menu
    Copy the full SHA
    ff1de98 View commit details
    Browse the repository at this point in the history

Commits on Apr 22, 2024

  1. [Fix tywaves] type name a annotation for innertype in memories (case …

    …of Vecs)
    
    - Added the following tests:
    	- Masked memories (SyncReadMem, Mem, SRAM)
    rameloni committed Apr 22, 2024
    Configuration menu
    Copy the full SHA
    017ecef View commit details
    Browse the repository at this point in the history

Commits on Apr 24, 2024

  1. Annotate types with the parameters (name, type, value) in the scala c…

    …onstructor (it works for any scala class)
    
    [Fix tywaves] Fix annotation issue for first parameter of the constructor
    
    Sometimes the first parameters was skipped. The `getConstructorParams` was dropping the first element of the list assuming that it contained the class itself and not a parameter.
    This assumption worked only for some cases ("$outer" is not always present in first position). Now the method is improved by doing a filter map (collect).
    
    Update report output samples in tests readmes
    
    Annotate types with parameters in the scala constructor (it works for any scala class)
    
    - Create a case class (`ClassParam`) to represent the parameters of a class in the firrtl annotation
    - Update `TywavesAnnotation` with `params: Option[Seq[ClassParam]]`. Some classes may not have any parameter
    - Implement `getConstructorParams()` to get params of a constructor of any scala class. It uses scala reflection.
    - Added the following tests:
    	- Test getConstructorParams() for:
    		- classes
    		- case classes
    		- private, protected and public fields in the constructor: name, type and value accessible
    		- fields in the body of a class (expected behaviour not accessible)
    		- parameters in the constructor (no val): only name and type accessible
    - Updated the following tests:
    	- Vec tests of DataTypesSpec: chisel Vecs have a length parameter in the constructor
    	- Mem tests: memories contain constructs with parameters in their constructors
    	- Module tests: update the module with parameters test
    rameloni committed Apr 24, 2024
    Configuration menu
    Copy the full SHA
    d4d6331 View commit details
    Browse the repository at this point in the history

Commits on Apr 25, 2024

  1. Fix behaviour of getConstructorParams when the value of a parameter i…

    …s type of chisel3.Data
    
    Now it returns only the value without the complete name (packageName.type.name) of the parameter.
    
    - Fix hasParams: sometimes some parameters of a class were not detected.
    - Added the following tests:
            - Circuit with parameters (scala basic types, scala classes, and chisel types)
            - Bundles with parameters (scala basic types, scala classes, and chisel types)
    - Updated tests (scala fmt and bug fix):
            - TypeAnnotationMemSpec
            - TypeAnnotationModuleSpec
            - TypeAnnotationDataTypesSpec
    - Fix scalafmt errors
    rameloni committed Apr 25, 2024
    Configuration menu
    Copy the full SHA
    0353ef1 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    42678b5 View commit details
    Browse the repository at this point in the history

Commits on May 8, 2024

  1. Configuration menu
    Copy the full SHA
    4b734cb View commit details
    Browse the repository at this point in the history
  2. Fix test circuits

    rameloni committed May 8, 2024
    Configuration menu
    Copy the full SHA
    b11fb47 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2024

  1. Configuration menu
    Copy the full SHA
    c3c9979 View commit details
    Browse the repository at this point in the history
  2. Bump versions of Github actions to versions using Node 20 (chipsallia…

    …nce#4116)
    
    Node 16 is deprecated and will eventually stop being supported.
    jackkoenig authored May 30, 2024
    Configuration menu
    Copy the full SHA
    99aa9f1 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2024

  1. Configuration menu
    Copy the full SHA
    25f70bd View commit details
    Browse the repository at this point in the history
  2. Add and use Mill wrapper script (chipsalliance#4119)

    This saves developers from having to install a dependency. It also
    allows us to drop an old Github Actions dependency that hasn't been
    updated in 2 years. This is the standard practice for projects using
    Mill on Github.
    jackkoenig authored May 31, 2024
    Configuration menu
    Copy the full SHA
    0f2efb5 View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2024

  1. Configuration menu
    Copy the full SHA
    91108bf View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2024

  1. Configuration menu
    Copy the full SHA
    ba81cbf View commit details
    Browse the repository at this point in the history

Commits on Jun 4, 2024

  1. Configuration menu
    Copy the full SHA
    8327056 View commit details
    Browse the repository at this point in the history

Commits on Jun 5, 2024

  1. [cd] Bump CIRCT from firtool-1.75.0 to firtool-1.76.0 (chipsalliance#…

    …4146)
    
    This is an automated commit generated by the `circt/update-circt` GitHub
    Action.
    
    Co-authored-by: chiselbot <chiselbot@users.noreply.github.com>
    chiselbot and chiselbot authored Jun 5, 2024
    Configuration menu
    Copy the full SHA
    a148447 View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2024

  1. [LTL] Add support for new sequence and property ops (chipsalliance#4120)

    Add support for `until`, `intersect`, `repeat`, `non_consecutive_repeat`, and `goto_repeat` property operations from SVA.
    dobios authored Jun 6, 2024
    Configuration menu
    Copy the full SHA
    6de9640 View commit details
    Browse the repository at this point in the history
  2. PeekPokeAPI: include source location on failed expect() calls. (chips…

    …alliance#4144)
    
    * simulator: add SourceInfo to expect calls and report.
    * simulator: add test for failed expects.
    * simulator: attempt to extract source line.
    * simulator: make testableData.expect's sourceInfo parameter explicit.
    * simulator: add factory method for giving failed expect sourceInfo/extraContext.
    kivikakk authored Jun 6, 2024
    Configuration menu
    Copy the full SHA
    45dd82a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    d35daa2 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    dbbf73a View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2024

  1. Configuration menu
    Copy the full SHA
    546b371 View commit details
    Browse the repository at this point in the history