Thông báo

Collapse
No announcement yet.

SystemVerilog và SystemC

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • tonyvandinh
    replied
    Nguyên văn bởi jefflieu Xem bài viết
    Như vậy khi mô phỏng (simulation) bằng SystemC, phần mềm mô phỏng (simulator) sẽ phải đọc hết các model có ruột/lõi bằng RTL cho đến C++? Miễn là các interface tương thích thông qua các SystemC wrapper?
    Em hiểu sơ sơ rồi.
    Như vậy có vẻ việc system modeling (mô phỏng hệ thống) này làm bằng SystemC có lợi hơn so với SystemVerilog?
    ừ, lợi điểm quan trọng nhất là khi chạy simulation, phần untime ở C/C++ chạy rất là lẹ trong khi systemV vẫn còn ở dạng event base (chuyển động cơ bản?). Có thế nói là gấp ít nhất 1000 lần

    Leave a comment:


  • jefflieu
    replied
    - Nếu như ở Việt Nam, thì đi theo hướng SystemC (mô phỏng hệ thống) hay hướng SystemV (system verification) có lợi hơn?
    - Anh đánh giá HLS như thế nào? Các phần mềm dịch thẳng từ SystemC/SystemV --> netlist có hiệu quả bằng HDL không?

    Leave a comment:


  • jefflieu
    replied
    Như vậy khi mô phỏng (simulation) bằng SystemC, phần mềm mô phỏng (simulator) sẽ phải đọc hết các model có ruột/lõi bằng RTL cho đến C++? Miễn là các interface tương thích thông qua các SystemC wrapper?
    Em hiểu sơ sơ rồi.
    Như vậy có vẻ việc system modeling (mô phỏng hệ thống) này làm bằng SystemC có lợi hơn so với SystemVerilog?

    Leave a comment:


  • tonyvandinh
    replied
    Nguyên văn bởi jefflieu Xem bài viết
    Ý em chỉ là model để simulation/verification.
    Làm CPU model cũng không khó nhưng mất rất nhiều thời gian. Lõi của CPU không cần phải chính xác về chu kỳ nên có thể dùng C/C++ để diễn tả. Sau đó thì dùng systemC wrapper để có liên kết với khối RTL hoặc khối chu kỳ chính xác khác

    Hy vọng là đã trà lời được câu hỏi của Jeff :-)

    khối RTL cũng cần phải có systemC wrapper trước khi cấu kết với những systemC module khác
    Last edited by tonyvandinh; 13-03-2010, 20:49. Lý do: Thêm chi tiết

    Leave a comment:


  • jefflieu
    replied
    Ý em chỉ là model để simulation/verification.

    Leave a comment:


  • tonyvandinh
    replied
    Ý Jeff muốn hỏi về cấu tạo phần cứng của CPU hay chỉ là modeling cho kiểm duyệt (simulation)?

    Thường thì mấy công ty mua CPU model từ EDA tool rồi liên kết với những bộ phận sáng chế của họ để xác nghiệm. Trước khi đi qua layout, những cái CPU model sẽ được thay thế bởi gate level netlist. Những cái CPU model này rất mắc tiền vì máy hãng EDA biết là khách hàng của họ muốn dùng dạng thiết kế này để chuẩn đoán phần mềm và phần cứng cùng một lượt trước khi chuyển sáng chế qua fabrication (ASIC flow). Ở bên FPGA thì không cần thiết lắm vì có thể thay đổi dễ dàng và ít tốn kém hơn là ở bên ASIC. Đôi khi cũng cần cách thiết kế (flow) này nếu design quá phức tạp. Tra cứu (debug) ở simulation vẫn dễ dàng hơn nhiều là ở trong lab.
    Last edited by tonyvandinh; 13-03-2010, 20:18. Lý do: Thêm chi tiết

    Leave a comment:


  • jefflieu
    replied
    Anh Tony cho em hỏi, ví dụ như cần mô phỏng một hệ thống gồm có CPU và các Peripheral.
    Thì con CPU sẽ được mô phỏng như thế nào? Trong ruột có mô phỏng được không hay chỉ mô phỏng đúng tới các giao diện (interface).

    Thanks anh

    Leave a comment:


  • tonyvandinh
    replied
    Với sự giúp đỡ của 1 bạn trên diễn đàn này, tôi đã dịch bài viết bằng tiếng Anh trước đây thành tiếng Việt. Có thể không được hoàn hảo cho lắm, xin các bạn chỉ giẫn thêm.

    --------------------------------

    vì sao sử dụng systemC?

    Việc mô hình hóa hệ thống sử dụng rất nhiều phương thức để mô tả tùy vào những ứng dụng cụ thể nhưng phương pháp phổ biến nhất là ANSI C/C++.

    C/C++ là công cụ rất tốt cho những tác vụ về phần mềm (tác vụ được thực hiện tuần tự) nhưng không thích hợp cho ứng dụng phần cứng do việc thiếu sót về đa tiến trình (hoạt động song song).

    SystemC là 1 nhánh con của C++ ( 1 lớp mẫu). Nhiệm vụ chính là để đưa ra những mô hình đồng tiến trình hoạt sử dụng mô hình multi-thread (mỗi thread được sử dụng cho mỗi process (tiến trình)), bằng cách này thì việc mô tả các hoạt động song song một cách dễ dàng và thích ứng hơn.

    Có một vài cách để sử dụng systemC để mô tả hoạt động cho những khối phần cứng:

    1)Untime (không xét thời gian) chỉ liên quan đến các SC_THREAD để cho phép các modules chạy đồng thời.
    2)Untime với mặt giao động (interface) chính xác về chu kỳ (cycle accurate) – Khối hoạt động không lệ thuộc vào thời gian nhưng mặt giao đồng của nó thì phải đảm bảo chu kỳ chính xác để liên lạc với những khối khác. Kiểu mô tả này được sử dụng khá nhiều trong tổng hợp hạng cao (HLS, High level Synthesis). Việc định nghĩa chính xác về số chu kì ở mặt giao động được giới thiệu dưới hình thức này mà không cần phải biết chi tiết về thời gian của mặt phần cứng của hệ thống.
    3)Chính xác theo chu kì máy - Mô hình này thì tương đương với mô hình RTL trong VHDL/Verilog.

    Ưu điểm của systemC đối với VHDL/Verilog trong việc thiết kế hệ thống hoặc kiểm tra hệ thống là thời gian để mô tả và kiểm soát và sự kết hợp với khối phần mềm cũng đơn giản hóa. Đối với mô hình RTL truyền thống để sử dụng C/C++ như là công cụ test (mô hình phần mềm), phải sử dụng công cụ mô phỏng chuyên dụng để tạo 1 kết nối giữa mô hình RTL và nhân C/C++.Kênh kết nối này là 1 điểm gãy về mặt hiệu quả hoạt động( rất chậm và bị phụ thuộc vào lượng thông tin chuyển tải). RTL là 1 mô hình ngôn ngữ theo kiểu event(sự kiện) nên nó cũng chậm hơn so với systemC với cùng 1 phần cứng. Với mô hình phần cứng sử dụng systemC, không cần kênh kết nối giữa phần mềm mô hình với phần cứng. Việc này tăng hiệu quả rất nhiều trong việc kiểm tra.

    Leave a comment:


  • tonyvandinh
    replied
    Hiện giờ tôi bị cảnh cáo nhưng kô biết là vì viết bằng tiếng Anh hay tiếng Việt kô dấu nên xin tạm thời ngưng viết thêm về đề tài này.

    tvd

    Leave a comment:


  • tonyvandinh
    replied
    Nguyên văn bởi tonyvandinh Xem bài viết
    OK, let's talk about systemV first since it is closer to RTL (Verilog) than systemC.

    systemV is a super set of Verilog and mainly target for verification. It allows more construct that are not supported in Verilog/VHDL like assertion, coverage and random constraint manager (for testbench generation). EDA tools are needed to take advantage of these features and most free utilities will not cover these features in extend. AVM (Advance Verification Methodology) allows the designers to take advantage of reusing the techniques that were invented for exhausted verification. Using these techniques, one can write a verification subsystem at the higher level of abstraction:

    1) Driver (stimulus) - Combine various interface into a compact interface so it can be described at transaction level. This transaction level will then be use through out the verification flow.
    2) Monitor (observation) - Assertion points to check the actual versus expected data. The monitor information will be deposited into one unique database so it can be used for scoreboard and coverage report (EDA involves in this process)
    3) Random constraint manager - systemV allows the use of random data generation. The constraint manager is use to limit the randomness of the data so it can be applicable to the specific application test data.

    To verify the systemV code, one needs a simulator and good simulator will allow the user to take advantage of all the features in this language. Verification is not a trivial task so it becomes a "hot" career for any digital hardware designer who has advance software skill.

    Yes, RTL designer is still safe for may be another 5 years with current adoption rate of HLS (High Level Synthesis) but I saw a faster and more solid traction on HLS last year so the time could be shorter.

    systemC -> in later post.

    tvd
    ---------------
    Why's systemC?

    System modeling uses lots of method to describe depend on the applications but most common method is ANSI C/C++. C/C++ is great for software tasks (sequential execution) but not applicable for hardware due to lacking on concurrency. systemC is a subset of C++ (template class) and it introduces the concurrency using multi-thread (each thread is used for each process) which can be used to easier describe the parallel processes.

    There are several ways to use systemC to describe the hardware process:
    1) Untime - Only involve SC_THREAD to allow modules to run concurrently.
    2) Untime w/ cycle accurate interface - The body of the module is untime (no cycle accurate) but the interface is cycle accurate. This style is mostly use with HLS (High Level Synthesis). The cycle accurate interface is used to introduce time into the system without detail hardware architecture of the module.
    3) Cycle accurate - This style is equivalent to RTL (VHDL/Verilog)

    The advantage of systemC over VHDL/Verilog in system or subsystem verification is "speed" and seemless integration with software models. In traditional RTL flow, in order to use C/C++ as the test bench (software models), one must use the advance simulator to establish a communication channel between RTL and C/C++ kernels. This channel is a performance hog (very slow and depend on how much information to come across). RTL is an event base language so it is also much slower than systemC with equivalent hardware. With systemC hardware models, there is no communication channel between hardware and software models. This allows drastic performance improvement in verification.

    Leave a comment:


  • tonyvandinh
    replied
    Nguyên văn bởi jefflieu Xem bài viết
    Vì đây là diễn đàn Tiếng Việt, đa số mọi người sử dụng Tiếng Việt để viết bài và trao đổi, mình xin mạn phép dịch bài viết của anh tonyvandinh. (trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai, có gì thắc mắc xin các bạn cứ hỏi và thảo luận):
    --------
    Ngôn ngữ SystemVerilog là tập hợp mẹ của Verilog và chủ yếu dùng trong việc thẩm tra/xác minh code (verification). Nó cho phép có thêm các cấu trúc mà ngôn ngữ VHDL/Verilog không hỗ trợ ví dụ như assertion, coverage và random constraint manager (dùng trong việc tạo ra các testbench). Chúng ta cần các công cụ thiết kế tự động EDA (Electronic Design Automation) để tận dụng hết các ưu điểm của các cấu trúc này và hầu hết các công cụ free không hỗ trợ nhiều. AVM (Advance Verification Methodology - Phương pháp thẩm định bậc cao) cho phép người thiết kế tận dụng các kĩ thuật mà được thiết kế cho việc xác minh kiệt quệ (exhausted verification, exhausted verification có thệ hiệu là việc kiểm tra hết tất cả các trường hợp có thể xảy ra). Sử dụng các phương pháp này, người ta có thể viết một hệ thống xác minh ở mức cao hơn (abstraction level nghĩa là các mức trừu tượng: Gate Level, RTL (Register Transfer Level), Transaction Level, Algorithm level ... khi thiết kế ở mức cao hơn, con người ta tạm quên/ không quan tâm lớp dưới được thiết kế như thế nào. Giống như bạn viết Assembly code thì phải biết các instruction của máy, bạn viết ở mức cao hơn như C/C++ thì bạn không quan tâm các lệnh của bạn được thực hiện thế nào, bạn dựa vào compiler, làm việc ở mức cao hơn giúp tăng năng suất)

    1) Driver (các tác nhân - stimulus ) - kết hợp nhiều giao diện thành một giao diện gọn nhẹ để mà có thể được miêu tả ở mức giao dịch (transaction level). Mức giao dịch này sau đó được dùng trong suốt quá trình thẩm tra/xác minh.
    2) Monitor (observation) - Quan sát và theo dõi. Các điểm xác nhận (assertion point) được dùng để so sánh giữa kết quả thực sự và kết qua mong đợi. Nếu bạn nào biết về C++ thì chắc sẽ biết lệnh assert.
    Ví dụ khi bạn viết assert(T>10) thì khi trong thời gian chạy nếu T<10 thì chương trình sẽ in ra assertion failed chỗ nào trong code của bạn. Các kết quả sẽ được ghi vào một cơ sở dữ liệu (database) để sau đó được sử dụng trong các bảng điểm và bảng báo cáo về độ bao phủ (coverage report, độ bao phủ nghĩa là các testpoint của bạn bao phủ được bao nhiêu trường hợp, coverage=100% đồng nghĩa với exhausted verification). (EDA cần support những điều này)

    3) Random constraint manager - System Verilog cho phép tạo ra data ngẫu nhiên (random). Cái gọi là constraint manager được dùng để giới hạn mức độ ngẫu nhiên của data để mà có thể áp dụng tạo data cho một ứng dụng chuyên biệt.

    Để xác minh SystemVerilog code, chúng ta cần một chương trình mô phỏng (simulator) và một chương trình mô phỏng tốt sẽ cho phép tận dụng được hết các tính năng của ngôn ngữ này. Việc xác minh chip không phải là chuyện đơn giản cho nên nó trở thành một nghề hot cho các kĩ sư đang thiết kế phần cứng số và có kĩ năng lập trình giỏi.

    Vâng, thiết kế RTL sẽ vẫn an toàn trong vòng 5 năm nữa với tốc độ chấp nhận hiện nay của HLS (High-level Synthesis, Tổng hợp mức cao - thường hiểu là cao hơn RTL và thường hiểu là cao hơn VHDL và Verilog) nhưng năm ngoái tôi thấy sức kéo của HLS nhanh hơn và mạnh hơn cho nên thời gian (mà RTL sẽ chết) có thể sẽ ngắn hơn.
    ---------------------
    Cam on Jeff da dich lai. Hy vong la toi co the hoc them nhung tu cua ky thuat cao de dien ta bang tieng Viet.

    Uoc vong cua toi la mot ngay nao do toi co the ve VN va cong hien nhung kinh nghiem va hieu biet cua minh de hy vong rang VN se co co hoi de theo duoi nhung nuoc lang gieng. 1995-1999, toi co co hoi de lam viec tai A Chau va da den nhung nuoc nhu Dai Han, Dai Loan, Trung Hoa, An Do va van van. Toi cam thay thuong tiec cho que huong VN minh. Chi vi chien tranh ma da di thut lui vao khoang 20 nam. Toi hy vong la VN se co co hoi de nhay buc thi moi theo kip trong vong 10 nam toi.

    Leave a comment:


  • tonyvandinh
    replied
    One clarification. RTL will not be gone but less emphasized just like gate level.

    Leave a comment:


  • jefflieu
    replied
    Nói chung vẫn chưa hình dung được :"> ...
    Haiz chác phải vọc thử mới biết được... hồi đó giờ kiểm tra code bằng cách nhìn waveform không àh :">

    Leave a comment:


  • jefflieu
    replied
    Vì đây là diễn đàn Tiếng Việt, đa số mọi người sử dụng Tiếng Việt để viết bài và trao đổi, mình xin mạn phép dịch bài viết của anh tonyvandinh. (trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai, có gì thắc mắc xin các bạn cứ hỏi và thảo luận):
    --------
    Ngôn ngữ SystemVerilog là tập hợp mẹ của Verilog và chủ yếu dùng trong việc thẩm tra/xác minh code (verification). Nó cho phép có thêm các cấu trúc mà ngôn ngữ VHDL/Verilog không hỗ trợ ví dụ như assertion, coverage và random constraint manager (dùng trong việc tạo ra các testbench). Chúng ta cần các công cụ thiết kế tự động EDA (Electronic Design Automation) để tận dụng hết các ưu điểm của các cấu trúc này và hầu hết các công cụ free không hỗ trợ nhiều. AVM (Advance Verification Methodology - Phương pháp thẩm định bậc cao) cho phép người thiết kế tận dụng các kĩ thuật mà được thiết kế cho việc xác minh kiệt quệ (exhausted verification, exhausted verification có thệ hiệu là việc kiểm tra hết tất cả các trường hợp có thể xảy ra). Sử dụng các phương pháp này, người ta có thể viết một hệ thống xác minh ở mức cao hơn (abstraction level nghĩa là các mức trừu tượng: Gate Level, RTL (Register Transfer Level), Transaction Level, Algorithm level ... khi thiết kế ở mức cao hơn, con người ta tạm quên/ không quan tâm lớp dưới được thiết kế như thế nào. Giống như bạn viết Assembly code thì phải biết các instruction của máy, bạn viết ở mức cao hơn như C/C++ thì bạn không quan tâm các lệnh của bạn được thực hiện thế nào, bạn dựa vào compiler, làm việc ở mức cao hơn giúp tăng năng suất)

    1) Driver (các tác nhân - stimulus ) - kết hợp nhiều giao diện thành một giao diện gọn nhẹ để mà có thể được miêu tả ở mức giao dịch (transaction level). Mức giao dịch này sau đó được dùng trong suốt quá trình thẩm tra/xác minh.
    2) Monitor (observation) - Quan sát và theo dõi. Các điểm xác nhận (assertion point) được dùng để so sánh giữa kết quả thực sự và kết qua mong đợi. Nếu bạn nào biết về C++ thì chắc sẽ biết lệnh assert.
    Ví dụ khi bạn viết assert(T>10) thì khi trong thời gian chạy nếu T<10 thì chương trình sẽ in ra assertion failed chỗ nào trong code của bạn. Các kết quả sẽ được ghi vào một cơ sở dữ liệu (database) để sau đó được sử dụng trong các bảng điểm và bảng báo cáo về độ bao phủ (coverage report, độ bao phủ nghĩa là các testpoint của bạn bao phủ được bao nhiêu trường hợp, coverage=100% đồng nghĩa với exhausted verification). (EDA cần support những điều này)

    3) Random constraint manager - System Verilog cho phép tạo ra data ngẫu nhiên (random). Cái gọi là constraint manager được dùng để giới hạn mức độ ngẫu nhiên của data để mà có thể áp dụng tạo data cho một ứng dụng chuyên biệt.

    Để xác minh SystemVerilog code, chúng ta cần một chương trình mô phỏng (simulator) và một chương trình mô phỏng tốt sẽ cho phép tận dụng được hết các tính năng của ngôn ngữ này. Việc xác minh chip không phải là chuyện đơn giản cho nên nó trở thành một nghề hot cho các kĩ sư đang thiết kế phần cứng số và có kĩ năng lập trình giỏi.

    Vâng, thiết kế RTL sẽ vẫn an toàn trong vòng 5 năm nữa với tốc độ chấp nhận hiện nay của HLS (High-level Synthesis, Tổng hợp mức cao - thường hiểu là cao hơn RTL và thường hiểu là cao hơn VHDL và Verilog) nhưng năm ngoái tôi thấy sức kéo của HLS nhanh hơn và mạnh hơn cho nên thời gian (mà RTL sẽ chết) có thể sẽ ngắn hơn.

    Leave a comment:


  • tonyvandinh
    replied
    OK, let's talk about systemV first since it is closer to RTL (Verilog) than systemC.

    systemV is a super set of Verilog and mainly target for verification. It allows more construct that are not supported in Verilog/VHDL like assertion, coverage and random constraint manager (for testbench generation). EDA tools are needed to take advantage of these features and most free utilities will not cover these features in extend. AVM (Advance Verification Methodology) allows the designers to take advantage of reusing the techniques that were invented for exhausted verification. Using these techniques, one can write a verification subsystem at the higher level of abstraction:

    1) Driver (stimulus) - Combine various interface into a compact interface so it can be described at transaction level. This transaction level will then be use through out the verification flow.
    2) Monitor (observation) - Assertion points to check the actual versus expected data. The monitor information will be deposited into one unique database so it can be used for scoreboard and coverage report (EDA involves in this process)
    3) Random constraint manager - systemV allows the use of random data generation. The constraint manager is use to limit the randomness of the data so it can be applicable to the specific application test data.

    To verify the systemV code, one needs a simulator and good simulator will allow the user to take advantage of all the features in this language. Verification is not a trivial task so it becomes a "hot" career for any digital hardware designer who has advance software skill.

    Yes, RTL designer is still safe for may be another 5 years with current adoption rate of HLS (High Level Synthesis) but I saw a faster and more solid traction on HLS last year so the time could be shorter.

    systemC -> in later post.

    tvd

    Leave a comment:

Về tác giả

Collapse

jefflieu Email minh trực tiếp nếu bạn cần download tài liệu gấp Tìm hiểu thêm về jefflieu

Bài viết mới nhất

Collapse

Đang tải...
X