Thảo luận Quy trình thiết kế vi mạch số

Thảo luận trong 'Tổng quan về Vi Điện Tử'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. tunglam

    tunglam Sinh viên cao đẳng

    Tham gia ngày:
    5/8/13
    Bài viết:
    6
    Đã được thích:
    45
    Điểm thành tích:
    13
    Bài viết này góp nhặt lại những kinh nghiệm khi mình tham gia LSI Design Contest 2012. Thực sự là gần như không có ai giúp đỡ cả, tự mày mò thôi, vì thế đến khi tham dự xong, mặc dù được giải nhưng mình vẫn còn nhiều điều thấy khá tiếc.
    Khi bắt đầu thực hiện dự án, mình chỉ có vốn liếng là kiến thức cơ bản về HDL, functional verification, bị giới hạn trong 4 tuần, cùng 3 cậu nữa phải hoàn thành thiết kế. Có thể coi 4 tuần đó là trải nghiệm là manager cũng được, mỗi tuần đều có báo cáo và present tiến độ. Lúc đó làm điên cuồng và rất hăng say.

    Ok, giờ nhấn vào những điểm chính của việc thiết kế thuật toán Fourier nhanh (FFT). Chu trình này có thể áp dụng cho nhiều thiết kế khác nữa.
    1/ Quy trình cơ bản
    Qui trình thiết kế mạch số của FPGA hay ASIC thì giống y hệt nhau (cứ search FPGA Design Flow hay ASIC Design Flow là ra). Ví dụ như hình dưới (Nguồn: WWW.TESTBENCH.IN - Systemverilog for Verification )
    =============
    tunglam318 blog

    1.PNG
    Chú ý:
    - Với ASIC thì từ phần Synthesis -> Physical Design -> Timing Analysis -> Tapeout thì được thực hiện bằng phần mềm chuyên dụng của Synopsys hoặc Cadence.
    - Với FPGA thì chỉ cần Implementation là xong. Đối với sinh viên thì gần như không cần hiểu phần mềm làm gì. Tuy nhiên phải đọc hiểu report
    - Tóm lại: Với sinh viên, với flow trên chúng ta chỉ cần làm Architecture Specs -> Design Specs -> RTL Design -> Functional Verification
    2/ Chu trình thiết kế mạch xử lí số (DSP Design)
    2.1 Quy trình chung
    Đối với thiết kế mạch xử lí số, qui trình trên cần chi tiết hơn ở mục Architecture Specs và Design Specs
    Ví dụ như hình dưới đây
    2.
    hay trong hình này
    3.
    Nguồn :​
    Đối với những thiết kế xử lí số, quá trình thiết kế phải được bắt đầu bằng việc khảo sát thuật toán (trong hình 2 là mục algorithm definitions, hình 3 là signal flow graph). Cụ thể việc này sẽ được nói ở dưới​
    2.2 Khảo sát thuật toán
    • Mục tiêu: Hiểu, đặt ra được các tham số của thuật toán (ví dụ số bit mã hóa cho input và output) và đánh giá được ảnh hưởng các tham số đó đến các thông số xử lí tín hiệu ( ví dụ như yêu cầu SNR tối thiểu là bao nhiêu )
    • Thực hiện bằng Matlab hoặc C. Chu trình khảo sát như sau : Floating Point -> Fixed Point. Ban đầu thực hiện thuật toán bằng floating point, sau đó đến fixed point, thay đổi các tham số bit mã hóa, các phép toán làm tròn
    • Kết quả: đưu ra giải pháp tối ưu mềm : bit mã hóa, phép toán làm tròn, độ trễ của mạch (latency), các bộ nhân, bộ cộng, …
    • Ngày đó, bọn mình thực hiện việc đánh giá phép toán dấu phẩy tĩnh gần như thủ công, bằng việc viết chương trình C rồi cho chạy. Tuy nhiên, Matlab có 1 tool tên là Fixed Point Analysis, mình không kịp dùng giải pháp này.
    • Tham khảo báo cáo khảo sát thuật toán FFT của trường Đài Loan http://access.ee.ntu.edu.tw/course/under_project_98/lecture/20091123_Fixed_point.pdf
    2.3 Lựa chọn kiến trúc thiết kế
    • Đây là 1 trong những phần khó nhất và cần sự sáng tạo
    • Các thông số đánh giá chất lượng thiết kế phần cứng: Area, Throughput, Power.
    • Dựa trên thời gian thực hiện dự án và cả con người nữa, vì thế cần xem xét kĩ lưỡng.
    • Mình chủ yếu làm phần này. Nên kinh nghiêm là search, đọc càng nhiều bài báo, project càng tốt. Lọc và tổng hợp và đưa ra được các giải pháp cùng độ phức tạp, điểm mạnh và điểm yếu của chúng.
    • Với FFT thì có 3 kiến trúc chính là : Pipeline, Parallel, In-Place. Bọn mình chọn Pipeline vì nó cân bằng Area và Throughput và thực hiện dễ nhất. Tuy nhiên, đội nhất LSI thì triển khai In-Place, mà kiến trúc này mình đã rất muốn thực hiện nhưng không đủ điều kiện.
    2.4 Thiết kế
    • Sau khi đã lựa chọn kiến trúc, ta phải thiết kế cụ thể mạch.
    • Chú ý: chia nhỏ các thiết kế càng sâu càng tốt. Đặt các tín hiệu điều khiển cho phù hợp.
    • Kết quả: Sau khi thiết kế xong, ta có thể viết được 1 design specification. Bao gồm toàn bộ data flow trong mạch, các chức năng của các tín hiệu.
    • Mình không trực tiếp design, chỉ khảo sát các kiến trúc thôi.
    2.4 HDL Coding
    • HDL Coding: triển khai thiết kế bằng Verilog hoặc VHDL.
    • Chú ý: tham số hóa các dữ liệu thiết kế (input, output). Khi thiết kế cho FPGA hay ASIC thì phải chú ý Coding Style của đúng hãng. Ví dụ: Xilinx thì cứ search ISE Coding Style. Việc này nhằm đảm bảo Code được synthesis hiệu quả nhất.
    2.4 Testbench
    • Mong muốn: Self-Checking Testbench.
    • Giải pháp:
    1. Xây dựng mô hình testbench bằng SystemVerilog, dùng Questasim
    2. Sử dụng Matlab Simulink và Xilinx System Generator hoặc Altera DSP Builder để so sánh với thiết kế (trong trường hợp các thiết kế là xử lí số).
    • Nếu không đủ thời gian thì có thể thực hiện linear testbench cũng được. Sử dụng Xilinx Isim, Modelsim để check kết quả.
    3/ Demo sản phẩm
    • Đây thường là điểm yếu của người Việt Nam vì ít thực hành, và chỉ chuyên môn sư phạm thôi.
    • Trước hạn nộp 2 tuần, mình thấy năm 2009, LSI có đưa ra các tiêu chí chấm điểm, có mục là tính ứng dụng thực tế. Vì thế mình tìm cách đưa FFT vào 1 mô hình OFDM có sẵn trên Simulink và chỉ việc moding đi. Cộng thêm việc sử dụng System Generator Hardware in the loop để thiết kế chạy trên mạch thật. Vì thế nên thiết kế này đã được đánh giá cao hơn chút.
    • Xem bên Chiba và Mozaik, họ thực hiện demo bằng phần mềm và Embedded System, thấy rất hay. Các ứng dựng này được thực hiện trong vật lý và xử lí ảnh, mà trước đó mình chưa biết. (nếu ai quan tâm thì quay lại bài LSI Design Contest 2012 để xem).
    • Vì thế mình rút ra 1 điều, phải hiểu tính ứng dụng của thiết kế. Đặt ra ngay việc thực hiện demo dự án ngay sau khi khảo sát thuật toán. Nếu có thời gian mình sẽ tìm cách demo hay hơn.
    4/ Trình bày và sắp xếp project
    • Đây không phải 1 giai đoạn trong chu trình thiết kế mà nó dàn trải toàn bộ. Việc tổng hợp, sắp xếp và trình bày tốt giúp công việc thuận lợi hơn.Khi thực hiện dự án, những tài liệu, mã nguồn nên được trình bày, sắp xếp dễ hiểu và dựa trên 1 style nhất định.
    ================
    tunglam318 blog
     
    TPGIONHE, lyquochuy, visaokhongdu5 others thích bài này.
  2. searcher87

    searcher87 Học sinh phổ thông

    Tham gia ngày:
    3/12/13
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    bài viết rất hay, nhưng lĩnh vực này quả là khó để thu hút được nhiều người tham gia
     

Chia sẻ trang này