Skip to content

Structure

Nicolai Mueller edited this page Aug 29, 2022 · 34 revisions

PROLEAD's structure consists of two directories.

  1. The inc folder contains all header files (.hpp) encompassing the function declarations.
  2. The src folder contains all source files (.cpp) encompassing the function definitions.

All files related to the evaluation of hardware circuits are stored in the Hardware subdirectories (inc/Hardware and inc/Hardware) while the Util subdirectory stores all files that declare and define generic functions.

PROLEAD

The PROLEAD file (src/PROLEAD.cpp) defines the main function of PROLEAD.

Execute

The Execute files (inc/Hardware/Execute.hpp and src/Hardware/Execute.cpp) define the execution of PROLEAD based on a given set of command line parameters. These files implement the following functions:

Hardware::Execute

Executes PROLEAD based on a given set of command line parameters.

Parameters

CommandLineParameterStruct& Parameter - The command line parameters.

Return value

(none)

Prepare

The Prepare files (inc/Hardware/Prepare.hpp and src/Hardware/Prepare.cpp) define all functions for preparation before the actual evaluation takes place. These files implement the following functions:

Hardware::Prepare::All

Prepares everything for the evaluation.

Parameters

CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct*& SharedData - The shared data.

Return value

(none)

Hardware::Prepare::MakeCircuitDepth

Computes the combinational depth (number of subsequent combaintionl gates) of all cells and signals.

Parameters

Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.

Return value

(none)

Hardware::Prepare::Probes

Places standard probes on all considered register inputs and primary outputs of the circuit.

Parameters

Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.

Return value

(none)

Hardware::Prepare::ExtendProbe

Extends a standard probe to a glitch-extended probe.

Parameters

Hardware::CircuitStruct* Circuit - The hardware circuit.
Hardware::LibraryStruct* Library - The circuit library.
Hardware::SettingsStruct* Settings - The evaluation settings.
int MainSignalIndex - The signal index of the standard probe.
int SignalIndex - The signal index of the current probe extension.
int* Buffer_int - The list of glitch-extensions.

Return value

(none)

Hardware::Prepare::Simulation

Prepares the simulation settings.

Parameters

Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
char* EvaluationResultFolderName - The name of the result directory.

Return value

(none)

Hardware::Prepare::SharedData

Prepares the shared data.

Parameters

Hardware::CircuitStruct* Circuit - The hardware circuit.
Hardware::SettingsStruct* Settings - The evaluation settings.
Hardware::SharedDataStruct* SharedData - The shared data.

Return value

(none)

GenerateProbingSets

The GenerateProbingSets files (inc/Hardware/GenerateProbingSets.hpp and src/Hardware/GenerateProbingSets.cpp) define all functions for generating the probing sets for evaluation. These files implement the following functions:

Hardware::GenerateProbingSets::All

Does the complete generation of all required probing sets.

Parameters

Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Hardware::GenerateProbingSets::GenerateProbes

Generates a list of all considered standard probes and a second list with all considered glitch extensions.

Parameters

Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Hardware::GenerateProbingSets::Multivariate

Generates all multivariate probing sets.

Parameters

Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Hardware::GenerateProbingSets::Univariate

Generates all univariate probing sets.

Parameters

Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Hardware::GenerateProbingSets::InDistance

Checks whether a probing set satisfies the distance bounds.

Parameters

Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::TestStruct& Test - The evaluation details.
std::vector& ProbingSet - A single probing set.

Return value

(none)

Hardware::GenerateProbingSets::Extend

Extend probing sets to glitch-extended probing sets.

Parameters

Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
unsigned int Start - The index of the first probing set.
unsigned int End - The index of the last probing set.

Return value

(none)

Hardware::GenerateProbingSets::RemoveDuplicatedProbes

Removes all duplicates (probes that occur twice or more) from the probing sets.

Parameters

Hardware::TestStruct& Test - The evaluation details.
unsigned int Start - The index of the first probing set.
unsigned int End - The index of the last probing set.

Return value

(none)

Hardware::GenerateProbingSets::RemoveDuplicatedProbingSets

Removes all probing sets which are fully covered by another probing set.

Parameters

Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
unsigned int Start - The index of the first probing set.
unsigned int End - The index of the last probing set.

Return value

(none)

Hardware::GenerateProbingSets::InitializeCompactDistributions

Initialize (pre-allocate) the distributions of all probing set in compact mode.

Parameters

Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Simulate

The Simulate files (inc/Hardware/Simulate.hpp and src/Hardware/Simulate.cpp) define all functions for the simulation procedure. These files implement the following functions:

Hardware::Simulate::EvaluateOperation

Simulates the result of a single operation.

Parameters

Hardware::OperationStruct Operation - The operation to evaluate.
uint64_t *Values - The input state.
char Intermediate - The intermediate state index.

Return value

(none)

Hardware::Simulate::All

Simulates the whole circuit.

Parameters

Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
int SimulationIndex - The simulation index.
boost::mt19937& ThreadRng - The PRNG.

Return value

(none)

Analyze

The Analyze files (inc/Hardware/Analyze.hpp and src/Hardware/Analyze.cpp) define the main functions for the leakage detection. These files implement the following functions:

Hardware::Analyze::All

Does the whole leakage detecttion.

Parameters

CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)

Hardware::Analyze::RobustProbingSecurity

Evaluates the robust probing security of the circuit.

Parameters

CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.

Return value

(none)