Phần mềm Quartus® II phiên bản 6.0 và 6.0 SP1 xử lý không chính xác các lựa chọn bit từ các biến đã ký do sự cố phần mềm đã biết. Mã Verilog liên quan đến các bit select từ các biến đã ký phải trả về các giá trị không được ký như được chỉ định trong Verilog LRM (Std 1364-2001 Phiên bản C, Giây 4.5.1).
Sự cố này không tồn tại trong các phiên bản 5.1 trở lên. Sự cố đã được khắc phục bắt đầu với phần mềm Quartus II phiên bản 6.1.
Như một ví dụ về vấn đề này, phần mềm Quartus II phiên bản 6.0 xử lý không chính xác mẫu mã sau:
reg [7:0] unrounded; reg [6:0] rounded; always @ (posedge clk) begin rounded
Phần mềm không nên mở rộng tín hiệu không thay đổi[0] để đảm bảo rằng giá trị một bit được thêm vào bit slice của unrounded[7:1]
.
Phần mềm Quartus II phiên bản 6.0 và 6.0 SP1 mở unrounded[0]
rộng tín hiệu thay vì không mở rộng tín hiệu. Trong ví dụ, unrounded[0]
nếu tín hiệu là 1 giá trị, phần mềm sẽ diễn giải 1 là dấu hiệu của số, và do đó chuyển đổi nó thành biểu thị có chữ ký 7 bit là -1 thay vì một giá trị chưa được ký. Do đó, phần mềm bổ sung -1 unrounded[7:1]
vào , thay vì thêm 1.
Để tránh vấn đề này (trong các phiên bản 6.0 hoặc 6.0 SP1), hãy thực hiện một trong các thao tác sau:
- Liên hệ với mySupport để yêu cầu bản vá 1.20 cho phần mềm Quartus II phiên bản 6.0 SP1.
- Đặt dấu ngoặc đơn xung quanh một trong các biến và buộc toàn bộ biểu thức được đánh giá là chưa được ký hiệu bằng cách sử dụng hàm Verilog-2001:
rounded
- Đệm thủ công các số không hàng đầu như sau (ví dụ: ghi rõ ràng các bit hàng đầu là 0):
rounded