Run-Length Decompression Circuit With Substitute Value Encoding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Large configuration bitstreams for programmable logic devices (PLDs) pose a challenge as they require significant memory and increase device size and cost, while storing them off-chip can lead to prolonged boot times.
Innovation Solution
A method and circuit for compressing and decompressing data sets using a substitute value for single occurrences of a run value, allowing for efficient representation and storage of run-length encoded data, reducing the size of the configuration bitstream and improving boot times.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If configuration bitstream is stored on-chip or within the same package, then boot time is reduced, but device footprint and cost increase due to large memory device requirements
Solution Approach 1:
The patent extracts the least frequently occurring values from the configuration data and stores them in a separate lookup table in decompression logic, while the main configuration bitstream is stored off-chip. This separation allows the majority of configuration data to be stored externally without increasing on-chip memory requirements, thus reducing device footprint while enabling fast boot through efficient decompression.
Solution Approach 2:
The patent implements a nested structure where a compressed configuration bitstream is stored off-chip, and a decompression engine with embedded lookup tables is nested within the FPGA fabric. The decompression engine expands the compressed data during boot, effectively nesting the decompression functionality within the configuration loading process to reduce both external storage requirements and boot time.
2Area of stationary object
If configuration bitstream size is reduced through compression, then device footprint and cost are reduced, but boot time may increase due to longer loading time from external sources
Solution Approach 1:
The patent applies preliminary compression to the configuration bitstream using run-length encoding and value substitution techniques before storage. Frequently occurring values are replaced with shorter codes, and least frequently occurring values are substituted with placeholder values that are later resolved using lookup tables. This preliminary processing reduces the overall bitstream size, allowing faster loading from external storage despite the added decompression step.
Solution Approach 2:
The patent introduces lookup tables as an intermediary mechanism between the compressed configuration bitstream and the final configuration data. The lookup tables store mappings for substituted values and are integrated into the decompression logic, enabling fast resolution of compressed data during boot without requiring the entire uncompressed configuration to be loaded from external storage, thus reducing both footprint and boot time.
3Quantity of substance
If run-length encoding is applied to compress configuration data, then bitstream size is reduced, but decompression complexity increases
Solution Approach 1:
The patent segments the decompression process into distinct functional units: a compare circuit that identifies run-length encoded sequences, a lookup table unit that resolves substituted values, and an output generation unit that reconstructs the configuration data. This segmentation allows each unit to perform a specific function efficiently, reducing overall decompression complexity while maintaining effective compression ratios.
Solution Approach 2:
The decompression circuit is designed to be self-sufficient by integrating the lookup tables directly within the decompression logic fabric of the FPGA. The circuit automatically identifies run-length sequences and resolves substituted values without requiring external intervention or complex control logic, enabling efficient decompression with minimal additional circuitry beyond the standard FPGA fabric.
Data Source
AI summary
Decompressing a data set includes inputting data units to a decompression circuit and comparing each input data unit to a run value and to a substitute value. In response to the data unit being not equal to the run value or the substitute value, the decompression circuit outputs the value of the input data unit; in response to the input data unit having the run value and a succeeding data unit having a value N not equal to zero or one, the decompression circuit outputs multiple data units having the run value based on the value N; in response to input data unit having the substitute value, the decompression circuit outputs one data unit having the run value; and in response to one input data unit having the run value and a succeeding data unit equal to zero or one, the decompression circuit outputs one data unit of the substitute value.


