1. Jun 26, 2020
  2. Jun 25, 2020
  3. Jun 24, 2020
    • Jack Koenig's avatar
      Don't Dedup modules if it would change semantics (#1713) · e0e68568
      Jack Koenig authored
      If a module has ports of type Bundle that are used in aggregate
      connections in parent modules, Dedup cannot change the names of the
      fields of the Bundle or it would change the semantics of the connection.
      Dedup now detects this case and refrains from agnostifying the ports of
      such modules to prevent this issue.
      e0e68568
    • Tom Alcorn's avatar
      Basic model checking API (#1653) · 8322316a
      Tom Alcorn authored
      
      
      * Add assume, assert, cover statements
      * Assert submodule assumptions
      * Add warning when removing verification statements
      * Remove System Verilog behaviour emitter warning
      * Add option to disable AssertSubmoduleAssumptions
      * Document verification statements in the spec
      
      The syntax for the new statements is
      
          assert(clk, cond, en, msg)
          assume(clk, cond, en, msg)
          cover(clk, cond, en, msg)
      
      With assert as a representative example, the semantics is as follows:
      `clk` is the clock, `cond` is the expression being asserted, `en` is the
      enable signal (if `en` is low then the assert is not checked) and `msg`
      is a string message intended to be reported as an error message by the
      model checker if the assertion fails.
      
      In the Verilog emitter, the new statements are handled by a new
      `formals` map, which groups the statements by clock domain. All model
      checking statements are then emitted within the context of an `ifdef
      FORMAL` block, which allows model checking tools (like Symbiyosys) to
      utilize the statements while keeping them out of synthesis flows.
      
      Co-authored-by: default avatarAlbert Magyar <albert.magyar@gmail.com>
      8322316a
    • Jack Koenig's avatar
      d1db9067
  4. Jun 23, 2020
  5. Jun 20, 2020
  6. Jun 13, 2020
  7. Jun 12, 2020
  8. Jun 11, 2020
  9. Jun 10, 2020
  10. Jun 05, 2020
  11. Jun 04, 2020
  12. Jun 03, 2020
  13. May 29, 2020
    • Albert Chen's avatar
      Implement InstanceTarget Behavior for Dedup + EliminateTargetPaths (#1539) · 0845fcdb
      Albert Chen authored
      
      
      - RenameMap Behavior
      -- Prevent transitive renaming A -> B -> C (continueRenaming)
      -- Prevent transitive renaming for self-renames
      
      - Target
      -- Override toString as serialize for CompleteTarget
      -- Expansion of stripHierarchy to enable stripping InstanceTargets to become ModuleTargets
      Annotations
      -- Bugfix in extractComponents where Products were not iterated over
      -- Converts renamed targets to local targets using Target.referringModule to preserve sticky behavior
      
      - Eliminate Target Paths
      -- Make DuplicationHelper use LinkedHashMap, as we iterate over its contents and convert to Seq in def makePathless
      -- Add DupedResult to map original module to new module targets
      -- Update renaming to record a map from all relative instance paths to original module, to new module target
      -- Consumes DedupedResult to give better name to new duplicated module if it was originally deduplicated
      -- Reorder modules in attempt to preserve original ordering, pre-deduplication
      -- Move utility functions to object
      -- Bugfix: add self-renames to prevent ofModule _ of target _ cannot be renamed to Vector(_, _, _, ...) errors
      
      - Dedup
      -- Changed NoDedupAnnotation to contain ModuleTarget, rather than ModuleName
      -- Added DedupedResult to map original module to the duplicate module
      -- Consumes DupedResult to pick better name, if it existed
      -- Updates renaming to chain the following: instancify deduped modules, remap differently named internal signals, then remap AST modules
      -- Move utility functions to object
      -- Remove annotations as part of determination of dedup correctness
      -- Bugfix: add instance renames so that deduped modules have their instances properly renamed
      
      - Dead Code Elimination
      -- Add deletion of ASTModules
      
      - Tests
      -- Morphism Spec to ensure Dedup -> EliminateTargetPaths and EliminateTargetPaths -> Dedup patterns work properly
      -- Update existing tests to make sure they work properly
      -- Add Dedup tests to demonstrate instance renaming bug, EliminateTargetPaths for ofModule rename bug, and update RenameMap tests
      
      Co-authored-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      Co-authored-by: default avatarAdam Izraelevitz <adam.izraelevitz@sifive.com>
      Co-authored-by: default avatarAdam Izraelevitz <azidar@gmail.com>
      Co-authored-by: default avatarJack Koenig <koenig@sifive.com>
      0845fcdb
  14. May 27, 2020