You are on page 1of 17

CoAsia SEMI VN

Project Assignment:
Synchronous FIFO with RAM,
from RTL to GDS
For VLSI Course, 2023.1, Dr. Nguyen Vu Thang, HUST

CoAsia SEMI VN
Project Assignment, VLSI 2023.1

REVISION HISTORY
Revision Author Date Description of changes
0.1 ducpm 05.10.2023 Initial draft
ducpm, Added section 1; 2.3
0.2 06.10.2023
support team Modified section 2.1; 2.2 for clarity
hoangph,
0.3 25.10.2023 Added section 3 for guiding HDL coding
ducpm
tientq, Curent Version
0.4 15.11.2023
ducpm Added section 4 for guiding Design Verification

CONFIDENTIAL 1
Project Assignment, VLSI 2023.1

TABLE OF CONTENTS

REVISION HISTORY ......................................................................................................................................................1


TABLE OF CONTENTS .................................................................................................................................................2
TABLE OF FIGURES & TABLES ................................................................................................................................3
1. Quy trình thiết kế VLSI ...........................................................................................................................................4
2. Project: Synchronous FIFO with RAM, RTL-2-GDS......................................................................................6
2.1. Thông số kĩ thuật (Specifications) .............................................................................................................6
2.2. Yêu cầu thực hiện đề tài (Assignment) ....................................................................................................7
2.2.1. Lập trình mô tả phần cứng – HDL Coding ........................................................................................7
2.2.2. Kiểm thử thiết kế (logic) - Design Verification ...............................................................................7
2.2.3. Tổng hợp logic & Phân tích thời gian tĩnh - Logic Synthesize & Static Timing Analysis ..7
2.2.4. Tạo bản thiết kế vật lý – Physical Layout .........................................................................................8
2.3. Học liệu/Công cụ được cung cấp ................................................................................................................8
3. Hướng dẫn triển khai – HDL Coding .................................................................................................................9
3.1. Yêu cầu thực hiện: ............................................................................................................................................9
3.2. Học liệu.................................................................................................................................................................9
3.3. Dữ liệu được cung cấp cùng với đề tài .................................................................................................. 11
3.4. Ghi chú ............................................................................................................................................................... 14
4. Hướng dẫn triển khai – Design Verification ................................................................................................ 15
4.1. Yêu cầu thực hiện .......................................................................................................................................... 15
4.2. Học liệu.............................................................................................................................................................. 15
4.3. Dữ liệu được cung cấp cùng với đề tài .................................................................................................. 15
4.4. Ghi chú ............................................................................................................................................................... 16

CONFIDENTIAL 2
Project Assignment, VLSI 2023.1

TABLE OF FIGURES & TABLES

Figure 1: Quy trình thiết kế VLSI - VLSI design flow .......................................................................................4


Figure 2: Sơ đồ khối của Synchronous FIFO sử dụng RAM ...........................................................................6
Figure 3: chipverify.com - Verilog Data Types ...................................................................................................9
Figure 4: chipverify.com - Verilog Building Blocks ....................................................................................... 10
Figure 5: chipverify.com - Verilog Behavioral Modeling ............................................................................ 11
Figure 6: Template sử dụng cho Verilog coding ............................................................................................. 11
Figure 7: Khai báo csv_sfifo_ram .......................................................................................................................... 12
Figure 8: Khai báo/Khởi tạo các phần tử trong csv_sfifo_ram .................................................................. 13
Figure 9: Mô tả hành vi cho read_pointer & write_pointer ........................................................................ 13
Figure 10: Mô tả hành vi cho bộ đếm ................................................................................................................. 14
Figure 11: Mô tả hành vi cho tín hiệu đầu ra ................................................................................................... 14
Figure 12: Ảnh minh họa về Test case & Test plan ....................................................................................... 15
Figure 13: Các vị trí cần bổ sung/điều chỉnh trong tb.sv ............................................................................ 16

Table 1: Yêu cầu In/Out ..............................................................................................................................................6


