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

Purpose of HDL

For logic simulation

For synthesis