Add documentation
55 files changed
tree: c70b0297a7ce17eea7b43d4f315f7231f9afd134
  1. .github/
  2. def/
  3. docs/
  4. gds/
  5. lef/
  6. lib/
  7. mag/
  8. maglef/
  9. openlane/
  10. sdc/
  11. sdf/
  12. signoff/
  13. spef/
  14. verilog/
  15. .gitignore
  16. LICENSE
  17. Makefile
  18. README.md
README.md

Universal gates, self-documenting version

This project is an enhanced version of unigate-gf.

In normal mode, it contains four independent universal logic gates:

  • U21 on input pins 5-8 and output pin 32
  • U31 on input pins 9-14 and output pin 33
  • U41 on input pins 15-24 and output pin 34
  • U22 on input pins 25-30 and output pins 35-36

where Uij can be suitably wired to power, ground and inputs such that it implements any particular Boolean function on i inputs and j outputs.

There is an additional mux that selects one of the outputs of the above U22 based on input pin 31 and outputs it on pin 37. This allows us to transform U22 into another instance of U31.

In reference mode, it uses a lookup table to tell us how to wire the universal gates to achieve a specific Boolean function.

  • setting input pins 5-6 and 31 and clearing input pins 7-8 activates reference mode (this particular combination is never needed in normal mode)
  • use input pins 9-10 to select one of U21, U31, U41, U22
  • use input pins 11-26 to specify the truth table of the Boolean function
  • use input pins 27-30 to specify the input pin number to be wired
  • signal on output pin 32 means the selected pin should be wired to ground
  • signal on output pin 33 means the selected pin should be wired to power
  • signal on output pins 34-37 mean the selected pin should be wired to the inputs 1-4 of the Boolean function respectively