ShadowFI commands

Create projects

create [options] <arguments>
create:

Create a shadowfi project.

options:

--project-dir <path>: Specifies the absolute path of the project: default: <shadowfi-root>/projects.

--design-config <config-file>: Specifies a yaml file with the project configuration. For more details regarding the configuration parameters, please refer to the configuration options in section Configuration Details.

arguments:

--name <name-project>: Defines the name of the project.

examples:

create --name Projectv1

create --name Projectv1 --project-dir /home/user/projects

create --name Projectv1 --design-config /home/user/config/proj_config.yml

Load project

load <arguments>
load:

Loads a shadowfi project.

arguments:

--project-dir <path-to-project>: Specifies the absolute path of the project.

examples:

load --project-dir /home/user/projects/Projectv1

Elaborate HDL

elaborate  <>
elaborate:

Reads the HDL design and transforms it into a Hierarchical RTL netlist

examples:

elaborate

SBTR place & routes

pnr [options] <>
pnr:

Places and routes the saboteur circuits in the desgn

options:

--cmp-sel <opt>: Indicates the insertion mode of saboteurs: opts = [random, top, hierarchy]; default=random

random: random selection of components across the design hierarchy top: fatten the complete design and select the top component as fault insertion target hierarchy: explicit component selection provided by the user

--max-sel-cmp <num>: Maximum number of intrumented components, default: 4

--user-cmp-sel <config yaml file>: A yaml file containing the selected target components for fault instrumentation, For more details regarding the configuration parameters, please refer to the configuration options in section Configuration Details.

--fault-model <opt>: Indicates the fault model. opts = [S@, SET, SEU, MEU], default: S@

S@: stuck-at fault model SET: Single Event Transient SEU: Single Event Upset MEU: Multibit Even Upsets

--fault-sampling <opt>: Indicates the fault insertion sampling. opts=[Full, Statistical]

Full: inserts saboteurs in all nets of selected components Statistical: inserts saboteurs on a subset of nets using statitical samplig

examples:

pnr

pnr --cmp-sel random

pnr --fault-model SEU

pnr --fault-sampling Statistical

TestBench Setup

tb_setup [options] <>
tb_setup:

Testebench configuration and compile. This command can be used when the CUT is instantiated directly on the top testbench designs. For more complex design and simulation structures, please refer to the configuration options in section Configuration Details.

options:

--tb-config <config-file>: configuration file in yaml format, please refer to the documentation to obtain further information regarding the condifuration details, please refer to the configuration options in section Configuration Details.

--kwargs <key1=val key2=val ..>: custom configuration values in the form key:val, it support nested key-value pairs, e.g. a.b.c=val

examples:

tb_setup --tb-config <path-to-tb-config-file.yaml>

tb_setup --kwargs testbench_config.external_tb_build=True

Fault Simulation Setup

fsim_setup [options] <>
fsim_setup:

Configures the simulation parameters. Be sure the simulation has been properly compiled and there is a valid verilator executable.

options:

--fsim-config <config-file>: configuration file in yaml format, please refer to the documentation to obtain further information regarding the condifuration details.

--kwargs <key1=val key2=val ..>: custom configuration values in the form key:val, it support nested key-value pairs, e.g. a.b.c=val

--noset-run-scripts: This flag enables or disables the run scripts configuration, when used the user must manually copy the scripts to the project. For more details please refer to the configuration options in section Configuration Details.

--run-script <path-to-run.sh>: run.sh script to be added to the project

--sdc-check-script <path-to-sdc-check.sh>: sdc-check.sh script to be added to the project

examples:

fsim_setup --fsim-config <config-file>

fsim_setup --kwargs sim_config.jobs=10 sim_config.sim_runtime=2000 --noset-run-scripts

fsim_setup --fsim-config <config-file>  --run-script <path-to-run.sh> --sdc-check-script <path-to-sdc-check.sh>

Fault Simulation Execution

fsim_exec [options] <>
fsim_exec:

launch a fault injection campaing.

options:

--hpc: enables distributed computing engines on HPC systems, for running this option it is necesary to create a paralell world first, please check the section Quick Start Guide.

examples:

fsim_exec

fsim_exec --hpc