Table 2: Yêu cầu tham số ............................................................................................................................................6
Table 3: File tổng hợp dự án .....................................................................................................................................8
Table 4: Mô tả các dữ liệu được cung cấp - HDL Coding ............................................................................. 11
Table 5: Mô tả dữ liệu được cung cấp – Verification .................................................................................... 16

CONFIDENTIAL 3
Project Assignment, VLSI 2023.1

1. Quy trình thiết kế VLSI


Quy trình thiết kế VLSI có thể được biểu diễn bởi 5 bước cơ bản, bao hàm các thao tác cần thực
hiện để có thể đưa ra bản vẽ kĩ thuật cho mạch, gồm:

Figure 1: Quy trình thiết kế VLSI - VLSI design flow

- HDL Coding - Lập trình mô tả phần cứng.


o Mạch điện tử số có thể được mô tả thông qua lập trình, dựa trên chức năng/hành
vi của mạch (behavioral), cấu trúc (structural), đặc điểm luồng dữ liệu (data-flow).
o Sử dụng các ngôn ngữ mô tả phần cứng (HDL) như Verilog, VHDL, SystemVerilog,
v.v..
- Logic Verification – Kiểm thử logic.
o Được sử dụng để kiểm tra logic của phần cứng được thiết kế trên HDL, đảm bảo
tính hoạt động đúng đắn của mạch khi được thiết kế.
- Logic Synthesis & Timing Analysis – Tổng hợp logic & Phân tích hiệu năng thời gian.
o Dựa trên kết quả lập trình HDL đã đúng logic, tiến hành chuyển đổi mô tả của mạch
dưới dạng chức năng/cấu trúc sang tập các cổng logic thực tế & liên kết giữa các
cổng cần thiết để tạo ra mạch thật.
o Phân tích hoạt động của mạch về mặt thời gian (timing analysis) để xác định hiệu
năng hoạt động, từ đó tạo các ràng buộc/giới hạn cho thiết kế.

CONFIDENTIAL 4
Project Assignment, VLSI 2023.1

- Physical Layout – Tạo bản vẽ vật lý.


o Dựa vào thiết kế đã được dịch sang tập các cổng logic & liên kết, cùng với thư viện
công nghệ & các ràng buộc thiết kế (hiệu năng thời gian, diện tích, năng lượng, …),
tiến hành tạo bản vẽ vật lý của mạch
- Physical Verification & Sign-off – Kiểm thử vật lý & Hoàn thiện.
o Dựa trên kết quả bản vẽ vật lý đã thu được, tiến hành:
 Physical Verification:
 Kiểm tra bản vẽ của mạch, dựa trên các bộ quy định (design rule)
được cung cấp từ phía nhà sản xuất (foundry). Bản vẽ phải đảm bảo
không có lỗi so với bộ quy định trên – Design Rule Check (DRC)
 Kiểm tra độ trùng khớp giữa sơ đồ nguyên lý (schematic) so với bản
vẽ (layout). Về mặt logic, sơ đồ nguyên lý & bản vẽ phải tương đồng.
– Layout Vs Schematic (LVS)
 Post-Timing Analysis: Kiểm tra hiệu năng thời gian sau khi đã có bản vẽ.
Thiết kế với bản vẽ thu được phải đảm bảo các đường dữ liệu hoạt động
theo đúng giới hạn thời gian, không phát sinh trạng thái không xác định
trên toàn mạch.

CONFIDENTIAL 5
Project Assignment, VLSI 2023.1

2. Project: Synchronous FIFO with RAM, RTL-2-GDS


2.1. Thông số kĩ thuật (Specifications)
Đề tài: Thiết kế khối FIFO đồng bộ sử dụng RAM module (Synchronous FIFO with RAM),
thực hiện từ lập trình mô tả phần cứng (RTL coding) cho tới tạo bản thiết kế (layout)
Sơ đồ khối:

Figure 2: Sơ đồ khối của Synchronous FIFO sử dụng RAM

