Tôi hiện đang tham gia vào một dự án đại học để thực hiện bộ xử lý của một bộ hướng dẫn hiện có. Ý tưởng là vào cuối dự án, tôi sẽ có thể tổng hợp thiết kế này và chạy nó trong một đồ họa. Mọi thứ đang diễn ra tốt đẹp cho đến nay, tôi đã bắt đầu triển khai thiết kế trong Verilog HDL vài ngày trước và có một phiên bản rất đơn giản hoạt động. Bây giờ vấn đề: Tôi đã liên lạc với một số người đã tham gia thiết kế phần cứng trong nhiều năm và họ đề nghị rằng trước khi tôi đi xa hơn, tôi nên chuyển sang sử dụng SystemC để thực hiện. Bây giờ, làm cho tôi rất rất bối rối bởi vì đây là suy nghĩ của tôi:
Verilog -> Là ngôn ngữ HDL đặc biệt nhắm đến thiết kế phần cứng. Có một số mức độ trừu tượng như Verilog cấu trúc và hành vi, nhưng nó là một hình thức rất gọn gàng trong việc chỉ định RTL của một thiết kế. Bạn chắc chắn có thể tổng hợp nó bằng cách sử dụng một loạt các công cụ tùy thuộc vào FPGA mà bạn chọn (trong trường hợp của tôi, tôi đang sử dụng bảng Xilinx Vivado 2014 và Zynq). Về phía bên dưới, Verilog không cung cấp đủ tính trừu tượng để xác minh và đó là lý do tại sao bạn có những thứ như System Verilog.
SystemC -> Đây là thư viện lớp C ++ giới thiệu hiệu quả khái niệm thời gian trong C ++ và cho phép bạn thực hiện mô phỏng theo hướng sự kiện. Rõ ràng nó là cấp cao hơn rất nhiều so với bất kỳ HDL nào và mọi thứ ở đây có thể được thực hiện nhanh hơn nhiều. Điều này làm cho nó trở thành một công cụ rất tốt cho các công cụ như xác minh và thậm chí triển khai các trình giả lập để mọi người có thể bắt đầu thiết kế trình điều khiển và mọi thứ cho một con chip trước khi thứ đó thực sự được sản xuất. Rõ ràng, cũng có một tập hợp con SystemC có thể tổng hợp được (tôi nghĩ ngay cả Xilinx Vivado cũng có thể làm điều này) và trong một số trường hợp, nó cho phép SystemC được sử dụng để thiết kế các hệ thống rất lớn, ở đó mức độ trừu tượng cao hơn rất tiện dụng.
Vì vậy, câu hỏi của tôi là:
- Những khái niệm này về những gì systemC và Verilog (hoặc ngôn ngữ HDL nếu bạn muốn) có đúng không?
- Khi nào tôi nên sử dụng SystemC và khi Verilog?
- Tôi được bảo rằng ngay cả trong Verilog, việc sử dụng nhiều mã hành vi có thể gây ra một chút vấn đề trong các phần quan trọng của việc triển khai vì về cơ bản bạn đang đưa ra ít ràng buộc hơn cho công cụ tổng hợp về cách tổng hợp nó. Với mức độ trừu tượng cao hơn, đây có phải là một vấn đề không? tức là nếu tôi sử dụng systemC, tôi có thể sẽ có một thiết kế lớn rất chậm, ngốn điện, ...
- Người đề xuất SystemC đã đề cập rằng có vẻ như tôi đang thực hiện "khám phá kiến trúc" và đó là lý do tại sao anh ta thích Verilog hơn. Nó chính xác nghĩa là gì? Tôi có ấn tượng rằng kiến trúc thường đề cập đến tập lệnh và vi kiến trúc để thực hiện một tập lệnh (vì vậy kiến trúc vi mô là rtl thực tế thực thi các lệnh). Vì vậy, thăm dò kiến trúc có nghĩa là anh ta nghĩ rằng tôi đang thực hiện một bộ xử lý để xem một bộ hướng dẫn khả thi như thế nào?
- Ông nói rằng một lập luận cho việc sử dụng SystemC là nó dễ dàng hơn nhiều vì nó có mức độ trừu tượng cao hơn so với HDL. Ông cũng tuyên bố rằng nó dễ dàng hơn để có được thời gian của thiết kế đúng. Đến mức nào thì điều này đúng?
Trợ giúp sẽ được đánh giá rất cao, tôi hơi bối rối và cảm thấy khó khăn để có được thông tin rõ ràng về trực tuyến này. Cảm ơn!