Bài học SYSTEMC 7: MODULES trong SystemC: Hàm tạo lớp SC_MODULE

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
31
One piece
vimach.net
1. SC_CTOR
-- Các hàm tạo trong SC_MODULE thực hiện một số nhiệm vụ cụ thể. Những nhiệm vụ này bao gồm:
+ Khởi tạo/cấp phát sub-designs.
+ Kết nối sub-designs.
+ Xử lý thanh ghi với hạt nhân SystemC .
+ Cung cấp độ nhạy tĩnh.
-- Để đơn giản hóa coding, hệ thống cung cấp C-preprocessor (cpp) macro là: SC_CTOR(). Cú pháp của macro này sau:
Mã:
SC_CTOR(module_name)
:  Initialization // OPTIONAL
{
Subdesign_Allocation
Subdesign_Connectivity
Process_Registration
Miscellaneous_Setup
}
-- Lưu ý: Hàm tạo sẽ gọi process có nghĩa là tất cả các process này được thực hiện khi một đối tượng của module được khởi tạo hoặc giá trị bất kỳ của tín hiệu, cổng trong danh sách nhạy cảm.
-- Cũng lưu ý rằng tất cả các process là những methods nhưng ngược lại thì không phải: tất cả methods không phải đều là process. Process luôn được gọi từ các hàm tạo, và thường kết hợp với một danh sách độ nhạy. Cú pháp để xác định danh sách độ nhạy là: sensitivity << <sensitivity list>, trong đó sử dụng quá tải toán tử '<<'. Hơn nữa, tất cả các process được thực hiện đồng thời, trong khi đó methods được thực hiện tuần tự. Sẽ giới thiệu cụ thể ở phần sau.
** Ví dụ:
Mã:
#include "systemc.h"
SC_MODULE(nand2)          // declare nand2 sc_module
{
  sc_in<bool> A, B;       // input signal ports
  sc_out<bool> F;         // output signal ports

  void do_nand2()         // a C++ function
  {
    F.write( !(A.read() && B.read()) );
  }

  SC_CTOR(nand2)          // constructor for nand2
  {
    SC_METHOD(do_nand2);  // register do_nand2 with kernel
    sensitive << A << B;  // sensitivity list
  }
};
-- Trong ví dụ trên, hàm tạo khai báo rằng do_nand2 là một SC_METHOD, và nói rằng bất kỳ sự thay đổi trên các cổng A và B sẽ làm các hạt nhân thực hiện hàm (và do đó tính toán một giá trị mới cho F).