Focus on higher level abstraction and focus on just the logical function and abstract the gates
A block of hardware with inputs and outputs is a module.
Behavior
structural module
module fn (input a, b, c, output y):
assign y = ~a & ~b & ~c | a;
assign
indicates that it is a combinational circuit. We are setting inputs a b c to output y
Interface is important and defines good modularity for the behavior or structure of a hardware component
For logic simulation
For synthesis