Blocking vs non-blocking: vì sao shift register 'mất tầng'
Tiên quyết
- Module A6: Verilog cấu trúc: Đang tải
- Initial, always và fork: đọc nhiều process cùng chạy: Đang tải
Sau bài này bạn sẽ
- Dự đoán giá trị biến sau một cạnh clock với = và <=
- Giải thích vì sao <= trong logic tuần tự cho ra đúng số thanh ghi
- Nhận diện race giữa testbench và DUT
Trực giác
Thanh ghi "chụp ảnh" đầu vào tại cạnh clock. <= mô hình đúng điều đó: mọi vế phải được đọc trước, rồi mới cập nhật. = thì cập nhật ngay, nên câu lệnh sau thấy giá trị mới.
Hai cách viết, hai phần cứng
Dự đoán waveform
Bug lab: race trong testbench
Kiểm tra
Tóm tắt
<=giữ đúng số tầng thanh ghi;=trong logic tuần tự có thể xoá tầng.- Testbench cũng cần tránh đổi tín hiệu đúng tại cạnh mà DUT lấy mẫu.
Nguồn và mức độ đối chiếu
- ChipVerify — Verilog tutorial, §7 Assignments / Blocking & Non-Blocking. Trích dẫn; nguồn mới xem mục lục. chỉ dùng làm danh mục chủ đề
- ChipVerify — Verilog tutorial, §7 Assignments. Trích dẫn; nguồn mới xem mục lục. danh mục chủ đề