Yêu cầu I/O:


Table 1: Yêu cầu In/Out

Tên tín hiệu Hướng Mô tả


clk Vào Xung đồng hồ, điều khiển hoạt động của khối sFIFO
resetn Vào Tín hiệu reset, tích cực mức thấp
wdata [WIDTH-1 : 0 ] Vào Dữ liệu đưa vào sFIFO (viết vào RAM), rộng WIDTH bit
i_wreq Vào Tín hiệu thông báo đầu vào tới
i_rreq Vào Tín hiệu yêu cầu đọc dữ liệu
o_wready Ra Thông báo sFIFO sẵn sàng nhận dữ liệu tiếp theo
o_rready Ra Thông báo có thể đọc dữ liệu ra từ sFIFO hay không
rdata [WIDTH-1 : 0] Ra Dữ liệu đọc ra từ sFIFO (đọc ra từ RAM), rộng WIDTH bit
fifo_isfull Ra Thông báo trạng thái của sFIFO, sFIFO đã đầy hay chưa
fifo_isempty Ra Thông báo trạng thái của sFIFO, sFIFO có rỗng hay không

Table 2: Yêu cầu tham số

Tham số Mô tả
WIDTH (W) Độ rộng dữ liệu đưa vào sFIFO (word width)
DEPTH (D) Độ sâu của RAM module – số lượng word có thể lưu trữ trong RAM

CONFIDENTIAL 6
Project Assignment, VLSI 2023.1

Yêu cầu chức năng:

1. Dữ liệu tới sFIFO được lưu vào trong RAM module. Dữ liệu được đọc ra từ RAM module.
Quá trình viết/đọc hoạt động theo cơ chế First-In-First-Out (FIFO).
2. sFIFO hoạt động đồng bộ, theo xung clock (clk)
3. Tín hiệu reset không đồng bộ, tích cực ở mức thấp (resetn)
4. Tín hiệu i_wreq thông báo có dữ liệu mới đến sFIFO & yêu cầu viết. Chỉ khi tín hiệu i_wreq
& tín hiệu o_wready cùng ở mức 1 (yêu cầu ghi & sFIFO sẵn sàng nhận dữ liệu mới), dữ
liệu mới được ghi vào trong sFIFO.
5. Tín hiệu i_rreq thể hiện yêu cầu đọc dữ liệu ra từ sFIFO. Chỉ khi tín hiệu i_rreq & tín hiệu
o_rready cùng ở mức 1 (yêu cầu đọc & sFIFO sẵn sàng đọc ra dữ liệu), dữ liệu mới được
đọc ra từ sFIFO.
6. Thông báo trạng thái của sFIFO:
- fifo_isfull: Đưa lên 1 nếu bộ nhớ (RAM) trong FIFO đã đầy, không nhận thêm dữ liệu
mới cho đến khi được đọc ra
- fifo_isempty: Đưa lên 1 nếu bộ nhớ (RAM) trong FIFO đã rỗng, không thể đọc dữ liệu
ra cho đến khi dữ liệu mới được ghi vào.
Ghi chú:
- Các tham số WIDTH, DEPTH được sử dụng để quy định loại RAM module sẽ được sử dụng
trong thiết kế.
- RAM module được cung cấp sẵn, không yêu cầu lập trình & tạo layout trong quá trình sử
dụng.

2.2. Yêu cầu thực hiện đề tài (Assignment)


Dựa trên quy trình thiết kế VLSI, sinh viên cần thực hiện các đầu mục nhiệm vụ như sau:

2.2.1. Lập trình mô tả phần cứng – HDL Coding


1. Đọc hiểu yêu cầu (Specifications)
2. Hoàn thiện lập trình cho bộ sFIFO, dựa trên các mô tả chức năng đã trình bày (Yêu cầu
chức năng, mục 1.1)
3. * Đảm bảo thiết kế có thể tổng hợp logic (logic synthesizable)

