2020-04-01 13:57:28 -05:00
|
|
|
Fabric-dependent Bitstream
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2020-07-26 22:38:33 -05:00
|
|
|
Usage
|
|
|
|
`````
|
|
|
|
|
2020-04-01 13:57:28 -05:00
|
|
|
Fabric-dependent bitstream is design to be loadable to the configuration protocols of FPGAs.
|
|
|
|
The bitstream just sets an order to the configuration bits in the database, without duplicating the database.
|
|
|
|
OpenFPGA framework provides a fabric-dependent bitstream generator which is aligned to our Verilog netlists.
|
2020-07-26 22:38:33 -05:00
|
|
|
The fabric-dependent bitstream can be found in the pre-configured Verilog testbenches.
|
|
|
|
The fabric bitsteam can be outputted in different file format in terms of usage.
|
|
|
|
|
|
|
|
Plain Text File Format
|
|
|
|
```````````````````````
|
|
|
|
|
|
|
|
This file format is designed to be directly loaded to an FPGA fabric.
|
|
|
|
It does not include any comments but only bitstream.
|
|
|
|
|
|
|
|
The information depends on the type of configuration procotol.
|
|
|
|
|
|
|
|
.. option:: vanilla
|
|
|
|
|
2020-07-26 23:39:33 -05:00
|
|
|
A line consisting of ``0`` | ``1``
|
2020-07-26 22:38:33 -05:00
|
|
|
|
|
|
|
.. option:: scan_chain
|
|
|
|
|
2020-07-26 23:39:33 -05:00
|
|
|
A line consisting of ``0`` | ``1``
|
2020-07-26 22:38:33 -05:00
|
|
|
|
|
|
|
.. option:: memory_bank
|
|
|
|
|
|
|
|
Multiple lines will be included, each of which is organized as <address><space><bit>.
|
|
|
|
Note that due to the use of Bit-Line and Word-Line decoders, every two lines are paired.
|
|
|
|
The first line represents the Bit-Line address and configuration bit.
|
|
|
|
The second line represents the Word-Line address and configuration bit.
|
|
|
|
For example
|
|
|
|
|
2020-07-26 23:50:06 -05:00
|
|
|
.. code-block:: xml
|
2020-07-26 22:38:33 -05:00
|
|
|
|
|
|
|
<bitline_address> <bit_value>
|
|
|
|
<wordline_address> <bit_value>
|
|
|
|
<bitline_address> <bit_value>
|
|
|
|
<wordline_address> <bit_value>
|
|
|
|
...
|
|
|
|
<bitline_address> <bit_value>
|
|
|
|
<wordline_address> <bit_value>
|
|
|
|
|
|
|
|
.. option:: frame_based
|
2020-07-26 23:39:33 -05:00
|
|
|
|
2020-07-26 22:38:33 -05:00
|
|
|
Multiple lines will be included, each of which is organized as <address><space><bit>.
|
2020-10-30 23:13:28 -05:00
|
|
|
Note that the address may include don't care bit which is denoted as ``x``.
|
|
|
|
OpenFPGA automatically convert don't care bit to logic ``0`` when generating testbenches.
|
2020-07-26 22:38:33 -05:00
|
|
|
For example
|
|
|
|
|
2020-07-26 23:50:06 -05:00
|
|
|
.. code-block:: xml
|
2020-07-26 22:38:33 -05:00
|
|
|
|
|
|
|
<frame_address> <bit_value>
|
|
|
|
<frame_address> <bit_value>
|
|
|
|
...
|
|
|
|
<frame_address> <bit_value>
|
|
|
|
|
|
|
|
XML File Format
|
|
|
|
```````````````
|
|
|
|
|
|
|
|
This file format is designed to generate testbenches using external tools, e.g., CocoTB.
|
|
|
|
|
|
|
|
In principle, the file consist a number of XML node ``<bit>``, each bit contains the following attributes:
|
|
|
|
|
|
|
|
- ``id``: The unique id of the configuration bit in the fabric bitstream.
|
|
|
|
|
|
|
|
- ``value``: The configuration bit value.
|
|
|
|
|
2020-07-27 17:37:10 -05:00
|
|
|
- ``path`` represents the location of this block in FPGA fabric, i.e., the full path in the hierarchy of FPGA fabric.
|
2020-07-27 14:56:57 -05:00
|
|
|
|
2020-07-26 22:38:33 -05:00
|
|
|
A quick example:
|
|
|
|
|
2020-07-26 23:50:06 -05:00
|
|
|
.. code-block:: xml
|
2020-07-26 22:38:33 -05:00
|
|
|
|
2020-07-27 17:37:10 -05:00
|
|
|
<bit id="0" value="1" path="fpga_top.grid_clb_1__2_.logical_tile_clb_mode_clb__0.mem_fle_9_in_5.mem_out[0]"/>
|
2020-07-26 22:38:33 -05:00
|
|
|
</bit>
|
|
|
|
|
|
|
|
Other information may depend on the type of configuration procotol.
|
|
|
|
|
|
|
|
.. option:: memory_bank
|
|
|
|
|
|
|
|
- ``bl``: Bit line address information
|
|
|
|
|
|
|
|
- ``wl``: Word line address information
|
|
|
|
|
|
|
|
A quick example:
|
|
|
|
|
2020-07-26 23:50:06 -05:00
|
|
|
.. code-block:: xml
|
2020-07-26 22:38:33 -05:00
|
|
|
|
2020-07-27 17:37:10 -05:00
|
|
|
<bit id="0" value="1" path="fpga_top.grid_clb_1__2_.logical_tile_clb_mode_clb__0.mem_fle_9_in_5.mem_out[0]"/>
|
2020-07-26 23:39:33 -05:00
|
|
|
<bl address="000000"/>
|
|
|
|
<wl address="000000"/>
|
|
|
|
</bit>
|
2020-07-26 22:38:33 -05:00
|
|
|
|
|
|
|
.. option:: frame_based
|
|
|
|
|
|
|
|
- ``frame``: frame address information
|
|
|
|
|
2020-10-30 23:13:28 -05:00
|
|
|
.. note:: Frame address may include don't care bit which is denoted as ``x``.
|
|
|
|
|
2020-07-26 22:38:33 -05:00
|
|
|
A quick example:
|
|
|
|
|
2020-07-26 23:50:06 -05:00
|
|
|
.. code-block:: xml
|
2020-07-26 22:38:33 -05:00
|
|
|
|
2020-07-27 17:37:10 -05:00
|
|
|
<bit id="0" value="1" path="fpga_top.grid_clb_1__2_.logical_tile_clb_mode_clb__0.mem_fle_9_in_5.mem_out[0]"/>
|
2020-10-30 23:13:28 -05:00
|
|
|
<frame address="0001000x00000x01"/>
|
2020-07-26 23:39:33 -05:00
|
|
|
</bit>
|