1. Trang chủ
  2. » Luận Văn - Báo Cáo

phát triển phần mềm biên dịch ngôn ngữ phần cứng trong kiểm tra vi mạch

23 552 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Trường Đại Học Bách Khoa Khoa Điện Tử- Viễn Thông oOo BÁO CÁO THỰC TẬP Đề tài: Phát triển phần mềm biên dịch ngôn ngữ phần cứng dùng trong kiểm chứng vi mạch GVHD : TS.Nguyễn Đức Minh SVTH: Phùng Anh Tuấn SHSV: 20073221 3/2012 March 14, 2012 Verilog Compiler Mục Lục 2 Mục Lục Mục Lục 2 Lời Mở Đầu 4 1 5 TỔNG QUAN VỀ HỆ THÔNG 5 1.1 Xây dựng phần mềm biên dịch ngôn ngữ phần cứng Verilog sử dụng trong kiểm chứng vi mạch 5 1.1.1 Lý do xây dựng Verilog Compiler? 6 1.1.2 Các khối chính xây dựng chương trình 7 1.2 Ngôn ngữ mô tả phần cứng –HDL (Hardware Design Language) 7 1.2.1 Ngôn ngữ VHDL 7 1.2.2 Ngôn ngữ Verilog 7 1.3 Khái niệm về trình biên dịch 8 1.4 Open Source 9 1.4.1 ODIN-ii 10 1.4.2 FCK Component 10 2 11 PHÂN TÍCH 11 2.1 Các pha trong quá trình thiết kế trình biên dịch 11 2.1.1 Phân tích từ vựng (Lexical Analysis ) 12 2.1.2 Phân tích cú pháp (Syntax Analysis) 13 2.1.3 Phân tích ngữ nghĩa (Semantic Analysis) 13 2.1.4 Sinh mã trung gian (Intermediate Code Generator) 14 2.1.5 Tối ưu mã (Code Optimizer) 14 2.1.6 Sinh mã (Code generation) 14 2.1.7 Bảng quản lý ký tự ( Symbol table manager) 14 March 14, 2012 Verilog Compiler 3 2.1.8 Xử lý lỗi (Error Handing) 15 2.2 Lex Tool 15 2.3 Bison Tool 17 3 19 THIẾT KẾ HỆ THỐNG 19 3.1 VERILOG2AST 19 3.2 AST2NETLIST 21 3.3 AST2FCK 22 3.4 KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 22 Tài Liệu Tham Khảo 23 March 14, 2012 Verilog Compiler Lời Mở Đầu 4 Lời Mở Đầu Thiết kế trình biên dịch trong những thập niên 50 của thế kỷ trước được coi là một trong những công việc lập trình khó nhất. Bởi việc thiết trình biên dịch đòi hỏi phải hiểu biết về nhiều lĩnh vực : Ngôn ngữ lập trình ,kiến trúc máy tính , lý thuyết ngôn ngữ, các thuật toán và các công nghệ phần mềm. Nhưng ngày nay thì số lượng trình biên dịch đã nhiều nến nỗi mà việc thiết kế một trình biên dịch trở nên quá thừa và không cần thiết. Thiết kế trình biên dịch đã trở nên dễ dàng hơn . Những trình biên dịch - trình biên dịch (compiler-compiler) đã hỗ trợ cho công việc biên dịch ngôn ngữ trở nên dễ dàng và thuận tiện hơn . Thiết kế trình biên dịch một ngôn ngữ phần cứng có thể không phải là một ý tưởng mới . Đã có rất nhiều công ty cũng như nhiều lập trình viên đã nghĩ đến . Nhưng một trình biên dịch thông minh có thể biên dịch một thiết kế bằng ngôn ngữ mô tả phần cứng đưa vào cấu trúc dữ liệu dùng trong lĩnh vực còn khá mới mẻ Formal Verification lá một ý tưởng thú vị . Một thiết kế ghép nối file thiết kế HDL vào một cấu trúc dữ liệu dùng để kiểm chứng sẽ là một bước tiến trong quá trình kiểm chứng một thiết kế lớn phức tạp. Chất xúc tác nhỏ thúc đẩy lĩnh vực Formal Verification còn đang khá lá mới mẻ . March 14, 2012 Verilog Compiler 1 5 1 TỔNG QUAN VỀ HỆ THÔNG Trong chương này sẽ trình bày các khái niệm , các mã nguồn mở có sẳn và ý tưởng để hình thành nên việc xây dựng một trình biên dich ngôn ngữ phần cứng ghép nối vào cấu trúc dữ liệu FCK Component trong kiểm chứng vi mạch. 1.1 Xây dựng phần mềm biên dịch ngôn ngữ phần cứng Verilog sử dụng trong kiểm chứng vi mạch Hình 1 : Xây dựng trình biên dịch file verilog Ý tưởng thiết kế ở đây là xây dựng một trình biên dịch ngôn ngữ phần cứng Verilog .Trình biên dịch sẽ có khả năng phân tích được cấu trúc dữ liệu của một file định dạng verilog(.v) . Biến đổi cấu trúc của nó thành một định dạng khác netlist và có khả năng đưa vào cấu trúc dữ liệu FCK Component. FCK Component sẽ lưu trữ dưới dạng một mạch điện . FCK Component còn có khả năng hỗ trợ việc viết một property để có thể dùng trong kiểm chứng vi mạch. March 14, 2012 Verilog Compiler TỔNG QUAN VỀ HỆ THÔNG 6 1.1.1 Lý do xây dựng Verilog Compiler? Có rất nhiều hệ thống mã nguồn mở khác cũng đã xây dựng một trình biên dịch ngôn ngữ Verilog hoặc VHDL. ODIN-ii là framework như vậy. ODIN-ii cho phép các nhà nghiên cứu và thiết kế phần cứng có một môi trường triển khai và tối ưu hệ thống. Bắt đầu từ thư viện FCK Component có khả năng hỗ trợ mô hình hóa mạch điện dựa trên sự phát triển của Formal Verification. Bên cạnh ý tưởng mô hình hóa những cổng logic thành những đối tượng. FCK còn hỗ trợ một cách tự động việc phân tích một file cũng như cài đặt thuật toán SAT Solver , OBDD… FCK Component hoàn toàn được viết dưới dạng các class C++. Đầu vào của FCK vốn là một mạch điện vốn được nhập bằng tay. Điều đó có thể thực hiện được với những thiết kế nhỏ ,ít các thành phần . Một ý tưởng tự nhiên là thiết kế một phần mềm có khả năng tự động ghép nối một thiết kế phần cứng bằng ngôn ngữ verilog vào cấu trúc dữ liệu mạch điện của FCK đã được hình thành. Xem xét những mã nguồn hiện nay thì ODIN-ii giúp biên dịch một thiết kế phần cứng bằng ngôn ngữ verilog. Nhưng code Odin-ii hoàn toàn là thuần C , việc ghép nối trở nên khó khăn và thiếu đồng bộ. Việc quản lý mã nguồn khó khăn hơn khi mà cần phải thiết kế mở rộng và bố sung nó. Đầu ra của Odin-ii còn có định dạng là một file blif. Tuy định dạng file blif là một định dạng đơn giản, nhưng Odin-ii đã biên dịch các khối thành mức gate netlist khá nhỏ và chi tiết, khiến cho định dạng blif là một file khá lớn ngay cả với những thiết kế nhỏ. Việc giữ lại những khối như bộ MUX, bộ CỘNG k bít sẽ là một ý tưởng hướng đến trong phần mềm của chúng ta. March 14, 2012 Verilog Compiler TỔNG QUAN VỀ HỆ THÔNG 7 1.1.2 Các khối chính xây dựng chương trình  Khối 1: Front-end (Verilog2AST): Biến code Verilog ở đầu vào, xây dựng nên mô hình cấu trúc dữ liệu cây cú pháp AST (Abstract Syntax Tree).  Khối 2: Backend (AST2FCK): Từ cấu trúc dữ liệu cây cú pháp AST (Abstract Syntax Tree) xây dựng nên cấu trúc Netlist của mạch. 1.2 Ngôn ngữ mô tả phần cứng –HDL (Hardware Design Language) Hai ngôn ngữ sử dụng phổ biến việc miêu tả thiết kế một hệ thống phần cứng là Verilog và VHDL . Verilog được sử dụng rộng rãi ở Mỹ , còn VHDL lại là chuẩn được sử dụng trong các ngành công nghiệp ở châu Âu. 1.2.1 Ngôn ngữ VHDL Ngôn ngữ VHDL được cung cấp để hổ trợ phát triển các hệ thống phần cứng dựa trên các loại mạch(chip) tích hợp tốc độ cao(VHSIC-Very High Speed Integrated Circuit). Việc sử dụng các loại chíp kiểu này đã thay thế dần các IC logic mà thường được sử dụng trong việc thiết kế mạch số, đem lại nhiều lợi ích và thuần tiện trong việc phát triển các hệ thống số mà phương thức thiết mạch số truyền thống khó hoặc không thể thực hiện được. 1.2.2 Ngôn ngữ Verilog Verilog dễ học và dễ sử dụng hơn VHDL. Verilog được chuẩn hoá theo chuẩn IEEE vào năm 1995 và 2001. Verilog rất giống ngôn ngữ C và được giới chuyên môn nghiên cứu, sử dụng nhiều. March 14, 2012 Verilog Compiler TỔNG QUAN VỀ HỆ THÔNG 8 Verilog HDL có thể được sử dụng để thiết kế hệ thống số ở nhiều mức khác nhau, ví dụ ở mức cao như các mô hình đặc trưng đến các mức thấp như mô hình bố trí dây, điện trở, transistor trên một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô tả thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi (RTL - Register Transfer Level). Tại sao sử dụng Verilog HDL ? Verilog cho phép các nhà thiết kế logic thiết kế và mô tả hệ thống số ở nhiều mức độ khác nhau và có sự hỗ trợ từ các công cụ thiết kế bằng máy tính để giúp cho việc xử lý thiết kế ở những mức độ khác nhau. 1.3 Khái niệm về trình biên dịch Trình biên dịch (Compiler) còn gọi là phần mềm biên dịch, là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn-source language ) thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích-target language) và thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy. Chương trình mới được dịch này gọi mã đối tượng. Một phần quan trọng trong quá trình dịch là ghi nhận lại các lỗi có trong chương trình nguồn để thông báo lại cho người viết chương trình. March 14, 2012 Verilog Compiler TỔNG QUAN VỀ HỆ THÔNG 9 Hình 2 Tổng quan về trình biên dịch Để tạo tra một chương trình đích có khả năng thực thi (excutable) thì ngoài trình biên dịch ta phải có thêm một số chương trình khác nữa. Sơ đồ sau mô tả ngữ cảnh của một trình biên dịch trong một hệ thống xử lí ngôn ngữ (language-processing system) Bộ tiền xử lí (Preprocessor) Trình biên dịch (Compiler) Trình dịch hợp ngữ (Assembler) Trình tải/liên kết (Loader/link-editor) Chương trình nguồn khung (Skeletal source program) Chương trình nguồn (Source program) Chương trình hợp ngữ đích (Target assembly program) Chương trình hợp ngữ đích (Target assembly program) Mã máy tuyệt đối (Absolute machine code) Thư viện/tập tin đối tượng (Library/object files) Hình 3 : Ngữ cảnh của trình biên dịch trong hệ thống xử lý ngôn ngữ 1.4 Open Source Mục này sẽ trình bày các framework đã có sẵn dùng trong kiểm chứng vi mạch March 14, 2012 Verilog Compiler TỔNG QUAN VỀ HỆ THÔNG 10 1.4.1 ODIN-ii ODIN-ii là một framework đã sẵn , sử dụng 2 tools flex và bison, biên dịch một file định dạng verilog , xuất ra dưới dạng netlist và có khả năng map các thành phần vào trong phần cứng FPGA . Chức năng Odin II sử dụng trực tiếp thư viện VPR → Cho phép mô tả cấu trúc Có khả năng đọc file Netlist sinh ra sau thiết kế và lưu vào cấu trúc giữ liệu để phân tích. Phần phân tích cú pháp trong Front-end của Odin II được xây dưng bởi các tool Bison và Flex. Việc làm này cung cấp thông tin theo thứ tự cấp bậc theo dạng AST (abstract syntax tree) →Tạo ra một Netlist.  AST nhận dạng các cấu trúc theo chức năng.  Thông tin từ AST được dung để kết nối các cấu trúc trong thiết lớn, phức tạp. ( VD: Cách nhận dang FSM sử dụng AST). Odin II đọc file đầu ra từ Front-end, lưu vào cấu trúc dữ liệu. Odin có một thư viện các công cụ dung để thao tác file netlist. Odin có khả năng tương tác với thư viện VPR 5.0 và VPR 6.0, dùng để mô tả các khối chức năng trên FPGA. Odin II sẽ nhận dạng các khối tương ứng với thiết kế HDL và ghép nối chúng. 1.4.2 FCK Component FCK được viết bởi nhóm nghiên cứu của trường đại học Kaiserslautern , Đức . FCK là một thư viện mã nguồn mở có cấu trúc dữ liệu mô hình hóa mạch điện dựa trên sự phát triển của Formal Verification. Bên cạnh ý tưởng mô hình hóa những cổng logic thành những đối tượng. FCK còn hỗ trợ một cách tự động việc phân tích một file cũng như cài đặt thuật toán SAT Solver , OBDD… [...]... pha trong quá trình thiết kế trình biên dịch Hướng dẫn về hai công cụ Flex và Bison Tools sử dụng trong các thiết kế trình biên dịch ngày nay Cũng như về khái niệm về lập trình hướng đối tượng trong C++ và các cách thiết kế theo design pattern 2.1 Các pha trong quá trình thiết kế trình biên dịch Phần này sẽ trình bày về các pha trong quá trình thiết kế trình biên dịch , có 6 pha Quá trình biên dịch. .. trình biên dịch như mong muốn PHÂN TÍCH 18 March 14, 2012 Verilog Compiler 3 THIẾT KẾ HỆ THỐNG Chương này sẽ trình bày quy trình thiết kế phần mềm biên dịch ngôn ngữ phần cứng (Verilog Compiler) – Đầu vào của hệ thống sẽ là một file verilog (.v) và đầu ra của nó là một mạch điện được lưu trữ trong cấu trúc dữ liệu của FCK Component Đây là bước đầu nhưng cũng là một bước dài trong quá trình tạo ra một phần. .. quét sẽ nhận diện các từ hay các mẫu trong một đoạn hay một file văn bản Lex được phát triển bởi M E Lesk và E Schmidt ở phòng thí nghiệm của hãng truyền thong AT&T Bell Đầu vào của Lex là một file gồm các định nghĩa về các token được sử dụng trong các biểu thức Lex quét qua toàn bộ của văn bản để biên dịch và có thể được liên kết với các module biên dịch khác Khi biên dịch ,Lex tạo ra một file chứa hàm... 2.1.3 • Phân tích ngữ nghĩa (Semantic Analysis) Giai đoạn phân tích ngữ nghĩa sẽ thực hiện vi c kiểm tra xem chương trình nguồn có chứa lỗi về ngữ nghĩa hay không • Tập hợp thông tin về các kiểu dữ liệu cho giai đoạn sinh mã về sau PHÂN TÍCH 13 March 14, 2012 Verilog Compiler 2.1.4 • Sinh mã trung gian (Intermediate Code Generator) Sau khi phân tích cấu trúc và ngữ nghĩa, một số trình biên dịch sẽ tạo ra... Giai đoạn phân tích cú pháp gặp lỗi khi các token không thể kết hợp với nhau theo đúng cấu trúc ngôn ngữ  Giai đoạn phân tích ngữ nghĩa gặp lỗi khi các toán hạng có kiểu không đúng yêu cầu của phép toán Sau khi phát hiện ra lỗi, tùy thuộc vào trình biên dịch mà có các cách xử lý lỗi khác nhau: Quá trình biên dịch có thể dừng lại hoặc tiếp tục 2.2 Lex Tool Lex Tool là các công cụ có sẵn cho phép xây dựng... hiện nhanh hơn 2.1.6 • Sinh mã (Code generation) Giai đoạn cuối cùng của biên dịch là sinh mã đích, thường là mã máy hoặc mã hợp ngữ • Vị trí các vùng nhớ gán cho các biến được chương trình sử dụng 2.1.7 Bảng quản lý ký tự ( Symbol table manager) Một nhiệm vụ quan trọng của trình biên dịch là ghi lại các định danh được sử dụng trong chương trình nguồn và thu thập các thông tin về các thuộc tính khác... trình bày về các pha trong quá trình thiết kế trình biên dịch , có 6 pha Quá trình biên dịch được chia thành nhiều giai đoạn Các giai đoạn biên dịch được minh hoạ trong hình vẽ dưới đây 11 March 14, 2012 Verilog Compiler Hình 4 : Các giai đoạn trong quá trình biên dịch 2.1.1 • Phân tích từ vựng (Lexical Analysis ) Giai đoạn phân tích từ vựng sẽ đọc chương trình nguồn từ trái sang phải (linear analysis/scanning)... yyparse cần được gọi Hàm yylex luôn được gọi trong Bison grammar rules Mỗi một quy tắc được thỏa mãn sẽ được trả về một hành động nằm trong { } Chúng ta có thể thực hiện các hàm C nằm trong các dấu ngoặc nhọn này Để tạo ra một Bison parser ta sử dụng câu lệnh sau bison -y namefile.y g++ -o parser y.tab.c Bison sẽ tự động tạo ra 2 file y.tab.h và y.tab.c Biên dịch hai file C này sử dụng g++ Kết hợp Flex... namefile.l g++ -o namefile lex.yy.c –lfl Flex sẽ tự động tạo ra một file lex.yy.c Biên dịch file này và liên kết nó với thư vi trong flex(-lfl) 2.3 Bison Tool Giống như Lex, Yacc (yet another compiler compiler) là câu lệnh sẵn có của UNIX và là một công cụ hữu hiệu cho phép xây dựng bộ phân tích cú pháp một cách tự động Một trong những phiên bản mở rộng của Yacc đó là Bison Bison là một công cụ để phân... Component Đây là bước đầu nhưng cũng là một bước dài trong quá trình tạo ra một phần mềm dùng để kiểm chứng vi mạch 3.1 VERILOG2AST Nghiên cứu cấu trúc dữ liệu của ODIN và đề xuất ra một cấu trúc dưới dạng class Hình 5 : Đề xuất thiết kế cấu trúc AST 3 19 March 14, 2012 Verilog Compiler Hình 7 : Cấu trúc AST đã thực thi Phần thiết kế cấu trúc dữ liệu cho front end Đây là một cây AST với các phương thức . FCK Component trong kiểm chứng vi mạch. 1.1 Xây dựng phần mềm biên dịch ngôn ngữ phần cứng Verilog sử dụng trong kiểm chứng vi mạch Hình 1 : Xây dựng trình biên dịch file verilog. Đại Học Bách Khoa Khoa Điện Tử- Vi n Thông oOo BÁO CÁO THỰC TẬP Đề tài: Phát triển phần mềm biên dịch ngôn ngữ phần cứng dùng trong kiểm chứng vi mạch GVHD : TS.Nguyễn Đức. dựng phần mềm biên dịch ngôn ngữ phần cứng Verilog sử dụng trong kiểm chứng vi mạch 5 1.1.1 Lý do xây dựng Verilog Compiler? 6 1.1.2 Các khối chính xây dựng chương trình 7 1.2 Ngôn ngữ

Ngày đăng: 16/04/2015, 09:39

Xem thêm: phát triển phần mềm biên dịch ngôn ngữ phần cứng trong kiểm tra vi mạch

TỪ KHÓA LIÊN QUAN

Mục lục

    TỔNG QUAN VỀ HỆ THÔNG

    1.1  Xây dựng phần mềm biên dịch ngôn ngữ phần cứng Verilog sử dụng trong kiểm chứng vi mạch

    1.1.1 Lý do xây dựng Verilog Compiler?

    1.1.2 Các khối chính xây dựng chương trình

    1.2 Ngôn ngữ mô tả phần cứng –HDL (Hardware Design Language)

    1.3 Khái niệm về trình biên dịch

    2.1 Các pha trong quá trình thiết kế trình biên dịch

    2.1.1 Phân tích từ vựng (Lexical Analysis )

    2.1.2 Phân tích cú pháp (Syntax Analysis)

    2.1.3 Phân tích ngữ nghĩa (Semantic Analysis)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w