Thông báo

Collapse
No announcement yet.

Các công việc có dính líu tới FPGA

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Các công việc có dính líu tới FPGA

    Hi anh em,
    Để mọi người và các bạn trẻ muốn tìm hiểu FPGA có một tầm nhìn về "FPGA Job" trên thế giới nói chung và ở VN nói riêng, các bạn nào có làm trực tiếp hoặc trong các công ty có sản phẩm sử dụng FPGA thì vui lòng "khoe khoang" chút.
    Thanks

  • #2
    Ở bên Mỹ, hầu hết những hãng làm sản phẩm cho chính phủ (defence companies) mở có khả năng dùng FPGA cho final production. Những hãng công nghiệp thường chỉ dùng FPGA cho protype thôi.
    Chúc một ngày vui vẻ
    Tony
    email : dientu_vip@yahoo.com

    Comment


    • #3
      Theo mình thấy thì các công ty liên quan đến FPGA có 3 trường phái:
      a. Thiết kế các lõi IP.
      Các lõi IP thì có các lĩnh vực chuyên dụng sau:
      - Mã hóa (Cryptography)
      - Viễn thông (Communication)
      - Broadcast Industry (công nghiệp phát thanh truyền hình số)
      - Xử lý ảnh, thiết kế các bộ codec
      - SoC thiết kế các Core CPU, bus ... bán cho mấy cty làm ASIC
      ...
      Thiết kế FPGA kiểu này đòi hỏi hiểu biết kiến thức về chuyên ngành của lĩnh vực đó.

      b. Thiết kế các sản phẩm công nghệ cao và số lượng ít, cần độ đặc chế cao.
      Các máy đo, phát và thu sóng viễn thông dùng khá nhiều mấy con FPGA. FPGA đóng vai trò glue-logic, kết nối các con chip chuyên dụng lại và chạy một số chức năng hỗ trợ con CPU nhúng để hệ thống nhanh hơn, hiệu quả hơn.
      Như anh tony nói ở trên, các hệ thống trong defence hay xài FPGA trực tiếp vì số lượng ít, mà ngân sách cho defence thì nhiều .
      Jeff ở đây cũng ngắm nghía cty làm về defence của SING, Job của nó hấp dẫn quá nhưng kẹt cái quốc tịch không cho phép .


      c. Thiết kế ASIC, dùng FPGA cho việc prototype, verification.
      (Ai đó nói rõ thêm đi)

      d. Thiết kế PCB cho FPGA.
      Thiết kế PCB không phải là một JOB thật sự vì hình như ai cũng làm được, bạn nào yêu thích thiết kế PCB thì nên hướng sang thiết kế các mạch Analog như power, IF, RF ... và thiết kế PCB được coi như một kĩ năng cần phải biết như viết code C/C++ vậy.

      (Không biết có nên spam mấy box khác PR cho cái thread này không anh em? )
      Anh em góp ý thêm.

      Comment


      • #4
        Chào các bạn,

        Đọc về FPGA và ASIC trên diễn đàn mình thấy cần phải làm rõ một số thuật ngữ.

        [1] Thiết kế FPGA

        + Đứng ở góc độ sản phẩm cuối cùng là một chip màu đen, thì thiết kế FPGA được hiểu là quá trình thiết kế tạo ra con chip màu đen đó.
        + Đứng ở góc độ sản phẩm cuối cùng là một PCB có chip FPGA + điện trở/tụ điện/dao động/ROM/ . . .thì thiết kế FPGA là viết code để biến con chip màu đen hoạt động trên PCB như mong muốn.

        ASIC và FPGA nguyên thủy đều thuộc digital design vì quá trình thiết kế này là quá trình thiết kế số (phân biệt với quá trình thiết kế tương tự)

        Một ví dụ đơn giản là ngày xưa kỹ sư chúng ta muốn thiết kế một mạch Y=NOT(A+B) AND (C OR NOT(D)) thì chúng ta đi mua các linh kiện 74xx về rồi nối các đầu ra và đầu vào với nhau. Bây giờ thì các linh kiện 74xx đấy = con chip FPGA màu đen. Việc nối các đầu ra đầu vào đó đơn giản chỉ là viết cái hàm kia ra và xác định chân nào là Y,A,B,C,D sau đó nạp vào con chip FPGA thế là ta có một con chip thực hiện chức năng như ta mong muốn.

        [2] Hiểu thế nào về cell-based design, gate-array design và full-custom design

        Ví dụ thiết kế ASIC thực hiện chức năng hàm Y=f(A,B,C,D) ở trên thì có mấy cách như sau:
        + Thiết kế ASIC dựa trên phần tử logic (cell-based) nghĩa là các mạch AND/OR/NOT . . . đã được chuẩn hóa thành thư viện và silicon cho các mạch đó đã được chứng minh là chạy tốt (standard library) và việc này thì các hãng cung cấp thư viện sẽ lo, việc còn lại chỉ là đặt các cell đó lên miếng silicon và đi dây nối chúng lại với nhau -> fab -> đóng gói -> ra một con chip màu đen.
        + Thiết kế ASIC đặc chế hoàn toàn (full-custom design) nghĩa là các hãng cung cấp thư viện (fab) chỉ đưa ra mô hình cho MOSFET thôi, còn việc thiết kế MOSFET thành mạch AND/OR/NOT/ . . . rồi thành Y=f(A,B,C,D) như thế nào thì kỹ sư thiết kế phải lo hết.

        + Thiết kế ASIC dựa trên phần tử mảng logic (gate-array design) có thể hiểu là các MOSFET/AND/OR, . . . và các dây nối đã được sắp đặt sẵn trên silicon rồi và công việc của kỹ sư chỉ là xác định nối dây nào với dây nào mà thôi. (không có quyền quyết định là tôi chỉ cần một con AND và một con NOT)

        Tóm lại, các hãng càng ngày càng làm cho kỹ sư “lười” đi, tập trung vào sáng tạo những hệ thống vô cùng phức tạp đáp ứng nhu cầu của người dùng dựa trên tài nguyên và công cụ chúng tôi cung cấp, việc biến ý tưởng của các bạn thành con chip màu đen chúng tôi sẽ lo. Và một con chip FPGA màu đen đã được ra đời như thế. Tức là trên miếng silicon sẽ bao gồm rất nhiều các gate-array đặt cạnh nhau và mạng lưới các dây metal sẽ được nối với nhau bằng các chuyển mạch được điều khiển bằng các bit nhớ. Và việc của các công cụ là chuyển hóa ý tưởng của kỹ sư thành các dãy các bit nhớ để ghi vào bộ nhớ và khi bật nguồn lên thì các gate-array sẽ được nối với nhau thành hệ thống như người kỹ sư mong muốn.

        Nếu ASIC dịch chuyển sang mixed-signal design (SoC) thì FPGA lại phải tích hợp thêm các module tương tự, mà việc này thì quả thật không tiện chút nào.

        [3] Hiểu thế nào về IP-core mềm và cứng trong FPGA

        Khi người kỹ sư hiểu rõ cấu trúc một CPU, thì người kỹ sư hoàn toàn có thể dùng HDL để mô tả một CPU và khi tài nguyên cứng của một chip FPGA cho phép thì hoàn toàn có thể cấu hình thành chức năng của một CPU, cái này người ta gọi là IP-Core mềm
        Khi một cấu trúc CPU đã được tích hợp sẵn trong một chip FPGA rồi thì người ta gọi là IP-Core cứng.

        Suy cho cùng thì một lệnh CPU thực hiện việc di chuyển và biến đổi các bit nhớ là bằng các Flip-Flop và các mạch logic cơ bản. Khi có một xung clock thì chân Q sẽ là giá trị của chân D trước đó. Mạch tạo ra giá trị logic cho chân D là một mạch logic hoặc là một đầu ra của một Flip-Flop khác. Lợi điểm quan trọng của thiết kế số là cái gì cũng có thể đóng gói thành thư viện chuẩn, cao hơn là IP và được dùng lại rất nhiều, và người kỹ sư sẽ được giải phóng khỏi thiết kế phần cứng. Nhưng khi hệ thống ngày càng phức tạp thì những vấn đề phần cứng gây ra sẽ làm đau đầu những hãng cung cấp công cụ và thư viện. Chính vì thế mà kỹ sư thiết kế IC sẽ yên tâm là không sợ hết việc làm.

        [4] Khái niệm lập trình được.

        Khái niệm này chủ yếu xét ở góc độ người sử dụng.

        Lập trình được đối với chip FPGA là cấu hình các tài nguyên cứng trong FPGA và điều này là bắt buộc để chip FPGA có thể hoạt động được.

        Với một chip ASIC, giả sử IC đấy có 14 chân (14 pad) nhưng cũng miếng silicon đó có thể đóng gói thành 8 chân để bán cho khách hàng A và có thể đóng gói thành 14 chân để bán cho khách hàng B. Làm được điều này thì chip ASIC cũng có thể lập trình được tuy nhiên lập trình được này chỉ đối với nhà cung cấp ASIC thôi còn khách hàng mua chip về dùng thì không lập trình được.

        Trên đây là một số chia sẻ từ kinh nghiệm bản thân ở góc độ một kỹ sư thiết kế IC.

        Thân mến.

        Comment


        • #5
          Theo mình, trong bài tổng kết của Jefflieu ở trên thì ý a và c nên gộp thành một vì khi thiết kế IP thì sản phẩm cuối cùng không phải là chip FPGA mà là macro behavior + timing dùng cho khách hang mô phỏng kiểm tra + layout . FPGA tham gia ở đây đóng vai trò như một công cụ làm demo ở giai đoạn R&D còn giai đoạn synthesis + STA + layout thi sẽ là thiết kế ASIC.

          Comment


          • #6
            Nguyên văn bởi hithere123 Xem bài viết
            Theo mình, trong bài tổng kết của Jefflieu ở trên thì ý a và c nên gộp thành một vì khi thiết kế IP thì sản phẩm cuối cùng không phải là chip FPGA mà là macro behavior + timing dùng cho khách hang mô phỏng kiểm tra + layout . FPGA tham gia ở đây đóng vai trò như một công cụ làm demo ở giai đoạn R&D còn giai đoạn synthesis + STA + layout thi sẽ là thiết kế ASIC.
            - Mình phân biệt như vậy là vì trên thị trường có một số công ty chuyên bán IP core, có thể ở dạng netlist hoặc ở dạng RTL ... và một số core chỉ dám ghi là FPGA-proven ... việc khách hàng làm gì với IP core đó là thì tính sau. Có người để trên FPGA luôn, có người mua core để làm ASIC.
            - Trong khi đó các công ty thiết kế ASIC thì dĩ nhiên trước tiên phải thiết kế hoặc mua IP core, rồi prototype rồi mới layout v.v...

            Comment


            • #7
              Ở trang http://www.opencores.org/projects có tập hợp nhiều IP core bởi nhiều cá nhân phát triển và đóng góp. Đáng được chúng ta tham khảo và làm theo.

              Comment


              • #8
                Nguyên văn bởi jefflieu Xem bài viết
                - Mình phân biệt như vậy là vì trên thị trường có một số công ty chuyên bán IP core, có thể ở dạng netlist hoặc ở dạng RTL ... và một số core chỉ dám ghi là FPGA-proven ... việc khách hàng làm gì với IP core đó là thì tính sau. Có người để trên FPGA luôn, có người mua core để làm ASIC.
                - Trong khi đó các công ty thiết kế ASIC thì dĩ nhiên trước tiên phải thiết kế hoặc mua IP core, rồi prototype rồi mới layout v.v...
                Mình không có nhiều kinh nghiệm trong thiết kế số nên quả thật không biết có thể bán IP dưới dạng RTL vì nếu như thế bên bán và bên mua phải tin nhau lắm hoặc đã hợp tác với nhau rất lâu rồi (partner). Nhưng về nguyên tắc thì hoàn toàn có thể nếu bên mua muốn mua của bên bán.
                Last edited by hithere123; 19-03-2010, 16:09. Lý do: sửa lỗi chính tả

                Comment


                • #9
                  Nguyên văn bởi jefflieu Xem bài viết
                  c. Thiết kế ASIC, dùng FPGA cho việc prototype, verification.
                  (Ai đó nói rõ thêm đi)
                  Tại sao lại phải dùng FPGA cho prototype? Có 3 trường hợp mà tôi đã từng trải qua:

                  1) Algorithm hoặc standard mới quá, chưa có ai trong nhóm thiết kế hiểu thấu suốt vấn đề cho nên không chắc chắn là làm ASIC có thể hoàn chỉnh ngay (first pass design).

                  2) Dùng FPGA để ra đời sản phẩm trước (time to market) rồi chuyển qua ASIC để giảm vốn sau.

                  3) Sự xác minh của thiết kế cần phải thử nghiệm với nhiều test vectors mà rất là tốn thời gian để chạy ở RTL hoặc gate. Nếu thiết kế quá lớn thì dùng emulation (rất tốn kém và phức tạp để setup).

                  Khi mà thiết kế không thể xếp gọn vào 1 FPGA, thường thì giảm bớt những phần không quan trọng lắm để có thể làm thử nghiệm cho phần cốt yếu của thiết kế. Đôi khi cũng cần phải giảm độ chạy (running frequency) cho FPGA. Vấn đề là chỉ thử nghiệm về cách hoạt động mà thôi. Chi tiết về thời gian sẽ được hoàn chỉnh khi làm ASIC.

                  Chào
                  Tony
                  Last edited by tonyvandinh; 20-03-2010, 01:18. Lý do: Thêm chi tiết
                  Chúc một ngày vui vẻ
                  Tony
                  email : dientu_vip@yahoo.com

                  Comment


                  • #10
                    Trong một bài viết phía trên, mình đã viết:

                    Nguyên văn bởi hithere123 Xem bài viết
                    Và một con chip FPGA màu đen đã được ra đời như thế. Tức là trên miếng silicon sẽ bao gồm rất nhiều các gate-array đặt cạnh nhau và mạng lưới các dây metal sẽ được nối với nhau bằng các chuyển mạch được điều khiển bằng các bit nhớ.
                    Nói như vậy dễ gây hiểu nhầm với gate-array trong ASIC và chưa thật sự đầy đủ về cấu trúc của một chip FPGA. Mình rất tiếc vì sai sót này.

                    Thân mến.

                    Comment


                    • #11
                      Nguyên văn bởi tonyvandinh Xem bài viết
                      Nếu thiết kế quá lớn thì dùng emulation (rất tốn kém và phức tạp để setup).
                      Không biết emulation anh Tony nói ở đây có phải liên quan đến kỹ thuật cho phép debug chip bằng software sau khi silicon out, như vậy chip phải có thêm một module như là một interface cho phép trao đổi data với bên ngoài (Emulation Extension Chip_EEC block). Hay là kỹ thuật set-up một hardware để thay thế DUT và DUT mới này link với testbench nhanh hơn rất nhiều so với DUT dưới dạng RTL. Nếu được anh có thể nói thêm về vấn đề này không?

                      Thanks!
                      Last edited by hithere123; 22-03-2010, 15:10. Lý do: thêm chi tiết

                      Comment


                      • #12
                        Nguyên văn bởi hithere123 Xem bài viết
                        Không biết emulation anh Tony nói ở đây có phải liên quan đến kỹ thuật cho phép debug chip bằng software sau khi silicon out, như vậy chip phải có thêm một module như là một interface cho phép trao đổi data với bên ngoài (Emulation Extension Chip_EEC block). Hay là kỹ thuật set-up một hardware để thay thế DUT và DUT mới này link với testbench nhanh hơn rất nhiều so với DUT dưới dạng RTL. Nếu được anh có thể nói thêm về vấn đề này không?

                        Thanks!
                        Emulation là gì?
                        Emulation là một công cụ để khảo nghiệm một hệ thống lớn với số lượng test vector cao. Emulation box là một hộp phần cứng bên trong có nhiều PC board mà mỗi board có nhiều FPGA hạng nặng (high capacity) và custom IC để làm sự kết nối giữa những FPGA.

                        Một hệ thống lớn có rất nhiều khối liên hệ chặt chẽ với nhau. Sự thay đổi của 1 khối có thể làm ảnh hưởng tới hoạt động của những khối khác và vấn đề xác minh ở khối riêng biệt không bảo đảm sự hoàn thiện của cả hệ thống. Vì vậy cả hệ thống phải được thử nghiệm với nhau và với một test plan cố định.

                        Hệ thống cũng có thể thử nghiệm ở dạng RTL nhưng tốc độ của thử nghiệm chỉ có thể tối đa là 1KHZ. Hệ thống càng lớn, tốc độ càng chậm. Để thử nghiệm hết mọi trường hợp (corner cases) có thể mất cả năm. Dùng emulation, hệ thống có thể chạy với tốc độ trên 1MHZ tùy theo công cụ.

                        Công cụ emulation sẽ tổng hợp (synthesize) cả hệ thống từ RTL qua emulation primitive logic. Sau đó load mạch vô trong emulation box để thử nghiệm. Emulation box sẽ liên hệ với máy chủ qua PCI express bus. Ở máy chủ, những node của RTL đều có thể khám dò (any RTL can be visible to waveform viewer). Nếu hệ thống có những phần mà không ở dạng RTL (analog frontend, custom IC, etc), emulation có slot cho custom board để nối với phần RTL bằng internal high speed buses.

                        Tuy rằng emulation vẫn không thể chạy ở tốc độ hiện thực nhưng nó có thể làm giảm thời gian kiểm tra trên 1000 lần. Hiện giờ chỉ có những hãng lớn như Intel, TI, Freescale, Broadcom, Qualcomm, etc mới có khả năng để mua và sử dụng công cụ này vì nó rất mắc (multi million dollar) và rất phức tạp để xắp xếp.

                        Hy vọng là những lời giải thích này giúp hithere hiểu tổng quát về emulation.

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

                        Comment


                        • #13
                          Nguyên văn bởi tonyvandinh Xem bài viết
                          Emulation là gì?
                          Emulation là một công cụ để khảo nghiệm một hệ thống lớn với số lượng test vector cao. Emulation box là một hộp phần cứng bên trong có nhiều PC board mà mỗi board có nhiều FPGA hạng nặng (high capacity) và custom IC để làm sự kết nối giữa những FPGA.
                          ...
                          Chào
                          Tony
                          Như vậy thực chất để chạy emulation thì cũng phải porting RTL ASIC sang FPGA, vì vậy vẫn còn những corner case không phát hiện được đúng không ah?

                          Comment


                          • #14
                            Nguyên văn bởi ToanXT Xem bài viết
                            Như vậy thực chất để chạy emulation thì cũng phải porting RTL ASIC sang FPGA, vì vậy vẫn còn những corner case không phát hiện được đúng không ah?

                            Chủ yếu là để xét về hoạt động mà thôi. Timing vẫn phải dùng static timing analysis (thời gian cố định?) sau khi P&R (place & route). Dynamic timing analysis (hoạt động với thời gian) không thể thực hiện trên hệ thống lớn được vì thời gian xác nghiệm rất lâu không thực tế.

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

                            Comment


                            • #15
                              Cảm ơn anh Tony về bài viết tổng quan kỹ thuật dùng emulator để kiểm tra thiết kế. Tuy nhiên còn một ý trong bài viết mà em rất mong được cùng anh làm rõ thêm. Anh có viết:
                              Nguyên văn bởi tonyvandinh Xem bài viết
                              Hệ thống cũng có thể thử nghiệm ở dạng RTL nhưng tốc độ của thử nghiệm chỉ có thể tối đa là 1KHZ. Hệ thống càng lớn, tốc độ càng chậm. Để thử nghiệm hết mọi trường hợp (corner cases) có thể mất cả năm. Dùng emulation, hệ thống có thể chạy với tốc độ trên 1MHZ tùy theo công cụ.
                              Khi nói tốc độ của thử nghiệm chỉ có thể tối đa là 1KHz ở đây em hiểu như sau:
                              Giả sử một hệ thống có quy mô 1 triệu gates hoạt động với clock là 100MHz như vậy để mô phỏng (simulate) 1 phút hoạt động thực của hệ thống thì máy tính cần mô phỏng 6 tỷ cycles cho 1 triệu gates và với máy tính nhanh nhất thì cũng phải mất cả tuần hoặc nhiều hơn vì vậy ta nói tốc độ mô phỏng tối đa đạt được là ~ 1000 cycles/sec. Tuy nhiên nếu dùng emulator như anh đề cập ở bài viết trên thì thời gian mô phỏng 1 phút hoạt động của hệ thống sẽ nhanh hơn ~1000 lần (>1000 000 cycles/sec).

                              Và dạng RTL anh nói là ở dạng này (1) :

                              SQX DFF1 ( .D(n1), .CP(clk), .RN(rst), .Q(out) );
                              SMX MUX1 (.A(in), .B(out), .S(sel));


                              hay ở dạng này (2) :

                              always @ (negedge clk or negedge rst)
                              begin
                              if (rst == 1’b0)
                              begin
                              out <= 1’b0;
                              end
                              else
                              begin
                              out <= (sel == 1’b0) ? in : out;
                              end
                              end


                              Trong bài trước nữa anh có nói là tốn thời gian để chạy ở RTL hoặc gate và sau đó đề cập tới giải pháp emulation. Em chưa rõ RTL và gate anh nói có phải là dạng 2 và dạng 1 em đề cập ở trên không? Nếu đúng thì em không nghĩ thời gian mô phỏng bị giới hạn ở tốc độ 1KHz cho dạng 2 vì nó vẫn là mô tả architecture (mặc dù dùng chung một ngôn ngữ mô tả phần cứng_HDL là verilog), mà nếu mô phỏng architecture thì đâu cần thiết phải dùng gate model cho mô phỏng.

                              Rất mong nhận được hôi ầm từ anh!

                              Thân mến.

                              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