Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Tìm hiểu về SystemVerilog Assertion

E-mail Print PDF

Verilog assertion có nhiều điểm hạn chế do bản thân ngôn ngữ không hỗ trợ trực tiếp việc viết Assertion mà phải thông qua các thư viện OVL hoặc PSL.

Thêm vào đó, assertion trong Verilog phải được viết sao cho transparent với các công cụ thiết kế (không được tổng hợp).

SystemVerilog Assertion khắc phục được các nhược điểm trên và hỗ trợ việc viết assertion một cách dễ dàng. Ưu điểm của SVA có thể kể đến như:

– Hỗ trợ viết assertion một cách ngắn gọn và súc tích.

– SVA mặc định sẽ không được tổng hợp bằng synthesis tool. Các kĩ sư thiết kế không phải tốn công thêm các pragma để tắt và mở assertion phục vụ cho synthesis

– SVA có thể được điều khiển để tắt mở như mong muốn, kể cả trong quá trình hệ thống đang reset.

– Hỗ trợ các severities khác nhau (mức độ cảnh báo lỗi)

SystemVerilog hỗ trợ hai cách viết assertion là immediate assertion và concurrent assertion

immediate assertion: Kiểm tra điều kiện tại một thời điểm xác định (thời điểm hiện tại)

syntax: tên_assertion(1) assert(2) điều_kiện_kiểm_tra(3) pass_state(4) else(5) failed_state(6)

(1): Tên assertion

(2): từ khóa

(3): Điều kiện kiểm tra của assertion

(4): Điều kiện thực thi nếu (3) pass

(5): từ khóa

(6): Điều kiện thực thi nếu (3) fail

Ví dụ về immediate assertion:

assert (data==read_data) $display (“Result is passed”); else $error(“Result is Failed”);

concurrent assertion: Kiểm tra điều kiện theo kiểu sequence (theo thời gian)

syntax: tên_assertion(1) assert property(2) điều_kiện_kiểm_tra(3) pass_state(4) else(5) failed_state(6)

Ví dụ về concurrent assertion

FULL_EMPTY assert property ( @(posedge clk) (!(buf_full &&buf_empty)) ) $display (“Result is passed”); else $error(“Result is Failed”);

Cho cả hai loại assertion, pass_state và failed_state là tùy chọn. Mặc định, nếu không khai báo:

– Nếu assertion pass, pass_state sẽ được bỏ qua

– Nếu assertion failed, công cụ kiểm tra sẽ in ra lỗi (error)

SVA hỗ trợ các loại severities sau:

$fatal

$error

$warning

$info

 

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương1000 usd

hãy đến với ngành vi mạch tại SEMICON

     HotLine: 0972 800 931 Ms Duyên

 

Last Updated ( Monday, 20 July 2015 19:13 )  
Chat Zalo