Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: amaranth-lang/amaranth
base: 9bdb7accc886
Choose a base ref
...
head repository: amaranth-lang/amaranth
compare: b65e11f38fcc
Choose a head ref
  • 1 commit
  • 19 files changed
  • 1 contributor

Commits on Aug 27, 2020

  1. sim: split into base, core, and engines.

    Before this commit, each simulation engine (which is only pysim at
    the moment, but also cxxsim soon) was a subclass of SimulatorCore,
    and every simulation engine module would essentially duplicate
    the complete structure of a simulator, with code partially shared.
    
    This was a really bad idea: it was inconvenient to use, with
    downstream code having to branch between e.g. PySettle and CxxSettle;
    it had no well-defined external interface; it had multiple virtually
    identical entry points; and it had no separation between simulation
    algorithms and glue code.
    
    This commit completely rearranges simulation code.
      1. sim._base defines internal simulation interfaces. The clarity of
         these internal interfaces is important because simulation
         engines mix and match components to provide a consistent API
         regardless of the chosen engine.
      2. sim.core defines the external simulation interface: the commands
         and the simulator facade. The facade provides a single entry
         point and, when possible, validates or lowers user input.
         It also imports built-in simulation engines by their symbolic
         name, avoiding eager imports of pyvcd or ctypes.
      3. sim.xxxsim (currently, only sim.pysim) defines the simulator
         implementation: time and state management, process scheduling,
         and waveform dumping.
    
    The new simulator structure has none of the downsides of the old one.
    
    See #324.
    whitequark committed Aug 27, 2020
    Copy the full SHA
    b65e11f View commit details
    Browse the repository at this point in the history