Name Strings

SPV_INTEL_global_variable_fpga_decorations

Contact

To report problems with this extension, please open a new issue at:

Contributors

  • Artem Radzikhovskyy, Intel

  • Michael Kinsner, Intel

  • Joe Garvey, Intel

  • Mohammad Fawaz, Intel

  • Gregory Lueck, Intel

Notice

Copyright (c) 2021-2023 Intel Corporation. All rights reserved.

Status

  • Complete

Version

Last Modified Date

2023-10-27

Revision

3

Dependencies

This extension is written against the SPIR-V Specification, Version 1.6 Revision 2.

This extension requires SPIR-V 1.0.

Overview

This extension adds decorations that can be applied to global (module scope) variables. These decorations are intended to help code generation for FPGA devices, they can be ignored by all other consumers of this extension.

Extension Name

To use this extension within a SPIR-V module, the following OpExtension must be present in the module:

OpExtension "SPV_INTEL_global_variable_fpga_decorations"

New Capabilities

This extension introduces a new capability:

GlobalVariableFPGADecorationsINTEL

Token Number Assignments

GlobalVariableFPGADecorationsINTEL

6189

InitModeINTEL

6190

ImplementInRegisterMapINTEL

6191

Modifications to the SPIR-V Specification, Version 1.6

Initialization Mode Qualifier

After Section 3.18, add a new section "3.18a Initialization Mode Qualifier" as follows

Defines how the initialization should be triggered.

Used by InitModeINTEL.

Initialization Mode Qualifier Enabling Capabilities

0

InitOnDeviceReprogramINTEL

Initialization is performed by reprogramming the device. This may require more frequent reprogramming but may reduce area.

GlobalVariableFPGADecorationsINTEL

1

InitOnDeviceResetINTEL

Initialization is performed by sending a reset signal to the device. This may increase area but may reduce reprogramming frequency.

GlobalVariableFPGADecorationsINTEL

Decoration

Modify Section 3.20, Decoration, adding these rows to the Decoration table:

Decoration Extra Operands Enabling Capabilities

6190

InitModeINTEL
Only valid on global (module scope) OpVariable which has an Initializer operand.

This decoration only has an effect when the consumer is an FPGA or similar device. The Trigger value tells how the global variable should be initialized.

If a global OpVariable with an Initializer operand is not decorated with InitModeINTEL, the method by which the variable’s value is initialized is implementation defined.

Initialization Mode Qualifier
Trigger

GlobalVariableFPGADecorationsINTEL

6191

ImplementInRegisterMapINTEL
Only valid on global (module scope) OpVariable.

This decoration only has an effect when the consumer is an FPGA or similar device. The Value value controls the interface of this global variable with hardware outside the boundary of the SPIR-V module.

Legal values of Value:

  • 0 [False] - Access to this memory is through a dedicated interface.

  • 1 [True] - Access to this memory is through a common register map interface that may be shared by other control or data inputs and outputs.

If a global OpVariable is not decorated with ImplementInRegisterMapINTEL, the interface for the variable is implementation defined.

Literal Number
Value

GlobalVariableFPGADecorationsINTEL

Capability

Modify Section 3.31, Capability, adding a row to the Capability table:

Capability Implicitly Declares

6189

GlobalVariableFPGADecorationsINTEL

Issues

None.

Revision History

Rev Date Author Changes

1

2022-11-1

Gregory Lueck

Initial revision

2

2023-04-25

Artem Radzikhovskyy

Seperated the FPGA specific decorations from the generic ones

3

2023-10-27

Artem Radzikhovskyy

Reverting Capability ID