The NI-Digital Pattern Driver interprets patterns and automatically selects from the following types of memory to store vectors. A tiered memory structure enables low latency branching and large storage.

  • Vector Memory—The region in PXIe-6571 memory that stores compiled patterns, including pin states and opcodes. Vector memory is split into the following regions based on access speed.
    • Fast Vector Memory (FVM)
    • Cache Vector Memory (CVM)
    • Large Vector Memory (LVM)
  • Pattern Execution Engine—This is the internal logic of the PXIe-6571 that executes patterns stored in vector memory. This includes the following.
    • Pattern sequencing
    • Opcode execution
    • Memory fetch control
    • Call and loop stack management
    • Starting and halting the patterns
    There is one pattern execution engine per card.
  • Non-sequential Flow Control Opcodes—Non-sequential opcodes are the subset of Flow Control Opcodes that require the use of a label to specify a location in the pattern to target upon evaluation of a vector. Non-sequential opcodes include the call, jump and jump_if opcodes, or the end_loop, exit_loop, and exit_loop_if opcodes when used in conjunction with the set_loop opcode.
  • Label—The property of a vector in a pattern indicating it can be used as the target of a non-sequential opcode. The pattern name can also be an exported label, since it is an entry point for the pattern itself. A pattern name does not have to be exported as a label. For some use-cases, the start of a pattern burst is not a time-critical operation and can be executed from LVM if the data fetch delay time can be tolerated in the test program.
  • Fast Vector Memory (FVM)—Stores the initial vectors after a sequencer branch for fastest access. FVM is the smallest, but lowest-latency type of vector memory. The sequencer can branch to a non-sequential vector based on the evaluation of non-sequential opcodes. The NI-Digital Pattern Driver loads all vectors containing exported or referenced labels, exported pattern names, or vectors that use the call opcode in FVM. The next three vectors in the pattern are stored in FVM, as this is the minimum timing required for the pattern engine to fetch vectors from the higher-latency CVM.
  • Cache Vector Memory (CVM)—Stores additional vectors shortly after a branching operation. CVM is used to cache execution while vectors are fetched from LVM. Every exported or referenced label reserves up to 172 vectors in CVM, as this is the minimum timing required for the pattern execution engine to fetch a block of pattern data from LVM.
  • Large Vector Memory (LVM)—Stores vectors that do not require low-latency branching. LVM is used to store larger patterns and is the largest, but highest-latency type of vector memory. When initially bursting a pattern or when pattern execution is non-sequential, FVM and CVM are necessary to maintain cycle-to-cycle pattern execution without additional latencies.
  • Available Memory by Region

    Memory Type Number of Vectors
    FVM 6144
    CVM 100352
    LVM 134217728

    Each exported or referenced label consumes at most 4 vectors in FVM and 172 vectors in CVM. The presence of a label in a pattern does not affect LVM, only the total pattern size affects LVM usage.

    Note When you use a non-sequential opcode, you have to create a label to use as a target.