Skip to content

Yosys integration improvements #110

@yashton

Description

@yashton

LSOracle has tried to maintain its own internal linkages between partitions with the partition manager. This proposal is to instead directly integrate into yosys. The plugin system is currently directly derived from the abc plugin, which strips out a bunch of stuff, writes to file, then subprocs. Instead the lsoracle plugin should work directly with RTLIL inside the yosys process.

  1. This allows interaction with a pre-flattened hierarchy to maintain designer provided organization and any meta-data such as attributes and types.
  2. Removes any translation through a blif file, requiring a gate level function detection step during parsing.
  3. 3

Yosys supports selection to operate on submodules and modules. A hypothetical internal workflow could be something like:

  1. extract_ff which for each module in the hierarchy, extracts any flip-flops and replaces with a PI/PO, placing the flip-flop in the parent module. Done recursively, this separates into a purely combinational hierarchy and a top level register bank.
  2. Create a new command lso_partition' which takes a module, partitions the internals and replaces with set of submodules representing the partitions.
  3. lso_synth command which takes a module and runs the mixed synthesis lsoracle process without partitioning. Selection system currently makes this possible with number of partition = 1. Disadvantage is potential parallelism.
  4. lso_subsynth command which takes a module which contains submodules, and runs mixed synthesis on each submodule. Solves the parallelism problem, equivalent to current process.
    One disadvantage is any partition simplification happening from strash (e.g. the exploder cone partitioning). Doing a strash in abc solves this.

https://yosyshq.readthedocs.io/projects/yosys/en/latest/using_yosys/more_scripting/selections.html

https://yosyshq.readthedocs.io/projects/yosys/en/latest/yosys_internals/formats/rtlil_rep.html#sec-rtlil-sigspec

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions