notes/education/computer engineering/ECE2700/Verilog.md

40 lines
1.3 KiB
Markdown
Raw Permalink Normal View History

2025-01-17 21:58:02 +00:00
## Boolean Engineering
- Truth tables
- Only practical for small circuits
- Schematic capture
- Using CAD to place logic gates on a virtual canvas
- Facilitates *hierarchical design*
- Good for larger circuits
- Don't scale well for very large circuits
- Hardware Description Languages
- Enables hierarchical design
- Standardized by IEEE
- Design is more portable
- Usable in combination with schematic design
# Verilog
2025-01-17 22:03:02 +00:00
- Originally developed by Gateway Design Automation
- Put in public domain in 1990
- Standardized in 1995
- Originally intended for simulation of logic networks, later adapted to synthesis
```verilog
2025-01-17 23:01:27 +00:00
// V---V---v--v-----portlist (not ordered)
2025-01-17 22:03:02 +00:00
module example1(x1, x2, s, f);
2025-01-17 23:01:27 +00:00
// Defining the types of the various ports
2025-01-17 22:03:02 +00:00
input x1, x2, s;
2025-01-17 22:51:27 +00:00
output f;
2025-01-17 23:01:27 +00:00
// The first argument is the output value.
// In this example, `k`, `g`, `h`, `f` are implicitly declared.
// They could also be declared manually with the syntax `wire foo`, alongside the `input` and `output` declarations
2025-01-17 23:06:27 +00:00
not(k, s); // You can also NOT a variable using a tilde, eg `~s`
2025-01-17 22:51:27 +00:00
and(g, k, x1);
and(h, s, x2);
or(f, g, h);
2025-01-17 22:56:27 +00:00
endmodule
```
2025-01-17 23:06:27 +00:00
- Behavioral Verilog describes broader behavior, at a higher level
- Structural Verilog describes how things are laid out at a logic level