2.2.2. Kiểm thử thiết kế (logic) - Design Verification


Dựa trên kết quả lập trình đã thu được ở trên
1. Lên kế hoạch các trường hợp kiểm thử (testcase)
2. Viết testbench cho các testcase ở trên
3. Chạy mô phỏng, đọc kết quả & mô tả hoạt động – Chứng minh thiết kế sFIFO đã hoạt
động đúng logic

2.2.3. Tổng hợp logic & Phân tích thời gian tĩnh - Logic Synthesize & Static Timing Analysis
Dựa trên kết quả lập trình đúng về mặt logic, đảm bảo tính khả thi khi tổng hợp logic (logic
synthesizable), tiến hành:
1. Tổng hợp logic cho thiết kế (logic synthesize).
Chuyển thiết kế dưới dạng RTL sang Gate-level netlist

CONFIDENTIAL 7
Project Assignment, VLSI 2023.1

2. Gán kết quả Gate-level netlist sang các thiết bị (gate) trong thư viện công nghệ
(PDK, SKY130nm)
3. Đọc hiểu lý thuyết về phân tích thời gian tĩnh (Static Timing Analysis).
Áp dụng các ràng buộc/giới hạn thiết kế về thời gian (timing constraints) cho thiết kế.

2.2.4. Tạo bản thiết kế vật lý – Physical Layout


Dựa trên các kết quả thu được từ bước tổng hợp mạch (Logic synthesize), cùng với các giới hạn
thiết kế về thời gian (Timing constraints), áp dụng để tạo bản vẽ vật lý cho thiết kế:
1. Tìm hiểu về các yêu cầu/file cần thiết để tạo physical layout.
Đọc về quy trình các bước để tạo layout.
2. Chạy vẽ mạch (tự động) theo từng bước, kiểm tra kết quả & làm báo cáo.

2.3. Học liệu/Công cụ được cung cấp


Trong suốt quá trình thực hiện đề tài, sinh viên sẽ được cung cấp:
- Công cụ/Phần mềm thực hiện các đầu mục yêu cầu
1. Lập trình HDL: Text-editor
2. Mô phỏng: Vivado/Xsim
3. Tổng hợp logic: OpenLane/Yosys
4. Tạo bản vẽ (tự động): OpenLane/OpenRoad
5. Dữ liệu cần thiết để thực hiện các yêu cầu:
 Thư viện công nghệ (Process Design Kit – PDK): Skywater SKY130nm
 Các ràng buộc thiết kế (Constraints): Thời gian (Timing), Diện tích (Area),
Năng lượng (Power)
- Tài liệu về các lý thuyết liên quan (Documentations, Fundamentals)
- Các biểu mẫu: Trình bày testplan, báo cáo tổng kết
- Tài liệu hỗ trợ quá trình thực hiện đề tài (Guiding documents), tài liệu tham khảo
(Preferences)

 Truy cập tới các học liệu được cung cấp tại đây:
Table 3: File tổng hợp dự án

CT Chuẩn CT IoT & Tài năng


CSVxHUST_VLSI-20231_ProjectBook.xlsx CSVxHUST_VLSI-20231_ProjectBook.xlsx

CONFIDENTIAL 8
Project Assignment, VLSI 2023.1

3. Hướng dẫn triển khai – HDL Coding


3.1. Yêu cầu thực hiện:
Trong quá trình thực hiện HDL coding, các bạn sinh viên cần thực hiện các nhiệm vụ như sau:
- Tuần 1, 2: Tìm hiểu về HDL coding, thực hiện các ví dụ Verilog coding đơn giản (tuần 1);
Triển khai thiết kế Synchronous FIFO with RAM (tuần 2)
 Yêu cầu nộp báo cáo (tuần 1 & 2)
- Tuần 3: Hoàn thành HDL coding cho bộ Synchronous FIFO with RAM.
 Yêu cầu nộp báo cáo tiến độ & kết quả coding (tuần 3)

3.2. Học liệu


