1. A method for providing multi-level security to a gate level information flow, the method comprising: receiving or specifying a security lattice having more than two security levels, wherein the security lattice defines how security levels relate to each other; receiving a hardware design implementing information flows including flows having security levels specified by the security lattice; creating logic for testing the hardware design in view of the security lattice; and outputting a logic function based upon the hardware design and the logic for testing to implement the security lattice.