Chương 1. Dẫn nhập thiết kế hệ thống số với Verilog bao gồm những thông tin về độ trì hoãn trên đường dây và những tác động của tải lên các cổng dùng trong quá trình hậu tổng hợp. Có nhiều định dạng netlist ngõ ra có thể được tạo ra bao gồm cả định dạng Verilog. Một netlist như vậy có thể được dùng để mô phỏng, và mô phỏng này được gọi là mô phỏng hậu tổng hợp.
Những vấn đề về định thời, về tần số xung clock, về hiện tượng chạy đua không kiểm soát, những nguy hiểm tiềm ẩn của thiết kế chỉ có thể kiểm tra bằng mô phỏng hậu tổng hợp thực hiện sau khi thiết kế được tổng hợp. Như trên Hình 1.1, ta có thể sử dụng dữ liệu kiểm tra mà đã dùng cho quá trình mô phỏng tiền tổng hợp để dùng cho quá trình mô phỏng hậu tổng hợp. Do độ trì hoãn trên đường dây và các cổng, đáp ứng của thiết kế sau khi chạy mô phỏng hậu tổng hợp sẽ khác với đáp ứng của thiết kế mà người thiết kế mong muốn. Trong trường hợp này, người thiết kế phải sửa lại thiết kế và cố gắng tránh những sai sót về định thời và hiện tượng chạy đua giữa những tín hiệu mà không thể kiểm soát.6 Phân tích thời gian Quan sát trên Hình 1.1, bước phân tích thời gian là một phần trong quá trình biên dịch, hoặc trong một số công cụ thì bước phân tích thời gian này được thực hiện sau quá trình biên dịch.
Bước này sẽ tạo ra khả năng xấu nhất về độ trì hoãn , tốc độ xung clock, độ trì hoãn từ cổng này đến cổng khác, cũng như thời gian cho việc thiết lập và giữ tín hiệu. Kết quả của bước phân tích thời gian được thể hiện dưới dạng bảng hoặc biểu đồ. Người thiết kế sử dụng những thông tin này để xác định tốc độ xung clock, hay nói cách khác là xác định tốc độ hoạt động của mạch thiết kế. Dẫn nhập thiết kế hệ thống số với Verilog 1.7 Tạo linh kiện phần cứng Bước cuối cùng trong qui trình thiết kế tự động dựa trên Verilog đó là tạo ra phần cứng thực sự cho thiết kế.
Bước này có thể tạo ra một netlist dùng để sản xuất ASIC, một chương trình để nạp vào FPLD, hay một mạch in cho mạch IC.2 Ngôn ngữ phần cứng Verilog (Verilog HDL) Trong phần trước, ta đã trình bày từng bước thiết kế ở mức độ RTL từ một mô tả thiết kế Verilog cho đến việc hiện thực ra một phần cứng thực sự. Qui trình thiết kế này chỉ có thể thực hiện được khi ngôn ngữ Verilog có thể hiểu được bởi người thiết kế hệ thống, người thiết kế ở mức độ RTL, người kiểm tra, công cụ mô phỏng, công cụ tổng hợp, và các máy móc liên quan. Bởi vì tầm quan trọng của nó trong qui trình thiết kế, Verilog đã trở thành một chuẩn quốc tế IEEE. Chuẩn này được sử dụng bởi người thiết kế cũng như người xây dựng công cụ thiết kế.1 Quá trình phát triển Verilog Verilog được ra đời vào đầu năm 1984 bởi Gateway Design Automation.
Khởi đầu, ngôn ngữ đầu tiên được dùng như là một công cụ mô phỏng và kiểm tra. Sau thời gian đầu ngôn ngữ này được chấp nhận bởi ngành công nghiệp điện tử, một công cụ mô phỏng, một công cụ phân tích thời gian, và sau này vào năm 1987, công cụ tổng hợp đã được xây dựng và phát triển dựa vào ngôn ngữ này. Gateway Design Automation và những công cụ dựa trên Verilog của hãng sau này được mua bởi Cadence Design System. Từ sau đó, Cadence đóng vai trò hết sức quan trọng trong việc phát triển cũng như phổ biến ngôn ngữ mô tả phần cứng Verilog.
Dẫn nhập thiết kế hệ thống số với Verilog Vào năm 1987, VHDL trở thành một chuẩn ngôn ngữ mô tả phần cứng của IEEE. Bởi do sự hỗ trợ của Bộ quốc phòng (DoD), VHDL được sử dụng nhiều trong những dự án lớn của chính phủ Mỹ. Trong nỗ lực phổ biến Verilog, vào năm 1990, OVI (Open Verilog International) được thành lập và Verilog chiếm ưu thế trong lĩnh vực công nghiệp. Điều này đã tạo ra một sự quan tâm khá lớn từ người dùng và các nhà cung cấp EDA (Electronic Design Automation) tới Verilog.
Vào năm 1993, những nỗ lực nhằm chuẩn hóa ngôn ngữ Verilog được bắt đầu. Verilog trở thành chuẩn IEEE, IEEE Std 1364-1995, vào năm 1995. Với những công cụ mô phỏng, công cụ tổng hợp, công cụ phân tích thời gian, và những công cụ thiết kế dựa trên Verilog đã có sẵn, chuẩn Verilog IEEE này nhanh chóng được chấp nhận sâu rộng trong cộng đồng thiết kế điện tử. Một phiên bản mới của Verilog được chấp nhận bởi IEEE vào năm 2001.
Phiên bản mới này được xem như chuẩn Verilog-2001 và được dùng bởi hầu hết người sử dụng và người phát triển công cụ. Những đặc điểm mới trong phiên bản mới đó là nó cho phép bên ngoài có khả năng đọc và ghi dữ liệu, quản lí thư viện, xây dựng cấu hình thiết kế, hỗ trợ những cấu trúc có mức độ trừu tượng cao hơn, những cấu trúc mô tả sự lặp lại, cũng như thêm một số đặc tính vào phiên bản này. Quá trình cải tiến chuẩn này vẫn đang được tiếp tục với sự tài trợ của IEEE.2 Những đặc tính của Verilog Verilog là một ngôn ngữ mô tả phần cứng dùng để đặc tả phần cứng từ mức transistor đến mức hành vi. Ngôn ngữ này hỗ trợ những cấu trúc định thời cho việc mô phỏng định thời ở mức độ chuyển mạch và tức thời, nó cũng có khả năng mô tả phần cứng tại mức độ thuật toán trừu tượng.
Một mô tả thiết kế Verilog có thể bao gồm sự trộn lẫn giữa những khối 16 Chương 1. Dẫn nhập thiết kế hệ thống số với Verilog (module) có mức độ trừu tượng khác nhau với sự khác nhau về mức độ chi tiết.1 Mức độ chuyển mạch Những đặc điểm của ngôn ngữ này khiến nó trở nên lí tưởng trong việc mô hình hóa và mô phỏng ở mức độ chuyển mạch bao gồm khả năng chuyển mạch một chiều cũng như hai chiều với những thông số về độ trì hoãn và lưu trữ điện tích. Những trì hoãn mạch điện có thể được mô hình hóa như là trì hoãn đường truyền, trì hoãn từ thấp lên cao hay từ cao xuống thấp. Đặc điểm lưu trữ điện tích ở mức độ trừu tượng trong Verilog khiến nó có khả năng mô tả những mạch điện với linh kiện động như là CMOS hay MOS.2 Mức độ cổng Những cổng cơ bản với những thông số được định nghĩa trước sẽ cung cấp một khả năng thuận tiện trong việc thể hiện netlist và mô phỏng ở mức cổng.
Đối với việc mô phỏng mức cổng với mục đích chi tiết và đặc biệt, những linh kiện cổng có thể được định nghĩa ở mức độ hành vi. Verilog cũng cung cấp những công cụ cho việc định nghĩa những phần tử cơ bản với những chức năng đặc biệt. Một hệ thống số logic 4 giá trị đơn giản (0,1,x,z) được sử dụng trong Verilog để thể hiện giá trị cho tín hiệu. Tuy nhiên, để mô hình mức logic chính xác hơn, những tín hiệu Verilog gồm 16 mức giá trị về độ mạnh được thêm vào 4 giá trị đơn giản ở trên.3 Độ trì hoãn giữa pin đến pin Một tiện ích trong việc mô tả định thời cho các linh kiện tại ngõ vào và ngõ ra cũng được cung cấp trong Verilog.
Tiện ích này có thể được dùng 17 Chương 1. Dẫn nhập thiết kế hệ thống số với Verilog để truy vấn lại thông tin về định thời trong mô tả tiền thiết kế ban đầu. Hơn nữa, tiện ích này cũng cho phép người viết mô hình hóa tinh chỉnh hành vi định thời của mô hình dựa trên hiện thực phần cứng.4 Mô tả Bus Những tiện ích về mô hình bus và thanh ghi cũng được cung cấp bởi Verilog. Đối với nhiều cấu trúc bus khác nhau, Verilog hỗ trợ chức năng phân giải bus và wire với hệ thống logic 4 giá trị (0,1,x,z).
Với sự kết hợp giữa chức năng bus logic và chức năng phân giải, nó cho phép mô hình hóa được hầu hết các loại bus. Đối với việc mô hình hóa thanh ghi, việc mô tả xung clock mức cao và những cấu trúc điều khiển định thời có thể được sử dụng để mô tả thanh ghi với những tín hiệu xung clock và tín hiệu reset khác nhau.5 Mức độ hành vi Những khối qui trình (procedural blocks) của Verilog cho phép mô tả thuật toán của những cấu trúc phần cứng. Những cấu trúc này tương tự với ngôn ngữ lập trình phần mềm nhưng có khả năng mô tả phần cứng.6 Những tiện ích hệ thống Những tác vụ hệ thống trong Verilog cung cấp cho người thiết kế những công cụ trong việc tạo ra dữ liệu kiểm tra testbench, tập tin truy xuất đọc, ghi, xử lí dữ liệu, tạo dữ liệu, và mô hình hóa những phần cứng chuyên dụng. Những tiện ích hệ thống dùng cho bộ nhớ đọc và thiết bị logic lập trình được (PLA) cung cấp những phương pháp thuận tiện cho việc mô hình hóa những thiết bị này.
Những tác vụ hiện thị và I/O có thể được sử dụng để kiểm soát tất cả những ngõ vào và ngõ ra dữ liệu của ứng 18 Chương 1. Dẫn nhập thiết kế hệ thống số với Verilog dụng và mô phỏng. Verilog cho phép việc truy xuất đọc và ghi ngẫu nhiên đến các tập tin.7 PLI Công cụ tương tác ngôn ngữ lập trình (PLI) của Verilog cung cấp một môi trường cho việc truy xuất cấu trúc dữ liệu Verilog sử dụng một thư viện chứa các hàm của ngôn ngữ C.3 Ngôn ngữ Verilog Ngôn ngữ Verilog HDL đáp ứng tất cả những yêu cầu cho việc thiết kế và tổng hợp những hệ thống số. Ngôn ngữ này hỗ trợ việc mô tả cấu trúc phân cấp của phần cứng từ mức độ hệ thống đến mức cổng hoặc đến cả mức công tắc chuyển mạch.
Verilog cũng hỗ trợ mạnh tất cả các mức độ mô tả việc định thời và phát hiện lỗi. Việc định thời và đồng bộ mà được đòi hỏi bởi phần cứng sẽ được chú trọng một cách đặc biệt. Trong Verilog, một linh kiện phần cứng được mô tả bởi một cấu trúc ngôn ngữ “khai báo module”. Sự mô tả một module sẽ mô tả danh sách những ngõ vào và ngõ ra của linh kiện cũng như những thanh ghi và hệ thống bus bên trong linh kiện.
Bên trong một module, những phép gán đồng thời, gọi sử dụng linh kiện và những khối qui trình có thể được dùng để mô tả một linh kiện phần cứng. Nhiều module có thể được gọi một cách phân cấp để hình thành những cấu trúc phần cứng khác nhau.