Difetto is a work-in-progress design-for-test (DFT) flow based on the development version of LibreLane. It is a complete rewrite of Fault.
It uses OpenROAD, Quaigh, cocotb, a custom Yosys plugin, custom methodology scripts, and a custom OpenDB-based script all for the implementation of test-enabled ASIC circuits.
See documentation for the Yosys plugin here.
You will need Nix installed as per the LibreLane documentation.
nix develop will drop you into an environment where both LibreLane, Difetto
and all requisite plugins are installed.
The plugin provides three flows:
DifettoPNR: Modified classic flow to handle chain insertionDifettoATPG: Using data available afterDifetto.CutinDifetto.PNR, performs ATPG for a given chip.DifettoTest: Using data fromDifettoATPGandDifetto.PNR'sDifetto.Chain, verify the integrity of the scan chain and run test vectors to ensure everything is A-OK.
While this three-flow approach may be inconvenient to some, it allows engineers to tackle ATPG and Testing, both very time consuming, in parallel with routing.
You may invoke librelane.help on any of the mentioned flows or steps for more
info, e.g. librelane.help DifettoPNR or librelane.help Difetto.Chain.
There are a number of DFT-specific configuration variables you can find using
librelane.help, check the # DFT section of test/spm/config.yaml for an
example.
Here are the commands for the included example:
python3 -m librelane ./test/spm/config.yaml --run-tag new_pnr --flow DifettoPNR --overwrite
python3 -m librelane ./test/spm/config.yaml --run-tag atpg --flow DifettoATPG --overwrite \
--with-initial-state ./test/spm/runs/new_pnr/*-difetto-cut/state_out.json
python3 -m librelane ./test/spm/config.yaml --run-tag test --flow DifettoTest --overwrite \
--with-initial-state ./test/spm/runs/atpg/*-difetto-quaighsim/state_out.json \
--with-initial-state ./test/spm/runs/new_pnr/*-difetto-chain/state_out.json- Compatible with a certain LibreLane WIP branch, not upstream.
- No support for a different "test" SDC for chain and signoff
- Only confirmed to work with the Google/Skywater 130nm PDK
- Requires an explicit tech mapping file — automatic scan cell identification not supported.
- There is currently no support for Macros.
- Variable names are not final.
The Apache License, version 2.0. See 'License'.