Skip to content

donn/difetto

Repository files navigation

Difetto (ALPHA)

License: Apache 2.0 Code Style: black Built with Nix

Invite to FOSSi Chat

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.

Yosys Plugin

See documentation for the Yosys plugin here.

LibreLane Plugin

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 insertion
  • DifettoATPG: Using data available after Difetto.Cut in Difetto.PNR, performs ATPG for a given chip.
  • DifettoTest: Using data from DifettoATPG and Difetto.PNR's Difetto.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

Current Limitations

  • 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.

License

The Apache License, version 2.0. See 'License'.

About

[WIP] Open-source DFT flow

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published