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.
semicon_lab.jpg

Tìm hiểu Interface trong SystemVerilog

E-mail Print PDF

Một trong những tính năng hay nhất mà SystemVerilog hỗ trợ là từ khóa interface. Các kĩ sư thiết kế không còn phải tốn thời gian để lặp đi lặp lại công việc nối dây (wire connectivity) giữa module với module, hay module với testbench. 

Interface sẽ giúp công việc này được thực hiện một cách nhanh chóng và dễ dàng. Đồng thời, hạn chế bug xảy ra như kiểu nối dây cũ mà Verilog hỗ trợ.

Về cơ bản, interface hỗ trợ việc nhóm (grouping) các nhiều tín hiệu lại thành một tín hiệu, làm giảm độ phức tạp khi handle các tín hiệu này, đồng thời giúp cho việc coding dễ dàng. Interface có thể bao gồm cả task, function, parameter, …

Ví dụ đơn giản về cách khai báo và sử dụng interface như sau:

// Interface definition

interface Bus;

logic [7:0] Addr, Data;

logic RWn;

endinterface

// Using the interface

module TestRAM;

Bus TheBus(); // Instance the interface

logic[7:0] mem[0:7];

RAM TheRAM (.MemBus(TheBus)); // Connect it

initial

begin

TheBus.RWn = 0; // Drive and monitor the bus

TheBus.Addr = 0;

for (int I=0; I<7; I++)

TheBus.Addr = TheBus.Addr + 1;

TheBus.RWn = 1;

TheBus.Data = mem[0];

end

endmodule

module RAM (Bus MemBus);

logic [7:0] mem[0:255];

always @*

if (MemBus.RWn)

MemBus.Data = mem[MemBus.Addr];

else

mem[MemBus.Addr] = MemBus.Data;

endmodule

Ở đây chúng ta có thể thấy, việc kết nối giữa testbench và DUT chỉ được thực hiện một cách rất đơn giản bằng 1 dòng code.

RAM TheRAM (.MemBus(TheBus)); // Connect it.

 

Trung Tâm Đào Tạo Thiết Kế Vi Mạch SEMICON

Đ/c: 23/38 Đường trục, F13, Q Bình Thạnh, TP.HCM

HotLine: 0972 800 931( Tu vấn miễn phí và đăng kí khóa học tại SEMICON)

 

Related Articles

Chat Zalo