2013-08-23 31 views
6

Có bất kỳ tính năng nào của SV mà khối chương trình cung cấp không thể được sao chép bằng các phương pháp khác không?Khối chương trình SystemVerilog so với testbench truyền thống

Phiên bản ít cụ thể của câu hỏi này là: tôi có nên làm phiền với các khối chương trình để xác minh không? Tôi đang di chuyển từ một môi trường mà chúng tôi đã bị ràng buộc với Verilog-95 đến một môi trường nơi SV được hỗ trợ, và tôi tự hỏi liệu tôi có đang tạo thêm công việc cho bản thân mình không bằng cách sử dụng các khối chương trình.

Trả lời

9

Kiểm tra IEEE Std 1800-2012 § 3.4 & § 24. Để biết mô tả đầy đủ về program khối.

Trong một thời gian ngắn, tóm tắt đầy đủ, một khối program:

  • không thể không thể chứa always thủ tục, primitive trường hợp, module trường hợp, interface trường (virtual interface và cổng interface được phép), hoặc program trường hợp khác.
  • chỉ định lập lịch trong vùng Phản ứng. Điều này ngăn ngừa điều kiện chủng tộc.
  • có một nhiệm vụ hệ thống bổ sung $exit, kết thúc trường hợp program gọi nó.
    • Mô phỏng sẽ chấm dứt khi tất cả các trường hợp program đã thoát.
  • chủ yếu là khối module ngoại trừ như đã nêu ở trên.

Ý tưởng về khối program là tạo sự tách biệt rõ ràng giữa thử nghiệm và thiết kế. Trong các phiên bản trước của SystemVerilog (trước IEEE 1800), việc khởi tạo class thường bị giới hạn ở các khối program. Điều này nhấn mạnh việc phân chia thử nghiệm và thiết kế. Nó cũng làm cho các khối program quan trọng đối với các kỹ sư xác minh muốn sử dụng lập trình hướng đối tượng trong luồng của họ. Kể từ IEEE 1800, một class có thể được xác định và khởi tạo ở hầu hết mọi nơi. Kết quả là, các khối program trở nên ít đủ.

Hôm nay, ý kiến ​​về tính hữu ích của khối program được chia. Từ một vài quy ước cuối cùng tôi đã thực hiện, xu hướng dường như có lợi cho việc bỏ rơi các khối program. Điều này là do những lợi thế có thể đạt được bằng các phương pháp khác. Lập kế hoạch trong vùng Phản ứng có thể được thực hiện với các khối clocking. Một mailbox, hàng đợi ([$]), hoặc mảng kết hợp ([*]) có thể được sử dụng để xử lý thông minh mô phỏng chấm dứt chạy nhiều thử nghiệm. Cá nhân, tôi vẫn thích sử dụng các khối program và sử dụng initial forever làm tương đương always khi cần. Nếu bạn dự định sử dụng UVM, thì một băng ghế thử nghiệm không phải là program có thể hoạt động tốt hơn cho bạn.

Cuối cùng, nó thực sự đi kèm theo sở thích phương pháp. Tốt nhất là bạn nên tự mình đánh giá và thử nó.

+0

Cảm ơn! – dan

1

Tôi không khuyên bạn nên sử dụng các khối chương trình - thay vào đó hãy sử dụng mô-đun. Tôi đã viết một số detailed article về điều này vài năm trước đây.

Các vấn đề liên quan