Fabric Key ~~~~~~~~~~ Fabric key is a secure key for users to generate bitstream for a specific FPGA fabric. With this key, OpenFPGA can generate correct bitstreams for the FPGA. Using a wrong key, OpenFPGA may error out or generate wrong bitstreams. The fabric key support allows users to build secured/classified FPGA chips even with an open-source tool. .. note:: Users are the only owner of the key. OpenFPGA will not store or replicate the key. Key Generation `````````````` A fabric key can be achieved in the following ways: - OpenFPGA can auto-generate a fabric key using random algorithms (see detail in :ref:`cmd_build_fabric`) - Users can craft a fabric key based on auto-generated file by following the file format description. File Format ``````````` A fabric key follows an XML format. As shown in the following XML code, the key file includes the organization of configurable memory blocks in the top-level FPGA fabric: - ``id`` indicates the sequence of the configurable memory block in the top-level FPGA fabric. - ``name`` indicates the module name of the configurable memory block. - ``value`` indicates the instance id of the configurable memory block in the top-level FPGA fabric. - ``alias`` indicates the instance name of the configurable memory block in the top-level FPGA fabric. If a valid alias is specified, the ``value`` will not be considered. The following is an example of a fabric key generate by OpenFPGA for a 2 :math:`\times` 2 FPGA. .. code-block:: xml