|Table of Contents
Verifiable Delay Function Evaluation ASIC
The VDF ASIC is a fixed function device that takes a message hash, difficulty level, and interval then returns the VDF result at each interval. The intended usage is part of Ethereum 2.0’s transformation, a cornerstone in several of Filecoin’s core components, as well as other blockchains initiatives.
Verifiable Delay Function
The Verifiable Delay Function (VDF) used in the ASIC is based on the work of Benjamin Wesolowski: Efficient verifiable delay functions
For more information on VDF’s refer to the project research page: VDF Research
TODO – small - < 10KB per job depending on precomputed constants
TODO – little bigger, still small - < 2Mbps
TODO – depends on system ~10W?
Mod Square Latency
TODO – 2 ns?
TODO – 0-100 C
TODO – 0.8 V
TODO – 0.75 V
TODO – 25 MHz
There are five main blocks in the VDF ASIC: Modular Squaring Unit, Input/Output Logic, Control Logic, PLL, and Thermal Sensor.
Modular Squaring Unit
The Modular Squaring Unit (MSU) is the primary compute engine in the VDF ASIC. The engine takes a 2048 bit input and returns where is a predefined 2048 RSA modulus. There is a built-in feedback loop that continuously takes the output of the current result as the input to next. This is required for the iterative modular squaring of the VDF evaluation function.
The MSU has control logic around the compute engine to keep track of the current iteration and optionally return intermediate values for use in proof generation. Note the proof generation aspect of VDFs is not applicable in this ASIC.
Given the small volume of data that goes in and out of the ASIC, I2C is used as the low speed I/O protocol. The benefits of I2C are being well known, robust, and very simple. Alternatively there are options to go with SPI, UART, or a non-standardized basic serial interface if necessary.
Note that preliminary thoughts on bandwidth requirements feeding intermediate values to the prover indicate I2C may not be not enough. In that case the inclination is to use SPI.
All control of the ASIC is done through a fixed state machine in the control logic.
end of cmd/return
Write specified length data to the register located at address.
Read request from the register located at address.
Operation occurs in three independent clock domains.
Once the PLL IP is chosen, more details on configurability and requirements will be filled in.
In order to prevent catastrophic device failure due to excess heat, an optional embedded digital thermal sensor continuously monitors the temperature. This could even be a diode if available in the process library. If not included in the ASIC, then thermal sensing capability will be added to the package and board.
If using a full digital thermal sensor, will need to read the spec sheet of the IP chosen to fill in more details. Otherwise the more basic concepts of external sensing or a diode do not require any ASIC level programming.
Reset is an active low input to the ASIC used to place the control logic into a known state.
The PLL reference clock should be operation for some period of time prior to flipping the reset pin.
Clock mux, ability to use ref clk as internal clock
Visbility mux, selected internal values muxed out for debugging
All programmer visible registers are described in this section.
Each MSU register addresses 64 bits of data. Multiple adjacent registers may be accessed in series by a single read/write command.
2048 bits + 64 bits
Results Status and Control
0 – Result buf full
1 – Result buf empty
2 – MSU active
3 – Intermediates dropped
4 – Job queue full
0 – Run
1 – Clear results
2 – Clear jobs
Debug mux configuration
IO Status and Control
0 – Lock enable
1 – Lock status (RO)
Core Clock Divider
Sets the clock divider for the desired core frequency.
Core clock divider
Control Clock Divider
Sets the clock divider for the desired control logic frequency.
Control clock divider
On systems with multiple ASICs attached to a single host controller, there needs to be a mechanism to uniquely identify each device.
The external pin list and package information is detailed in this section
External reference clock for PLL
Reset, active low
Power (Do we need PLL, IO, and Core?)
Thermal trip to cut off power on runaway temperature
Debug internal signals
System Level Operation
The ASIC is designed to operate in a variety of systems. There can be 1 to X ASICs per host controller in a single system.