Verilog coding for logic synthesis ICdesignVN com

122 785 19
Verilog coding for logic synthesis ICdesignVN com

Đ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

Verilog coding for logic synthesis ICdesignVN com Quyền sách này ñược viết dành cho sinh viên và kỹ sưhọc viết mã Verilog tổng hợp ñược (synthesizable Verilog code).Chương 1 giới thiệu việc dùng VHDL và Verilog. Chương 2 mô tả luồng thiết kế vi mạch ứng dụng ñặc biệt (ASIC). ðồ thị luồng (flow charts) và mô tả ñược dùng ñể giúp người ñọc hiểu rõ về ASIC. Chương 3 trình bày những khái niệm cơ bản về mã Verilog. Chương này chỉ ra cho người ñọc việc sử dụng số (numbers), ghi chú (comments) và những kiểu dự liệu trong Verilog. Việc sử dụng những primitive mức ñộ cổng cũng như do người dùng ñịnh nghĩa cũng sẽ ñược giải thích trong chương này. Chương 4 trình bày những thói quen thiết kế và phongcách viết mã ñược dùng cho tổng hợp. Cách ñặt tên (naming convention), phân vùng thiết kế, ảnh hưởng của những vòng lặp ñịnh thì, tạo tín hiệu xung ñồnghồ, sử dụng reset và danh sách nhạy (sentivity list). Khái niệm về câu lệnh blocking (khóa) và nonblocking sẽ ñược trình bày chi tiết. Ví dụ và dạng sóng ñược dùngxuyên suốt ñể giúp người ñọc hiểu những khái niệm này.Chương 4 cũng trình bày những ví dụ về phong cách viết mã thông dụng cho những toán tử Verilog. Khái niệm về chốt suy ra ( latch inference), mảng bộ nhớ và máy trạng thái cũngcó trong chương này.Thiết kế máy trạng thái bao gồm ñặc tả thiết kế (design specifications), giản ñồ trạng thái ñể chỉ ra chức năng của máy trạng thái, mã tổng hợp ñược cho máy trạng thái cùng với testbench ñể kiểm tra chức năng của máy trạng thái. Chương 5 chỉ cho người ñọc làm thế nào dự án thiết kếmạch ñịnh thì lập trình ñược ñược thực hiện. Chương này bắt ñầu với ñặc tả cho mạch ñịnh thì lập trình ñược (programmable timer). Sau ñó sẽ là vi kiến trúc(microarchitecture) ñược tạo ra từ ñặc tả trên ñược dẫn ra. Giản ñồ sẽ giúp người ñọc dễ hiểu hơn chức năng cần thiết kế. Mã Verilg, testbench ñể kiểm tra và mô phỏng mạch cùng với dạng sóng ra (waveform) cũng ñược thêm vào. Chương 6 trình bày về những khối logic lập trình ñượcdành cho giao tiếp ngoại vi (peripheral interface). Chương này bắt ñầu bằng ñặc tả thiết kế rồi vi kiến trúc cùng với giản ñồ hòng giúp bạn ñọc hiểu rõ vấn ñề hơn. Mã Verilog, testbench và dạng sóng ra sẽ ñược dùng ñể mô tả mạch trong chương này.

