Sự khác biệt giữa RTL và phiên bản hành vi


10

Ai đó có thể cho tôi biết sự khác biệt giữa mã RTL và mã Verilog hành vi không? Có bất kỳ ranh giới cắt rõ ràng giữa các thiết kế ở hai cấp độ này?

Câu trả lời:


5

Mã hành vi ở cấp độ cao hơn và thường không thể được tổng hợp. Các cấu trúc như vòng lặp, độ trễ và câu lệnh "ban đầu" là hành vi.

Mã RTL ở cấp độ thấp hơn và được dự định tổng hợp. Nó định nghĩa một mạch là sự kết hợp của các thanh ghi được kết nối với nhau và các hoạt động được thực hiện trên các tín hiệu giữa các thanh ghi đó.

Lấy từ Yahoo Hỏi Đáp và được tìm thấy ngay lập tức với Google!


1
các vòng lặp có thể được sử dụng trong mã rtl với điều kiện số lần lặp bị giới hạn. Một số công cụ cũng hỗ trợ việc sử dụng các khối intital để chỉ định các điều kiện tăng sức mạnh.
Peter Green

Câu hỏi / câu trả lời này thực sự là câu trả lời đầu tiên mà Google đưa ra cho tôi
Drewster

3

Mã "Cấp độ đăng ký" là mã được mô tả dưới dạng các thanh ghi và logic tổ hợp nằm giữa chúng và dự định sẽ được sử dụng làm đầu vào cho một công cụ tổng hợp. Mã dính vào một tập hợp con tổng hợp [1] của ngôn ngữ. Không có sự chậm trễ rõ ràng, tất cả thời gian là về các cạnh đồng hồ. Cấu trúc đại diện cho chốt kích hoạt cấp thường được tránh. Các thanh ghi thường được tắt một số lượng nhỏ đồng hồ có chi tiết có thể được cung cấp cho bộ phân tích thời gian. Logic tổ hợp thường được mong đợi [2] sẽ ổn định trong một chu kỳ đồng hồ duy nhất, điều này hạn chế sự phức tạp của nó. Nó ở mức cao hơn mô hình mức cổng nhưng nó vẫn xác định giá trị nào mà mỗi thanh ghi có trên mỗi chu kỳ đồng hồ.

Mã "hành vi" nói chung là mã mô tả hành vi ở mức cao hơn để sử dụng trong mô phỏng nhưng nó không có ý định tổng hợp. Nó có thể được sử dụng để mô tả môi trường xung quanh thiết kế của bạn trong một mô phỏng. Nó có thể được sử dụng như một bước đầu tiên trong thiết kế để có được thiết kế tổng thể trước khi thiết kế RTL chi tiết của các mô-đun riêng lẻ bị vượt qua.

[1] Tập hợp con chính xác được phép thay đổi giữa các công cụ tổng hợp.
[2] Nếu nó không giải quyết trong một chu kỳ so với mô phỏng và tổng hợp có thể cho kết quả khác nhau và bộ phân tích thời gian sẽ hiển thị vi phạm trừ khi được thông báo rõ ràng là không.


2

Một định nghĩa khái quát hơn.

Mã hành vi: Theo định nghĩa, nó xác định hành vi của một thành phần kỹ thuật số. Nó không cung cấp thông tin về cách nó sẽ được thực hiện thành CTNH thực tế (tổng hợp). Nó sẽ không cung cấp thông tin về cách các thanh ghi và cổng sẽ được thực hiện để thực hiện thao tác cần thiết. Nó giống như viết một thuật toán hoặc FSM bằng C.

RTL: Đây là hình thức chính xác hơn của một thành phần kỹ thuật số. Nó cung cấp thông tin, cách mã sẽ được thực hiện như CTNH thực tế (sau khi tổng hợp). Ngoài ra, nó cung cấp thông tin về cách dữ liệu sẽ được chuyển giữa các thanh ghi và cổng.


1

Đó là cùng một ngôn ngữ, nhưng các phong cách khác nhau được sử dụng. Với kinh nghiệm bạn có thể phân biệt chúng nhanh chóng, đây là một vài đặc điểm của từng loại:

Mã phiên bản hành vi nhìn chung trông giống như một chương trình máy tính tuần tự chạy từ trên xuống dưới trong một initial beginkhối. Bạn có thể thấy không có cổng đầu vào / đầu ra được xác định trong các mô-đun hành vi cấp cao nhất, vì đầu ra có thể là cho các cơ sở giả lập, như bàn điều khiển $display()hoặc hệ thống tập tin có $openhoặc bộ nhảy dạng sóng với $dumpfile$dumpvars. Theo dõi sự chậm trễ giữa các câu lệnh được thực hiện bằng cách sử dụng thời gian mô phỏng chờ đợi, ví dụ #4000và gọi các tác vụ wishbone_master.checked_read(addr, value). Đối với các cấu trúc cấp cao hơn này, không rõ ràng công nghệ tổng hợp tương đương sẽ / có thể là gì.

Verilog để tổng hợp luôn có các cổng đầu vào / đầu ra, vì không có cổng kết nối, mô-đun không có tác dụng phụ và có thể được loại bỏ [1]. Độ trễ có thể được thực hiện bằng cách đếm chu kỳ của một số đồng hồ cụ thể. Lưu ý một số chức năng hệ thống Verilog, ví dụ $clog2(PARAMETER)có thể được cho phép trong mã để tổng hợp, vì vậy sự hiện diện của $functionnó không phải là một sự đảm bảo. Mã để tổng hợp có xu hướng bao gồm nhiều 'quy trình' độc lập với mỗi danh sách độ nhạy. Một số công nghệ cho phép initial begincác khối khởi tạo bộ nhớ để một lần nữa không đảm bảo.

Cuối cùng, người thiết kế biết mục đích của mã họ viết và sẽ gọi nó một cách thích hợp bằng bộ công cụ tổng hợp hoặc trong một trình giả lập.

[1] ngoại trừ các khối IP nhất định có thể thực hiện kết nối cửa sau với các cơ sở chip nội bộ, ví dụ: JTAG

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.