Để triển khai HDL Coding cho bộ Synchronous FIFO with RAM, bạn cần các kiến thức cơ
bản liên quan tới lập trình HDL/RTL, sử dụng ngôn ngữ mô tả phần cứng Verilog.
Tìm hiểu về các khái niệm cơ bản trong Verilog (tại trang web chipverify.com):
1. Giới thiệu về Verilog:
Introduction to Verilog (chipverify.com)
2. Dữ liệu trong Verilog: Cú pháp lập trình (Syntax), Các kiểu dữ liệu (Data types),
Scalar & Vectors, Array:
Verilog syntax (chipverify.com) & các mục dưới phần Data Types.

Figure 3: chipverify.com - Verilog Data Types

3. Các kiến trúc trong Verilog: Module; Port; Cách khởi tạo & sử dụng Module; Các
toán tử (operators); Lệnh gán (assign); khối always & thiết kế mạch tổ hợp, mạch
tuần tự; …

CONFIDENTIAL 9
Project Assignment, VLSI 2023.1

Verilog module (chipverify.com) & các mục phía dưới phần Building Blocks.

Figure 4: chipverify.com - Verilog Building Blocks

4. Thiết kế mạch sử dụng mô tả hành vi/chức năng – Behavioral modeling


Mô tả khối các lệnh (Block statements); Các kiểu gán dữ liệu (Assignment types);
Các khối lệnh điều khiển & rẽ nhánh logic (for, case, if-else, …); …
Verilog Block statements (chipverify.com) & các mục phía dưới phần Behavioral
modeling.

CONFIDENTIAL 10
Project Assignment, VLSI 2023.1

Figure 5: chipverify.com - Verilog Behavioral Modeling

3.3. Dữ liệu được cung cấp cùng với đề tài


Để hỗ trợ các bạn sinh viên trong quá trình thực hiện HDL coding cho bộ sFIFOwRAM, các bạn
được cung cấp 01 bộ coding template, với các file như sau:

Figure 6: Template sử dụng cho Verilog coding

Table 4: Mô tả các dữ liệu được cung cấp - HDL Coding

File Mô tả
csv_sfifo_ram.v Biểu mẫu để code bộ sFIFOwRAM, bao gồm các khai
báo & khối chức năng cần hoàn thiện
sky130_sram_1r1w_8x16_8.v File Verilog, thiết kế của bộ SRAM mẫu
WIDTH = 8, DEPTH = 16

CONFIDENTIAL 11
Project Assignment, VLSI 2023.1

sky130_sram_1r1w_8x16_8_wrapper.v File Verilog, thiết kế bao hàm (wrapper) cho khối


SRAM mẫu; WIDTH = 8, DEPTH = 16
Trong quá trình thiết kế bộ sFIFO, khởi tạo SRAM sử
dụng theo bộ wrapper này.
(Instance used SRAM within the design using this
wrapper design)

Mô tả biểu mẫu: csv_sfifo_ram.v


File csv_sfifo_ram.v được cung cấp bao gồm:
1. Khai báo cho khối csv_sfifo_ram, với các tham số & đầu vào, ra. Cần hoàn thiện các
thông số tại đây.

Figure 7: Khai báo csv_sfifo_ram

CONFIDENTIAL 12
Project Assignment, VLSI 2023.1

2. Khai báo/Khởi tạo các phần tử sử dụng bên trong khối csv_sfifo_ram. Cần hoàn thiện
các thông số tại đây.

Figure 8: Khai báo/Khởi tạo các phần tử trong csv_sfifo_ram

3. Biểu mẫu lập trình điều khiển read_pointer (con trỏ đọc) & write_pointer (con trỏ
ghi), liên quan đến SRAM được sử dụng. Cần hoàn thiện thiết kế logic cho các con trỏ trên.

Figure 9: Mô tả hành vi cho read_pointer & write_pointer

4. Biểu mẫu lập trình bộ đếm, liên quan đến hoạt động của RAM. Cần hoàn thiện thiết kế
logic cho bộ này.

