Thứ Hai, 18 tháng 3, 2019

[Perl][Thiết kế lõi IP bằng script] Bài 5 - Phân tích tổng quan TOOL tạo RTL code cho ví dụ minh họa

Sau khi hoàn thành bước phân tích cấu trúc lõi IP trong phần phân tích TOOL ở bài 4. Bài viết này mô tả chi tiết bước phân tích tổng quan TOOL trên ví dụ đã trình bày. Các công việc cần thực hiện trong bước này đã mô tả ở bài 1.

1) Tổng quan
Bước này thực hiện các công việc cơ bản sau đây:
  1. Xác định cấu trúc tool: số lượng thư mục, số lượng file sẽ tạo ra và vị trí lưu trữ các thư mục/file. Mô tả chức năng,vai trò của các thư mục/file.
  2. Phân tích các chức năng của tool:
    1. Xây dựng các bước hoạt động, chức năng cơ bản (các bước hoạt động trung gian) của SCRIPT.
    2. Xác định chức năng của mỗi bước hoạt động.
    3. Xác định input và output của mỗi bước.
  3. Phân tích chi tiết các thành phần tool:
    1. Xác định vị trí rõ phần biến đổi nào của RTL code thuộc SCRIPT, phần biến đổi nào thuộc thư viện.
    2. Mô tả flow chart cho mỗi thành phần thực thi của tool
Mục tiêu là tạo được một file mô tả tổng quan các thành phần của tool và cấu trúc tool.
2) Xác định cấu trúc TOOL
Đầu tiên, tool cần có một tên riêng để thuận tiện trong việc mô tả. Trong ví dụ này, sẽ có tên là "router generator". Tên này cũng sẽ là tên thư mục chính chứa tất cả các thành phần của tool.
Hình 1: Cấu trúc thư mục tool "router generator"
Thư mục "router_generator" sẽ gồm các thành phần cơ bản sau:
  • verilog_lib: là thư viện chứa các file RTL code cố định. Đây là một trong các input của tool.
  • verilog_rtl: là thư mục chứa các file RTL code được tạo ra từ tool. Đây là output của tool.
  • router_spec.xls là file excel chứa thông tin cấu hình của người dùng (user). Đây là một trong các input của tool. Tool sẽ đọc file này để lấy các thông số cấu hình và tạo ra RTL code.
  • *.pm (nếu có) là các file Perl chứa các package dùng chung cho các file thực thi ".pl"
  • *.pl là các file Perl thực thi một hoặc nhiều chức năng nào đó.
Bước này có vai trò quan trọng giúp bạn xác định các thành phần có thể có của tool, vai trò của các thành phần và mối liên hệ cơ bản giữa chúng.
3) Phân tích các chức năng cơ bản của TOOL
Chức năng cơ bản của TOOL được phân tích dựa trên cấu trúc chi tiết của lõi IP trong bài 3bài 4. Đối với thiết kế này chúng ta cần có RTL code của khối server, khối arbiter và khối router. Về cơ bản:
  • Khối server có sự thay đổi về số lượng bit của một số port, dung lượng FIFO và mạch giải mã địa chỉ
  • Khối arbiter có sự thay đổi về số lượng bit của một số port, mạch giải mã chọn dữ liệu và mạch giải mã gửi ACK
  • Khối router là module top có sự thay đổi về số lượng instance của server và arbiter. Bên cạnh đó, kết nối ở các port có số lượng bit thay đổi cũng thay đổi.
Về cơ bản, với các phân tích trên, chúng ta sẽ có:
  • Một Perl code (.pl) tạo ra RTL code của khối server, tên là gen_server_rtl.pl
    • Input:
      • router_spec.xls
      • verilog_lib/?
    • Output: verilog_rtl/server.v
  • Một Perl code (.pl) tạo ra RTL code của khối arbiter, tên là gen_arbiter_rtl.pl
    • Input:
      • router_spec.xls
      • verilog_lib/?
    • Output: verilog_rtl/arbiter.v
  • Một Perl code (.pl) tạo ra RTL code của khối router, tên là gen_arbiter_rtl.pl
    • Input:
      • router_spec.xls
      • verilog_lib/?
    • Output: verilog_rtl/router.v
Bên cạnh đó, việc tạo ra các RTL code trên đều cần thông số cấu hình đọc từ file excel "router_spec.xls" nên sẽ có một Perl code thực hiện việc này. File này sẽ được viết như một package (.pm) gọi là "get_config.pm".
  • Input: router_spec.xls
  • Output: Các thông số cấu hình lưu trong các biến và sẽ được sử dụng bởi các file "*.pl"
Cuối cùng, chúng ta cần một file gọi tất cả các thành phần Perl đã tạo để thực thi tạo ra RTL code hoàn chỉnh cho một lõi IP. File này tên là "gen_all_rtl.pl".
  • Input:
    • router_spec.xls
    • gen_server_rtl.pl
    • gen_arbiter_rtl.pl
    • gen_router_rtl.pl
  • Output:
    • verilog_rtl/server.v
    • verilog_rtl/arbiter.v
    • verilog_rtl/router.v
Hình 2: Các file Perl của tool "router generator"
4) Phân tích chi tiết các thành phần tool - Cấu trúc file cấu hình "router_spec.xls"
Như đã trình bày, tool sẽ sử dụng một file excel cho phép người sử dụng điền cấu hình mong muốn của lõi IP. Tool sẽ đọc file excel này để lấy thông số và tạo ra RTL code. Cấu trúc file excel có thể được tạo tùy ý nhưng các ô điền thông số cấu hình phải cố định và tên sheet cũng phải cố định để việc đọc file đơn giản hơn.
Hình 3: Cấu trúc sheet "router_config" của file "router_spec.xls"
Trong ví dụ này, tác giả tạo một file excel có sheet "router_config" chứa các thông số cấu hình như sau:
  • Độ rộng bit địa chỉ ADDR_WIDTH được điền vào ô D3. Giá trị ô này sẽ quyết định đến giá trị SEL_WIDTH ở ô D7. Chú ý ô D7 là công thức tính tự động từ ô D3. Giá trị ô D7 là 2^D3.
  • Số lượng source SOURCE_NUM được điền vào ô D4.
  • Độ rộng con trỏ POINTER_WIDTH của FIFO trong server được điền ở ô D5. Giá trị ô này sẽ quyết định đến giá trị FIFO_STAGE ở ô D8. Chú ý ô D8 là công thức tính tự động từ ô D5. Giá trị ô D7 là 2^D5.
5) Tóm tắt
Bài này giúp bạn phân tích cơ bản các thành phần chức năng tool. Bước phân tích này giúp bạn hiểu tool có thể cần những thành phần nào? để làm gì? còn việc các thành phần được xây dựng chi tiết ra sao sẽ có trong những bài tiếp theo.

0 bình luận:

Đăng nhận xét