Phần 1: Latch Inference
Trong thiết kế mạch số bằng Verilog, một vấn đề thường gặp là latch inference – hiện tượng công cụ mô phỏng hoặc tổng hợp tự động suy diễn ra một phần tử lưu trữ (latch) mà designer có thể không hề mong muốn.
Khi nào latch inference xảy ra?
Khi trình mô phỏng hoặc công cụ tổng hợp đọc mã Verilog, chúng sẽ diễn giải nội dung như sau:
- Nếu trong một khối lệnh
case
hoặc khối điều kiệnif-else
, một số trường hợp xử lý giá trị đầu vào bị thiếu (không được mô tả rõ ràng), thì: - Ví dụ, nếu trong
case
ta xử lý giá trị 0, 1 nhưng bỏ sót giá trị 2, thì:
+ Công cụ sẽ hiểu rằng, nếu trạng thái hiện tại là 2, giá trị của biếny
sẽ giữ nguyên, bởi vì chúng ta không nói phải thay đổi nó thế nào.
+ Điều này đồng nghĩa với việc cần một phần tử lưu trữ để ghi nhớ giá trị cũ củay
– tức là, một latch sẽ được tạo ra.
Vậy nên, khi không mô tả đầy đủ các trường hợp, công cụ sẽ ngầm hiểu rằng designer muốn tạo một latch để lưu trữ giá trị trước đó.
