6

Tôi có băng ghế thử nghiệm dựa trên verilog, được giao tiếp với nguồn' C sử dụng DPI. Bây giờ sử dụng DPI tôi đang lập kế hoạch để viết toàn bộ phần vững của tôi. Để làm điều này tôi cần 3 điềuXuất nhiệm vụ sang 'C bằng DPI

  • Đăng ký đọc
  • Đăng ký Viết
  • handler
  • Interrupt Như tôi hiểu, đăng ký lần đọc và viết là công việc mà tôi cần phải xuất khẩu từ RTL thử nghiệm băng ghế dự bị. Và trình xử lý ngắt (tôi đã thực hiện bằng cách nhập hàm từ 'C).

Tôi đã kiểm tra hầu hết tài liệu về nhịp và không tìm thấy gợi ý hữu ích nào. Tôi cũng đã đăng ký với cộng đồng người dùng cadence nhưng có vẻ như tôi không thể đặt câu hỏi cho đến khi họ phê duyệt đăng ký của tôi.

Chỉ trong trường hợp ai đó biết điều này, sẽ đánh giá cao sự trợ giúp của họ.

+1

Điều gì xảy ra với dấu nháy đơn trước chữ C? Đó có phải là một ngôn ngữ khác với C? – unwind

Trả lời

3

Thực ra tôi đã tìm ra một thứ như thế này.

//--From RTL --- 
export "DPI" task reg_read; 

task reg_read; 
    input int nAddr; 
    output int nVal; 

// -- read implementation -- 

endtask 

// -- From C code 
extern void reg_read (int nAddr, int *pVal); 

void test_read (void) 
{ 
    int nRegVal; 

    // Dummy checking !! 
    reg_read (0x100, &nRegVal); 
} 

// -- Again in RTL -- 
import "DPI" context task test_read(); 

Điều này phù hợp với tôi khi sử dụng ncverilog.

2

Cool ... Tôi thực sự đã viết một bài viết về chủ đề này. link

Giấy thực sự xuất các lần đọc và ghi và đăng ký trên DPI và sau đó thêm trình thông dịch TCL vào nó để bạn có thể sử dụng TCL để điều khiển sim của bạn. Đây là điều mà các anh chàng trong phòng thí nghiệm yêu thích vì tất cả các công cụ của họ đã có trong Tcl.

Bạn chỉ có thể thực hiện theo các hướng dẫn để tích hợp các cuộc gọi chức năng của bạn từ C sang SV trên DPI và sau đó dừng lại khi nội dung TCL được phát.

+0

Liên kết đã cho không hợp lệ. –

+1

Huh ... có vẻ như IC Journal không tồn tại nữa. Đây là một liên kết đến tổng quan về cách hoạt động của nó, nhưng mức độ khá cao: https://www.eejournal.com/article/20080826_vmm/ Nếu tôi có thể tìm thấy bài viết gốc được đăng ở bất cứ nơi nào tôi sẽ quay lại và để lại một liên kết ở đây. – SDGator