This is a simple counter that is incremented every time the first input bit is set.
The trick is that is it locked using logic locking, so that it won't work unless the proper key is set first.
You need to initialize the key with inputs "11100110" (or 0xe6). The 6 most significant bits (111001) are the key, and the second bit is the key enable. Then you can run the counter: "00000001" will increment it, while "00000000" will keep the same value.
This is purely self-contained to demonstrate logic locking.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | DO_INCR | CNT_0 | |
1 | KEY_ENABLE | CNT_1 | |
2 | KEY_0 | CNT_2 | |
3 | KEY_1 | CNT_3 | |
4 | KEY_2 | CNT_4 | |
5 | KEY_3 | CNT_5 | |
6 | KEY_4 | CNT_6 | |
7 | KEY_5 | CNT_7 |