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

  • SystemVerilog và SystemC

    Có anh/chị/bạn/em nào rành về một trong 2 ngôn ngữ này, viết một vài giới thiệu chung để mọi người có khái niệm.
    Không biết anh tonyvandinh có rành về 2 ngôn ngữ này không?
    Hoặc có bạn nào hứng thú thì tự nghiên cứu rồi tổng hợp lại cho mọi người cũng được
    Thanks for your contribution

  • #2
    có thằng bạn hồi hè thực tập ở ICDirect HCM , có nghiên cứu rất kĩ về verilogSystem , hi vọng vài ngày nữa lấy lời của nó post lên trao đổi với anh em héng . have fun!

    Comment


    • #3
      bravo, awesome!

      Comment


      • #4
        Nguyên văn bởi jefflieu Xem bài viết
        Có anh/chị/bạn/em nào rành về một trong 2 ngôn ngữ này, viết một vài giới thiệu chung để mọi người có khái niệm.
        Không biết anh tonyvandinh có rành về 2 ngôn ngữ này không?
        Hoặc có bạn nào hứng thú thì tự nghiên cứu rồi tổng hợp lại cho mọi người cũng được
        Thanks for your contribution

        I used both systemVerilog and systemV in my line of work but most likely will concentrate on systemC more since it is adapted widely at system modeling and most high level synthesis tools also can synthesize the subset of this standard. Currently there is not much advantage to bridge between systemC and RTL since systemC still requires time at least at the interface thus limit the scope during exploration.

        Xin loi la phai tra loi bang tieng Anh vi toi ko biet nhieu tu tieng Viet trong lanh vuc nay.

        tvd
        Chúc một ngày vui vẻ
        Tony
        email : dientu_vip@yahoo.com

        Comment


        • #5
          Nguyên văn bởi tonyvandinh Xem bài viết
          I used both systemVerilog and systemV in my line of work but most likely will concentrate on systemC more since it is adapted widely at system modeling and most high level synthesis tools also can synthesize the subset of this standard. Currently there is not much advantage to bridge between systemC and RTL since systemC still requires time at least at the interface thus limit the scope during exploration.

          Xin loi la phai tra loi bang tieng Anh vi toi ko biet nhieu tu tieng Viet trong lanh vuc nay.

          tvd
          Neu ai muon tiem hieu them va hoc hoi co ban cua systemC cho hardware thi theo cai link o duoi day:

          http://www.asic-world.com/systemc/tutorial.html
          Chúc một ngày vui vẻ
          Tony
          email : dientu_vip@yahoo.com

          Comment


          • #6
            Hi anh,
            Cám ơn anh đóng góp ý kiến.
            Điều đáng mừng là không có lợi thế rõ rệt giữa SystemC và RTL ... (mình còn giữ việc được một thời gian nữa , chưa bị lạc hậu).
            Điều đáng buồn là các công cụ free thì lại không hỗ trợ SystemC và SystemVerilog cho nên muốn học cũng khó. Hixhix.
            Khi nào rảnh anh có thể kể sơ sơ anh dùng SystemC và SystemVerilog như thế nào được không? Anh viết bằng Tiếng Anh cũng được . Cần thì em dịch lại.
            - Ví dụ như mô phỏng hệ thống (system modeling) là như thế nào?
            - Hệ thống anh thường mô phỏng gồm những gì. Khi mô phỏng bằng SystemC và SystemVerilog như vậy anh kiểm tra, test điều gì:
            ++ Tính năng (funtionality)
            ++ Có đúng đến từng chu kì clock (cycle-accurate) ko?
            .... v.v
            Việc mô phỏng như vậy có lợi gì so với HDL?
            .............

            Cảm ơn thời giờ của a!!!

            Comment


            • #7
              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
              Chúc một ngày vui vẻ
              Tony
              email : dientu_vip@yahoo.com

              Comment


              • #8
                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.

                Comment


                • #9
                  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 :">

                  Comment


                  • #10
                    One clarification. RTL will not be gone but less emphasized just like gate level.
                    Chúc một ngày vui vẻ
                    Tony
                    email : dientu_vip@yahoo.com

                    Comment


                    • #11
                      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.
                      Chúc một ngày vui vẻ
                      Tony
                      email : dientu_vip@yahoo.com

                      Comment


                      • #12
                        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.
                        Chúc một ngày vui vẻ
                        Tony
                        email : dientu_vip@yahoo.com

                        Comment


                        • #13
                          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
                          Chúc một ngày vui vẻ
                          Tony
                          email : dientu_vip@yahoo.com

                          Comment


                          • #14
                            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.
                            Chúc một ngày vui vẻ
                            Tony
                            email : dientu_vip@yahoo.com

                            Comment


                            • #15
                              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

                              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