Name Strings

SPV_INTEL_fpga_argument_interfaces

Contact

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

Contributors

Abhishek Tiwari, Intel
Joe Garvey, Intel

Notice

Copyright (c) 2022 Intel Corporation. All rights reserved.

Status

Final draft

Version

Last Modified Date

2022-12-04

Revision

1

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 kernel argument decorations that influence the interfaces built for for Field Programmable Gate Array (FPGA) kernel arguments.

Extension Name

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

OpExtension "SPV_INTEL_fpga_argument_interfaces"

New Capabilities

This extension introduces the following new capability:

FPGAArgumentInterfacesINTEL

Token Number Assignments

FPGAArgumentInterfacesINTEL

6174

ConduitKernelArgumentINTEL

6175

RegisterMapKernelArgumentINTEL

6176

MMHostInterfaceAddressWidthINTEL

6177

MMHostInterfaceDataWidthINTEL

6178

MMHostInterfaceLatencyINTEL

6179

MMHostInterfaceReadWriteModeINTEL

6180

MMHostInterfaceMaxBurstINTEL

6181

MMHostInterfaceWaitRequestINTEL

6182

StableKernelArgumentINTEL

6183

Modifications to the SPIR-V Specification, Version 1.6

Decoration

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

Decoration Extra Operands Enabling Capabilities

6175

ConduitKernelArgumentINTEL
Must be applied only to an OpFunctionParameter of a function that is an entry point. Indicates that dedicated input wires should be created for this argument.

FPGAArgumentInterfacesINTEL

6176

RegisterMapKernelArgumentINTEL
Must be applied only to an OpFunctionParameter of a function that is an entry point. Indicates that this argument is stored in registers in the kernel that are accessed through a common interface shared between this argument, other RegisterMapKernelArgumentINTEL arguments, and possibly kernel control signals.

FPGAArgumentInterfacesINTEL

6177

MMHostInterfaceAddressWidthINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates the size, in bits, of the address bus for the Memory Mapped Interface created for this pointer argument.

Literal Number (32-bit signed integer)
AddressWidth

FPGAArgumentInterfacesINTEL

6178

MMHostInterfaceDataWidthINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates the size, in bits, of the data bus for the Memory Mapped Interface created for this pointer argument.

Literal Number (32-bit signed integer)
DataWidth

FPGAArgumentInterfacesINTEL

6179

MMHostInterfaceLatencyINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates the latency in cycles of the Memory Mapped Interface created for this pointer argument. If this decoration is present it guarantees that the latency is fixed.

Literal Number (32-bit signed integer)
Latency

FPGAArgumentInterfacesINTEL

6180

MMHostInterfaceReadWriteModeINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates the read-write mode of the Memory Mapped Interface created for this pointer argument.

Access Qualifier
ReadWriteMode

FPGAArgumentInterfacesINTEL

6181

MMHostInterfaceMaxBurstINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates the maximum burst count of the Memory Mapped Interface created for this pointer argument.

Literal Number (32-bit signed integer)
MaxBurstCount

FPGAArgumentInterfacesINTEL

6182

MMHostInterfaceWaitRequestINTEL
Must be applied only to a pointer OpFunctionParameter of a function that is an entry point. Indicates whether the Memory Mapped Interface created for this pointer argument should accept a waitrequest signal.

A setting of 1 means build a waitrequest signal and a setting of 0 means don’t.

Literal Number (32-bit signed integer)
Waitrequest

FPGAArgumentInterfacesINTEL

6183

StableKernelArgumentINTEL
Must be applied only to an OpFunctionParameter of a function that is an entry point. Indicates that this input will not change during the execution of pipelined kernel invocations. Input can change once all active invocations have finished.

FPGAArgumentInterfacesINTEL

Capability

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

Capability Implicitly Declares

6174

FPGAArgumentInterfacesINTEL

Validation Rules

It is invalid to specify both ConduitKernelArgumentINTEL and RegisterMapKernelArgumentINTEL decorations on the same OpFunctionParameter.

Issues

None.

Revision History

Rev Date Author Changes

1

2022-12-04

Abhishek Tiwari, Brox Chen

Initial public release