prga.prog.scanchain.lib module

class prga.prog.scanchain.lib.Scanchain

Bases: prga.prog.common.AbstractProgCircuitryEntry

Entry point for scanchain programming circuitry.

classmethod _Scanchain__install_cells(context)
classmethod _get_or_create_scanchain_data_cell(context, data_width)

Get the programming data module for data_width bits.

Parameters:
  • context (Context) –
  • data_width (int) –
Returns:

Return type:

Module

classmethod _get_or_create_scanchain_prog_nets(module, chain_width, excludes=None)
classmethod _insert_scanchain(context, design_view=None, *, iter_instances=None, insert_delimiter=None)

Insert the scanchain.

Parameters:
  • context (Context) –
  • design_view (Module) – The module (design view) in which scanchain is inserted. If not specified, the top-level array in context is selected
Keyword Arguments:
 
  • iter_instances (Function [Module ] -> Iterable [Instance ]) – Custom ordering of the instances in a module
  • insert_delimiter (Function [Module ] -> bool) – Determine if we buffers are inserted at the beginning and end of the scanchain inside design_view. By default, buffers are inserted in all logic/IO blocks and routing boxes.

This method calls itself recursively to process all the instances (sub-modules).

classmethod insert_prog_circuitry(context, *, iter_instances=None, insert_delimiter=None)

Insert programming circuitry into the FPGA. This method will be called by the ProgCircuitryInsertion pass.

Parameters:context (Context) –
classmethod materialize(ctx, inplace=False, *, chain_width=1)

Materialize the abstract context to this configuration circuitry type.

Parameters:
  • ctx (Context) – An abstract context, or a context previously materialized to another configuration circuitry type.
  • inplace (bool) – If set, the context is modified in-place. Otherwise (by default), ctx is deep-copied before processed
Keyword Arguments:
 

**kwargs – Additional keyword parameters specific to the programming circuitry type.

Returns:

Return type:

Context