Lời nói ñầu ðộ phức tạp của mạch tích hợp ñã gia tăng rất lớn trong hơn 10 năm qua.Vào thập niên 80, thiết kế một con chip chứa vài triệu transistor ñã khó tưởng tượng nổi.Ngày nay những mạch tích hợp có vài triệu transistor là ñiều thường thấy.Sự gia tăng tính phức tạp trong mạch tích hợp chủ yếu là do kết quả của việc tích hợp nhiều chức năng trên một chip ñơn.Với những thay ñổi cơ bản này, phương pháp thiết kế thông thường bằng sơ ñồ mạch (schematic) ñã trở thành một cản trở cho những kỹ sư thiết kế. Thực sự quá khó khăn cho kỹ sư thiết kế ñể có thể "vẽ bằng tay" một số lượng lớn những sơ ñồ mạch cần thiết cho một chức năng mạch mong muốn. Thêm vào ñó, mạch tích hợp ñược ñẩy ra thị trường với tốc ñộ nhanh làm co lại khung thời gian ra thị trường của chip ( time to market). Người thiết kế bị ñặt dưới áp lực thiết kế nhiều chip phức tạp hơn với tốc ñộ nhanh hơn. Thử tưởng tượng kỹ sư thiết kế cần phải vẽ hàng triệu transistor trong sơ ñồ mạch. Công việc này gần như là không thể. ðiều này ñòi hỏi một phương pháp hiệu quả và năng suất hơn là cho phép người thiết kế tạo ra sơ ñồ mạch với số lượng lớn các cổng trong một khung thời gian hợp lý. Nhu cầu này dẫn ñến sự pháp triển của ngôn ngữ mô tả phần cứng. (Hardware Description Language) (HDL) Phương pháp mới này cho phép người thiết kế mã hóa chức năng logic của một mạch trong HDL. Mã này sau ñó sẽ ñược tổng hợp (synthesize) thành những cổng logic sử dụng công cụ tổng hợp (synthesizer). Có hai kiểu ngôn ngữ mô tả phần cứng ñược dùng trong công nghiệp: Verilog và VHDL. Quyển sách này chỉ trình bày về Verilog. Quyền sách này ñược viết dành cho sinh viên và kỹ sư học viết mã Verilog tổng hợp ñược (synthesizable Verilog code).Chương 1 giới thiệu việc dùng VHDL và Verilog. Chương 2 mô tả luồng thiết kế vi mạch ứng dụng ñặc biệt (ASIC). ðồ thị luồng (flow charts) và mô tả ñược dùng ñể giúp người ñọc hiểu rõ về ASIC. Chương 3 trình bày những khái niệm cơ bản về mã Verilog. Chương này chỉ ra cho người ñọc việc sử dụng số (numbers), ghi chú (comments) và những kiểu dự liệu trong Verilog. Việc sử dụng những primitive mức ñộ cổng cũng như do người dùng ñịnh nghĩa cũng sẽ ñược giải thích trong chương này. Chương 4 trình bày những thói quen thiết kế và phong cách viết mã ñược dùng cho tổng hợp. Cách ñặt tên (naming convention), phân vùng thiết kế, ảnh hưởng của những vòng lặp ñịnh thì, tạo tín hiệu xung ñồng hồ, sử dụng reset và danh sách nhạy (sentivity list). Khái niệm về câu lệnh blocking (khóa) và non-blocking sẽ ñược trình bày chi tiết. Ví dụ và dạng sóng ñược dùng xuyên suốt ñể giúp người ñọc hiểu những khái niệm này.Chương 4 cũng trình bày những ví dụ về phong cách viết mã thông dụng cho những toán tử Verilog. Khái niệm về "chốt suy ra" ( latch inference), mảng bộ nhớ và máy trạng thái cũng có trong chương này.Thiết kế máy trạng thái bao gồm ñặc tả thiết kế (design specifications), giản ñồ trạng thái ñể chỉ ra chức năng của máy trạng thái, mã tổng hợp ñược cho máy trạng thái cùng với testbench ñể kiểm tra chức năng của máy trạng thái. Chương 5 chỉ cho người ñọc làm thế nào dự án thiết kế mạch ñịnh thì lập trình ñược ñược thực hiện. Chương này bắt ñầu với ñặc tả cho mạch ñịnh thì lập trình ñược (programmable timer). Sau ñó sẽ là vi kiến trúc (microarchitecture) ñược tạo ra từ ñặc tả trên ñược dẫn ra. Giản ñồ sẽ giúp người ñọc dễ hiểu hơn chức năng cần thiết kế. Mã Verilg, testbench ñể kiểm tra và mô phỏng mạch cùng với dạng sóng ra (waveform) cũng ñược thêm vào. Chương 6 trình bày về những khối logic lập trình ñược dành cho giao tiếp ngoại vi (peripheral interface). Chương này bắt ñầu bằng ñặc tả thiết kế rồi vi kiến trúc cùng với giản ñồ hòng giúp bạn ñọc hiểu rõ vấn ñề hơn. Mã Verilog, testbench và dạng sóng ra sẽ ñược dùng ñể mô tả mạch trong chương này. Sách này gồm nhiều ví dụ và ñược viết với tác phong thực tiễn. Có cả thảy 91 ví dụ giúp bạn ñọc hiểu những khái niệm cũng như phong cách lập trình ñang ñược trình bày. Bắt ñầu với những mã Verilog ñơn giản tiền dần vì dụ thiết kế thực tế phức tạp.Chương 4 trình bày thiết kế máy trạng thái về hệ thống ñèn giao thông thông minh. Chương 5 nói về mạch ñịnh thì lập trình ñược bắt ñầu với ñặc tả thiết kế rồi vi kiến trúc, mã verilog và cuối cùng là testbench.Thiết kề này chỉ ra cho người ñọc làm thế nào mã Verilog ñược viết kiểm tra nhưng không thể tổng hộ thành mạch thực ñược. Nhằm giúp bạn ñọc hiểu hơn về việc làm thế nào những thiết kế thực tế ñược thiết kế : giản ñồ, dạn sóng và những giải thích chi tiết kết quả mô phỏng ñược ñưa vào. Giới thiệu Kể từ ñầu thập niên 80 khi mà sơ ñồ mạch ñược giới thiệu như một cách hiểu quả ñể thiết kế những mạch có mức ñộ tích hợp quy mô lớn ( VLSI), nó ñã trở thành phương pháp ñược người thiết kế của thế giới VLSI lựa chọn. Tuy nhiên, việc dùng phương pháp này ñạt ñến giới hạn vào cuối thập niên 90 khi có ngày càng nhiều chức năng logic và ñặc tính ñược tích hợp vào một chip ñơn. Ngày nay, ña số những mạch tích hợp có chức năng ñặc biệt (ASIC) gồm nhiều hơn một triệu transistor. Thiết kế những mạch lớn như thế này dùng sơ ñồ mạch (schematic capture) rất mất thời gian và không còn hiệu quả nữa. Do ñó, cần một cách thiết kế hiệu quả hơn. Phương pháp mới này phải tăng ñược hiệu suất của người thiết kế va cho phép thiết kế dễ dàng thậm chí khi làm việc với những mạch lớn. Từ sự ñòi hỏi này nảy sinh việc chấp nhận rộng rãi ngôn ngữ mô tả phần cứng (HDL). HDL cho phép người thiết kế mô tả chức năng của một mạch logic trong một ngôn ngữ dễ hiểu. Việc mô tả sau ñó sẽ ñược mô phỏng dùng testbench. Sau khi mô tả HDL ñã ñược kiểm tra về mặt chức năng (functionality) nó sẽ ñược tổng hợp thành những cổng logic bằng những công cụ tổng hợp. Phương pháp này giúp người thiết kế thiết kế mạch trong thời gian ngắn hơn. Thời gian ñược tiết kiệm vì người thiết kế không cần quan tâm ñến những phức tạp bên trong tồn tại trong một mạch cụ thể. Phương pháp thiết kế mới này ñã ñược dùng rộng rãi trong lãnh vực thiết kế ASIC. Nó cho phép người thiết kế thiết kế một số lớn những cổng logic ñể thực hiện ñặc tính và chức năng logic mong muốn của chip ASIC. Những ngôn ngữ mô tả phần cứng ñược dùng rộng rãi trong công nghiệp ASIC là Verilog và VHDL. Mỗi cái có ưu khuyết ñiểm riêng. Phong cách viết mã cho hai ngôn ngữ này có những ñiểm tương ñồng cũng như khác biệt. Chương 2 : LUỒNG THIẾT KẾ ASIC Thiết kế ASIC dựa vào một luồng thiết kế sử dụng ngôn ngữ mô tả phần cứng.ða số những công cụ thiết kế ñiện tử tự ñộng (EDA) ñược dùng cho luồng thiết kế ASIC ñều tương thích với Verilog và VHDL. Trong luồng này, thiết kế cũng như thực thi (implementation) một mạch logic ñều ñược mã hóa dùng Verilog hay VHDL. Mô phỏng (simulation) ñược thực thi ñể kiểm tra chức năng của mạch logic.Tiếp theo sẽ là tổng hợp. Tổng hợp (synthesis) là quá trình biến ñổi mã HDL thành cổng logic. Sau khi tổng hợp, bước tiếp theo là APR (auto place route) [ sắp xếp các linh kiện và cách thức nối dây giữa chúng]. APR sẽ ñược giải thích chi tiết hơn trong phần 2.6. Hình vẽ 2.1 chỉ ra một giản ñồ của một luồng thiết kế ASIC bắt ñầu với ñặc tả của một thiết kế ASIC ñến mã hóa RTL (Register transfer level) [viết mã Verilog ñể mô tả mạch] và cuối cùng là làm mẫu thử chip thật trên silicon (tapeout) [ðôi khi người ta còn gọi là Prototype]. 2.1 : ðặc tả (Specifications) Hình 2.2 chỉ ra những bước ñầu của luồng ASIC : ñặc tả của một thiết kế. ðây là bước ñầu tiên của luồng thiết kế ASIC. Việc thiết kế một chip ASIC bắt ñầu từ ñây. ðặc tả là phần quan trọng nhất của luồng thiết kế ASIC. Trong bước này, ñặc tính và chức năng của chip ASIC ñược ñịnh nghĩa. Lên kế hoạch cho chip (Chip Planning) cũng ñược làm trong bước này. [Liên quan ñến thời gian hoàn thành dự án, chi phí, diện tích chip ] Trong quá trình này, kiến trúc và vi kiến trúc ñược dẫn ra từ những ñòi hỏi về chức năng và ñặc tính (features). Việc dẫn ra này (derivation) ñặc biệt quan trọng bởi kiến trúc của một thiết kế ñóng vai trò quan trọng trong việc quyết ñịnh khả năng về hiệu suất (performance) của thiết kế. Bao gồm mức tiêu thụ công suất (power consumption), mức ñiện áp, những giới hạn về ñịnh thì ( timing restrictions) và những tiêu chuẩn về hiệu suất. Từ danh sách này, kiến trúc chip sẽ ñược phác thảo nháp (draft). Kiến trúc này sau ñó phải ñược xem xét tất cả những ñòi hỏi về ñịnh thì, ñiện áp, tốc ñộ và hiệu suất của thiết kế. Những mô phỏng về kiến trúc cần ñược thực hiện trên kiến trúc nháp ñể bảo ñảm rằng nó thỏa mãn tất cả những ñặc tả mong muốn. Trong quá trình mô phỏng kiến trúc, ñịnh nghĩa kiến trúc sẽ phải thay ñổi nếu kết quả mô phỏng cho thấy nó không ñáp ứng những yêu cầu về ñặc tả.Một khi tất cả những yêu cầu ñặc tả ñược thỏa mãn, vi kiến trúc (microarchitecture) ñược phác thảo và ñịnh nghĩa ñể cho phép thực thi kiến trúc từ một ñiểm thiết kế nào ñó. Vi kiến trúc là chìa khóa cho phép giai ñoạn thiết kế ñược bắt ñầu. Vi kiến trúc chính là ñiểm tiếp giáp của kiến trúc (Architecture) và mạch thực tế. Nó cũng cho phép biến ñổi nhưng khái niệm về kiến trúc thành những thực thi thiết kế khả dĩ. 2.2 : Mã hóa RTL Hình vẽ 2.4 chỉ ra bước thứ hai trong luồng thiết kế ASIC. ðây là ñiểm khởi ñầu của giai ñoạn thiết kế. Vi kiến trúc ñược biến ñổi thành một thiết kế bằng cách mô tả nó dưới dạng ngôn ngữ RTL. [ Thực chất chỉ là mô tả lại sơ ñồ khối mạch, chức năng nào ñó bằng ngôn ngữ HDL] Như ñã ñề cập trong phần 2.1 ( Bước 1 của luồng thiết kế ASIC) kiến trúc và vi kiến trúc ñược dẫn ra từ ñặc tả. Trong bước 2, vi kiến trúc, thực thi thật sự của mạch, ñược viết bằng mã RTL tổng hợp ñược. [Những mô tả có thể tổng hợp thành phần cứng ñược, vì trong ngôn ngữ như Verilog có rất nhiều thành phần chỉ dùng cho mô phỏng mà không tổng hợp ñược.] Có rất nhiều cách ñể tạo ra mã RTL. Một số nhà thiết kế dùng công cụ nhập thiết kế ñồ họa. Những công cụ ñồ họa này cho phép người thiết kế dùng những giản ñồ nút (bubble diagram), ñồ thị luồng [mô tả máy trạng thái] hay bảng sự thật (truth table) ñể thực thi vi kiến trúc sau ñó sẽ tạo ra mã Verilog hay VHDL. Tuy nhiên, một số nhà thiết kế lại thích viết mã RTL thay vì dùng công cụ ñồ họa. Cả hai phương pháp ñều kết thúc với kết quả là mã RTL tổng hợp ñược mà có thể mô tả chức năng logic của ñặc tả. 2.2.1 : Những kiểu mã Verilog : RTL, Hành vi (Behavioral) và cấu trúc (strutural) Phần 2.2 ñã trình bày về mã RTL. Trong ngôn ngữ Verilog, có ba kiểu mã. ðối với ña số trường hợp tổng hợp thì mã RTL tổng hợp ñược sẽ ñược dùng. 2.3 : Testbench và mô phỏng Hình 2.5 chỉ ra bước 3 trong luồng thiết kế ASIC liên quan ñến việc tạo testbench. Những mã này sẽ dược dùng ñể mô phỏng mã RTL. Testbench về cơ bản là một môi trường ñóng xung quanh (wraparound) bao lấy một thiết kế, cho phép thiết kế ñược mô phỏng. Nó ñẩy tập hợp xác ñịnh những kích thích (stimulus) vào ñầu vào (inputs) của thiết kế, kiểm tra hay xem xét ngõ ra (outputs) của thiết kế ñể bảo ñảm rằng dạng sóng hay vector kết quả (pattern) phù hợp với mong muốn của người thiết kế. Mã RTL và testbench ñược mô phỏng dùng bộ mô phỏng HDL. Nếu mã RTL ñược viết bằng Verilog thì cần một bộ mô phỏng Verilog.Nếu viết bằng VHDL thì tất nhiên cần một bộ mô phỏng VHDL. Verilog XL của Cadence, VCS của Synopsys và ModelSim của Mentor Graphic's là những bộ mô phỏng phổ biến nhất trên thế giới hiện nay. NCSim của Cadence và ModelSim của Mentor Graphic's có khả năng mô phỏng cả Verilog và VHDL.Scirocco của Synopsys là một ví dụ của bộ mô phỏng VHDL. Ngoài những công cụ kể trên còn rất nhiều những bộ mô phỏng khác. Bất chấp bộ mô phỏng nào ñược dùng, kết quả cuối cùng là kiểm tra (verification) mã RTL của thiết kế dựa vào testbench ñược viết. Nếu người thiết kế thấy rằng dạng sóng ñầu ra hay vector kết quả (pattern) trong quá trình mô phỏng không khớp với cái mà họ chờ ñợi thì thiết kế cần phải ñược gỡ rối (debug). Sự sai lệch có thể là do lỗi trong testbench hay là bug trong mã RTL. Người thiết kế cần xác ñịnh và sửa những lỗi này bằng cách chỉnh lại testbench ( nếu nguyên nhân là do Testbench) hay thay ñổi mã RTL nếu sai nằm ở mã RTL. Sau khi hoàn tất việc thay ñổi, người thiết kế phải chạy mô phỏng lại. ðiều này sẽ ñược thực thi liên tục trong một vòng lặp cho ñến khi người thiết kế thỏa mãn với kết quả mô phỏng. ðiều này có nghĩa là mã RTL ñã mô tả ñúng hành vi logic của thiết kế. 2.4 : Tổng hợp Hình 2.6 chỉ ra bước thứ 4 trong luồng thiết kế ASIC ñó là tổng hợp. Trong bước này, mã RTL ñược tổng hợp. ðây là quá trình mà trong ñó mã RTL ñược biến ñổi thành cổng logic. Cổng logic ñược tổng hợp sẽ có cùng chức năng giống như ñã ñược mô tả trong mã RTL. Trong bước 4, một công cụ tổng hợp dùng ñể biến ñổi mã RTL thành cổng logic.Hai công cụ ñược dùng phổ biến trong công nghiệp là Design Compiler của Synopsys và Ambit của Cadence. Quá trình tổng hợp cần hai tập tin ñầu vào khác ñể thực hiện việc biến ñổi từ RTL thành cổng logic. Tập tin ñầu vào ñầu tiên mà công cụ tổng hợp phải có trước khi thực hiện việc biến ñổi là tập tin "thư viện công nghệ" (technology library file). ðó là tập tin thư viện chứa những cell chuẩn. [Cell dùng ñể chỉ rất nhiều mức mạch khác nhau, một cổng AND chẳng hạn nhưng có khi cả một khối RAM hay ALU cũng gọi là cell]. Trong quá trình tổng hợp chức năng logic của mã RTL ñược biến ñổi thành những cổng logic sử dụng những cell sẵn có trong tập tin thư viện công nghệ. Tập tin ñầu vào thứ hai là "tập tin giới hạn" ( constraints file) giúp quyết ñịnh việc tối ưu mạch logic tổng hợp.Tập tin này thường chứa những thông tin về ñịnh thì, yêu cầu tải và thuật toán tối ưu mà công cụ tổng hợp cần ñể tối ưu thiết kế thậm chí cả những nguyên tắc thiết kế cũng ñược xem xét trong quá trình tổng hợp. Bước 4 là một bước rất quan trọng trong luồng thiết kế ASIC. Bước này bảo ñảm việc tổng hợp ñược tùy biến nhằm có ñược kết quả tối ưu nhất có thể. Dựa vào bản tối ưu hóa cuối cùng, nếu những yêu cầu về hiệu suất hay tận dụng diện tích vẫn không nằm trong khoảng cho phép người thiết kế phải xem xét lại từ kiến trúc ñến vi kiến trúc của thiết kế. Người thiết kế phải ñánh giá lại kiến trúc cũng như vi kiến trúc ñã ñáp ứng những yêu cầu về diện tích và hiệu suất hay chưa? Nếu vẫn chưa ñáp ứng yêu cầu thì việc ñịnh nghĩa lại kiến trúc hay vi kiến trúc là việc làm bắt buộc tuy nhiên việc làm này sẽ dẫn ñến việc phải bắt ñầu lại từ ñầu, một hành ñộng rất mất thời gian. Thậm chí nếu việc thay ñổi kiến trúc hay vi kiến trúc vẫn không mang lại kết quả mong muốn thì việc phải nghĩ ñến là sửa chữa specs. 2.5 : Phân tích ñịnh thì tiền layout Khi tổng hợp ñược hoàn thành trong bước 4, cơ sở dữ liệu cùng với những thông tin về ñịnh thì từ bước 4 ñược dùng ñể phân tích ñịnh thì tĩnh (static timing analysis). Trong bước 5, phân tích ñịnh thì là tiền layout vì cơ sở dữ liệu không chứa thông tin về layout.( Hình 2.7) [...]... i thi t k ph i ñi ngư c l i bư c 2 ( RTL coding) hay bư c 8 Khi thi t k cu i cùng ñã qua ñư c vòng ki m tra logic nó ñư c ñưa ñi làm m u th ( tapeout) Chương 3 : Mã Verilog 3.1: Gi i thi u nh ng khái ni m cơ b n c a Verilog Verilog là m t ngôn ng mô t ph n c ng ñư c dùng r ng rãi trong thi t k m ch s Nó cũng ñư c dùng ñ mô hình hóa c m ch tương t B t ch p Verilog ñư c dùng cho m ch s hay m ch tương... nó v n áp d ng ñúng Khi m t ngư i thi t k vi t mã Verilog ñi u quan tr ng là ph i bi t m t s nh ng ký hi u cơ b n ñư c dùng trong Verilog 3.1.1 : Cú pháp Verilog Verilog là m t ngôn ng mô t ph n c ng (HDL) cho phép ngư i dùng mô t thi t k ph n c ng Gi ng như t t c các ngôn ng khác có nh ng cú pháp ph i tuân th khi vi t mã Verilog T t c nh ng cú pháp Verilog b t ñ u v i vi c khai báo module M t module... c cái mà mã Verilog th hi n ñi u gì là m t phương pháp t t, ñ ng th i nó cũng là m t d ng tài li u t t dành cho vi c tham kh o sau này Verilog cho phép ghi chú m t hàng hay nhi u hàng Ghi chú m t hàng s d ng kí hi u // trong ñó nh ng ghi chú nhi u hàng m ñ u v i kí hi u /* và k t thúc v i kí hi u*/.Ví d : // This is a single line comment in Verilog //* This is a multiple line comments in Verilog Notice... nh thì ñư c th c hi n l i trong m t vòng l p cho ñ n khi không còn m t vi ph m nào v ñ nh thì Thi t k bây gi ñã s n sàng cho vi c ki m tra logic .9 : Ki m tra Logic ( Logic Verification) Khi phân tích ñ nh thì sau layout ñã hoàn t t, bư c ti p theo là ki m tra logic Hình 2.11 mô t ñi u này Bư c này ñóng vai trò ch t ch n cu i cùng b o ñ m thi t k ñúng ch c năng Trong bư c này, thi t k ñư c mô ph ng... comment b ng ti ng Vi t không d u.Ví lý do hi n th trong bài post nên tôi dùng kí hi u //* và *// th c t b n ph i dùng là /* và */] 3.1.3 : Bi u di n s Verilog cho phép m t d i r t r ng các lo i s khác nhau ñư c dùng trong khi vi t mô t Ngư i thi t k có th ch n dùng s th c, s nguyên, s nh phân, s trong thang th i gian, s có d u và s không d u 1 S th c ñư c khai báo trong Verilog dùng t khóa real .Verilog. .. lái ki u net này m c logic 1 thì l p t c ki u net này s cho giá tr logic 1 trior không t ng h p ñư c và không dùng trong mã t ng h p khi vi t mô t • 5 triand cũng dùng như lo i net cho phép nhi u driver Tuy nhiên, nó khác ki u tri ch nó thu c lo i net k t n i AND ði u náy có nghĩa là b t kì m t trong s các driver ñang lái nó có giá tr logic 0 thì l p t c ki u net này có giá tr logic 0 triand cũng không... tri1 s gi m c logic 1 n u nh ng driver ñang lái nó tr ng thái Hi-Z hay t ng tr cao.ðây cũng là m t lo i net n a không t ng h p ñư c • 8.tri0 Gi ng như tri1 tuy nhiên net s gi m c logic 0 n u các driver lái nó ñ u ñang tr ng thái Hi-Z hay t ng tr cao • 9.wand dùng cho net có c u hình n i dây ki u AND trong ñó n u b t kì driver nào trong nh ng driver ñang lái wand có m c logic 0 thì wand s m c logic 0.wand... ng OR 3.2 Verilog gate - level primitive [primitive là nh ng kh i ñã ñư c xây d ng s n trong Verilog như c ng NOT, AND, NOR ngư i dùng ch c n n m cú pháp khai báo c a nó là có th s d ng ñư c trong thi t k c a mình mà không c n ph i khai báo trư c] Verilog cho phép nh ng primitive m c c ng (gate-level) ñư c th hi n trong mô t thi t k Nh ng primitive này là nh ng thành ph n có s n trong Verilog và... nhi u driver Ví d 3.5 : Mã Verilog dùng khai báo ba tr ng thái module example ( inputA, inputB, inputC, outputA); input inputA, inputB, inputC; output outputA; tri temp; assign temp = inputA & ~inputB; // Verilog code here assign temp = inputA | ~inputB; assign outputA = temp & inputC; endmodule Ki u tri có th t ng h p ñư c Tuy nhiên, ta nên tránh dùng ki u tri khi vi t mã Verilog N u m t nút (node)... ; endtable endprimitive trong ñó : là tên c a primitive ñang ñư c ñ nh nghĩa là tên c a nh ng c ng ngõ ra c a UPD primitive.Lưu ý là primitive ch có m t ngõ ra và ngõ ra này ch có ñ r ng 1 bit là tên c a nh ng ngõ vào Lưu ý là m i ngõ vào cũng ch có ñ r ng 1 bit . công nghiệp: Verilog và VHDL. Quyển sách này chỉ trình bày về Verilog. Quyền sách này ñược viết dành cho sinh viên và kỹ sư học viết mã Verilog tổng hợp ñược (synthesizable Verilog code).Chương. giờ ñã sẵn sàng cho việc kiểm tra logic. .9 : Kiểm tra Logic ( Logic Verification) Khi phân tích ñịnh thì sau layout ñã hoàn tất, bước tiếp theo là kiểm tra logic. Hình 2.11 mô tả ñiều này RTL coding) hay bước 8. Khi thiết kế cuối cùng ñã qua ñược vòng kiểm tra logic nó ñược ñưa ñi làm mẫu thử ( tapeout). Chương 3 : Mã Verilog 3.1: Giới thiệu những khái niệm cơ bản của Verilog

Ngày đăng: 11/08/2014, 19:47

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan