Skip to content

Generate ATPG for fault detection on Verilog circuits. C++/QT

License

Notifications You must be signed in to change notification settings

xinoip/verilog-atpg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
xinoip
Mar 15, 2022
452b8b9 · Mar 15, 2022

History

40 Commits
Nov 1, 2021
Jan 14, 2022
Jan 14, 2022
Mar 15, 2022
Nov 1, 2021
Jan 7, 2022
Jan 16, 2022
Nov 1, 2021
Nov 1, 2021
Mar 15, 2022
Nov 1, 2021
Nov 1, 2021
Jan 14, 2022
Jan 14, 2022
Jan 7, 2022
Jan 14, 2022
Nov 1, 2021
Nov 1, 2021
Nov 1, 2021
Jan 14, 2022
Dec 24, 2021
Jan 14, 2022
Jan 14, 2022
Jan 14, 2022
Nov 1, 2021
Nov 1, 2021
Nov 1, 2021
Jan 14, 2022
Jan 7, 2022
Nov 1, 2021
Nov 1, 2021
Jan 14, 2022
Jan 14, 2022
Jan 16, 2022
Nov 1, 2021
Nov 1, 2021
Nov 1, 2021
Nov 1, 2021
Nov 1, 2021

Repository files navigation

verilog-atpg

demo video

This tool takes a Structural Verilog source code as an input and applies ATPG algorithms to that circuit. Algorithm results will generate input and output signal patterns that will test the resulting circuit for manufacturing defects.

Features

verilog-atpg can do the following:

  • Generate ATPG for stuck-at-0 fault
  • Generate ATPG for stuck-at-1 fault
  • Delay timing analysis
  • Critical path calculation from delays
  • Path sensitization
  • Critical path sensitization
  • Delay fault detection
  • False path detection

Build

You can use QTCreator with provided .PRO file but if you wish to build without QTCreator you can use following.

Get required QT dependencies. For ubuntu:

sudo apt install qt5-default qt5-qmake libqt5charts5-dev qtmultimedia5-dev

Build the project.

qmake
make

For debug you can build the project like following:

qmake CONFIG+=debug
make

Some test cases

dcirc1 N30 stuck-at-0
PIs: N5[1] N4[x] N3[x] N2[0] N1[1] N0[x]
POs: N15[D] N14[x]

dcirc1 N30 stuck-at-1
PIs: N5[1] N4[x] N3[x] N2[1] N1[1] N0[0]
POs: N15[E] N14[x]

dcirc2 N25 stuck-at-0
PIs: N2[1] N1[1] N0[1]
POs: N7[E]

dcirc2 N25 stuck-at-1
PIs: N2[1] N1[1] N0[0]
POs: N7[D]

c17 N11 stuck-at-0
PIs: N7[1] N2[1] N6[x] N3[0] N1[x]
POs: N23[D] N22[x]

c17 N11 stuck-at-1
PIs: N7[1] N2[1] N6[1] N3[1] N1[x]
POs: N23[E] N22[x]

c17 sensitize path: N3 NAND2_2 N11 NAND2_4 N19 NAND2_6 N23
PIs: N7[1] N2[0] N6[1] N3[C] N1[x]
POs: N23[C] N22[x]

dcirc2 sensitize path: N0 AND2_4 N25 NOR2_6 N7
PIs: N2[1] N1[1] N0[C]
POs: N7[C]

provided 3 delay files for test circuits

Test Circuits

d_test_circ_1.v

dcirc1

d_test_circ_2.v

dcirc2

c17.v

c17circ

false_path.v

falsepathcirc