CONFIDENTIAL 13
Project Assignment, VLSI 2023.1

Figure 10: Mô tả hành vi cho bộ đếm

5. Biểu mẫu lập trình cho các tín hiệu ra (fifo_isfull; fifo_isempty; o_wready; o_rready). Cần
hoàn thiện thiết kế logic cho các tín hiệu trên.

Figure 11: Mô tả hành vi cho tín hiệu đầu ra

Khi hoàn thiện được nội dung của các mục nói trên, cơ bản, các bạn đã nhận được 01 thiết kế
sFIFOwRAM, có thể sử dụng để kiểm thử chức năng hoạt động (Verify), hoặc tiến hành tổng hợp
logic (Logic Synthesis).

3.4. Ghi chú


Bên cạnh cấu trúc đã được mô tả thông qua biểu mẫu trong csv_sfifo_ram.v, các bạn có thể tự
đưa ra thiết kế riêng dựa trên hiểu biết & khả năng của mình.
Nếu có đề xuất/yêu cầu mới cần trao đổi (VD: Thay đổi kích thước/thông số của RAM module,
lập trình theo cấu trúc tự đề xuất, … ), hãy liên hệ các anh/chị hỗ trợ để được tư vấn & giải đáp.

CONFIDENTIAL 14
Project Assignment, VLSI 2023.1

4. Hướng dẫn triển khai – Design Verification


4.1. Yêu cầu thực hiện
Trong quá trình thực hiện Verification, các bạn sinh viên cần thực hiện các nhiệm vụ như sau:
- Tuần 4: Tìm hiểu về Verification, tạo các trường hợp kiểm thử (test case) & lên kế hoạch
(test plan).
 Yêu cầu nộp báo cáo (tuần 4).
- Tuần 5: Triển khai & hoàn thành kiểm thử thiết kế Synchronous FIFO with RAM, điều
chỉnh & hoàn thành HDL coding để đảm bảo chức năng hoạt động.
 Yêu cầu nộp báo cáo tiến độ, kết quả kiểm thử, & kết quả coding (tuần 5)

4.2. Học liệu


Để triển khai kiểm thử - Verify cho thiết kế Synchronous FIFO, các bạn cần bổ sung kiến thức
liên quan tới:
- Verilog testbench & cách thức triển khai
- SystemVerilog & một số khái niệm liên quan (testbench, test case, test plan, …)
Các nguồn học liệu:
- Trang web chipverify.com, về các mục Verilog/SystemVerilog
(Các chủ đề liên quan xem tại file File tổng hợp dự án/ProjectBook)
- Slide 02_CSV-DV_FIFO_verification (đường dẫn tại File tổng hợp dự án/ProjectBook)

Figure 12: Ảnh minh họa về Test case & Test plan

4.3. Dữ liệu được cung cấp cùng với đề tài


Để hỗ trợ các bạn sinh viên trong quá trình kiểm thử thiết kế sFIFOwRAM, các bạn đượ
cung cấp mẫu testbench đã được quy định sẵn cấu trúc, chỉ cần bổ sung thêm logic của test case
để tiến hành chạy mô phỏng.
CONFIDENTIAL 15
Project Assignment, VLSI 2023.1

Table 5: Mô tả dữ liệu được cung cấp – Verification

File Mô tả
tb.sv File testbench chính, sử dụng trong quá trình mô
phỏng/verify. Đã được xây dựng sẵn cấu trúc, cần
điền logic theo test case để kiểm thử

Mô tả biểu mẫu: tb.sv


File tb.sv là file testbench đã được xây dựng sẵn cấu trúc, cần bổ sung thêm logic của các test
case (với test case FIFO FULL, FIFO EMPTY), hay quy định cho các test case khác, để tiến hành
kiểm thử.

Figure 13: Các vị trí cần bổ sung/điều chỉnh trong tb.sv

4.4. Ghi chú


N/A

CONFIDENTIAL 16

You might also like