1 điểm bởi GN⁺ 2024-07-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Intel Pentium ra mắt năm 1993 là một con chip phức tạp với 3,3 triệu transistor, nhưng khác với chip hiện đại, có thể nhìn thấy transistor dưới kính hiển vi nên có thể lần theo trực tiếp cách các cổng bên trong được triển khai
  • Thiết kế standard cell là phương pháp tạo các mạch mức thấp như cổng và flip-flop thành các cell có thể tái sử dụng, rồi sắp xếp chúng theo hàng để phù hợp với quy trình place-and-route tự động
  • Trên die Pentium, vùng standard cell hiện ra như các sọc đều đặn, còn những khối được tối ưu thủ công như cache, datapath và microcode ROM thì đặc hơn và tối hơn
  • Dòng Pentium P54C dùng quy trình 600nm, 3.3V và 4 lớp dây kim loại, đồng thời sử dụng rộng rãi cả mạch BiCMOS bên cạnh cổng CMOS để giảm độ trễ tín hiệu tới 35%
  • Inverter, NAND, OR-NAND, latch, flip-flop và bộ đệm BiCMOS đều là tổ hợp của các mạch transistor nhỏ, và Pentium là một ví dụ có thể quan sát thiết kế số standard cell và BiCMOS của thập niên 1990

Cấu trúc standard cell nhìn thấy trên die Pentium

  • Intel phát hành bộ xử lý Pentium vào năm 1993, sau đó tiếp nối bằng Pentium Pro, Pentium II và các dòng khác, duy trì như một thương hiệu CPU hiệu năng cao cho đến khi dòng Core thay thế vai trò chủ lực vào năm 2006
  • Pentium nguyên bản là một con chip phức tạp với 3,3 triệu transistor, nhưng khác với chip hiện đại, transistor của nó có thể được nhìn thấy dưới kính hiển vi
  • Trong ảnh die sau khi loại bỏ các lớp dây kim loại, silicon và từng transistor lộ ra
    • Mạch standard cell được bố trí thành các hàng đồng đều nên hiện ra dưới dạng hoa văn sọc
    • Các khối chức năng được tối ưu thủ công thì đặc hơn, có cấu trúc hơn và tối hơn
    • Ví dụ là cache ở bên trái, datapath ở giữa và microcode ROM ở bên phải

Từ bố trí thủ công sang standard cell

  • Các bộ xử lý đời đầu trong thập niên 1970 thường được bố trí transistor thủ công từng cái một
    • Cách này có thể đạt mật độ cao nhưng chậm, khó và dễ sai sót
    • Nhà thiết kế Z80 Federico Faggin từng phải xóa bỏ 3 tuần công việc và làm lại từ đầu vì vài transistor cuối cùng không thể nhét vào được
  • Standard cell là cách xây dựng thư viện cell triển khai từng cổng, flip-flop và thành phần mức thấp để tái sử dụng
    • Mỗi cell có chiều cao cố định, còn chiều rộng thay đổi theo nhu cầu
    • Có thể đặt các cell theo từng hàng nên rất phù hợp cho tự động hóa
  • Hàng standard cell CMOS thường trông như hai dải nằm sát nhau
    • Một dải là vùng transistor NMOS
    • Dải còn lại là vùng transistor PMOS
    • Khoảng trống giữa các hàng được dùng làm kênh đi dây giữa các cell
    • Nguồn và mass được đặt dọc theo phía trên và phía dưới của mỗi hàng

Những gì place-and-route tự động đảm nhiệm

  • Cấu trúc cố định của standard cell giúp phần mềm place-and-route tự động dễ tạo layout hơn
  • Giai đoạn placement tìm cách sắp xếp cell để giảm khoảng cách giữa các cell có kết nối với nhau
    • Dây quá dài làm lãng phí diện tích die
    • Đường đi dài làm tăng điện dung và khiến tín hiệu chậm hơn
  • Giai đoạn routing kết nối các cell đã đặt bằng dây kim loại thực tế
  • Cả placement lẫn routing đều là các bài toán tối ưu NP-complete
  • Intel bắt đầu sử dụng kỹ thuật place-and-route tự động từ bộ xử lý 386
    • Placement được thực hiện bằng chương trình Timberwolf do một nghiên cứu sinh tại Berkeley phát triển
    • Routing dùng phần mềm tùy biến của Intel dựa trên phương pháp heuristic lặp
    • Thiết kế standard cell vẫn được dùng trong CPU ngày nay, nhưng phần mềm đã tiến bộ hơn rất nhiều

Cấu trúc CMOS cơ bản của Pentium

  • Bộ xử lý hiện đại dùng mạch CMOS, kết hợp hai loại transistor là NMOS và PMOS
  • Transistor NMOS bật khi gate ở mức cao, còn transistor PMOS bật khi gate ở mức thấp
    • NMOS phù hợp để kéo đầu ra xuống điện áp thấp
    • PMOS phù hợp để kéo đầu ra lên điện áp cao
  • Chữ “C” trong CMOS là Complementary, vì NMOS và PMOS cùng hoạt động để làm đầu ra lên cao hoặc xuống thấp
  • NMOS và PMOS không hoàn toàn đối xứng do đặc tính vật lý bán dẫn, và PMOS thường phải lớn hơn NMOS
    • Sự khác biệt này là đầu mối để phân biệt PMOS và NMOS trong ảnh die

Hệ thống dây gồm 4 lớp kim loại

  • Pentium phiên bản P54C dùng 4 lớp dây kim loại
    • Các Pentium đời đầu dùng 3 lớp kim loại, nhưng từ die P54C đã chuyển sang quy trình 4 lớp
  • Trên bề mặt silicon có các vùng pha tạp, phía trên là các đường polysilicon
    • Khi polysilicon cắt ngang silicon pha tạp thì nó tạo thành gate của transistor
    • Polysilicon cũng được dùng để đi dây ở khoảng cách ngắn
  • Các lớp kim loại được đánh số từ M1 đến M4
    • M1 là lớp kim loại thấp nhất
    • M4 là lớp trên cùng và dày nhất, chủ yếu dùng cho nguồn, mass và tín hiệu clock
    • Kết nối giữa các lớp kim loại được thực hiện bằng via là các nút tungsten
    • Chỉ M1 mới kết nối trực tiếp với silicon hoặc polysilicon qua contact
  • Các lớp dây thường luân phiên chạy ngang và dọc ở phạm vi cục bộ để tín hiệu có thể giao cắt nhau
  • Phần mềm place-and-route tự động phải tạo ra hàng triệu đường dây phức tạp với mật độ cao nhất có thể

Inverter và cổng NAND

  • Inverter CMOS gồm 1 PMOS và 1 NMOS
    • Khi đầu vào là 1, NMOS bật và kéo đầu ra xuống 0
    • Khi đầu vào là 0, PMOS bật và kéo đầu ra lên 1
  • Inverter standard cell của Pentium cũng có cùng cấu trúc hai transistor này
    • Đầu vào nối với gate polysilicon của cả hai transistor
    • Dây kim loại đầu ra nối với cả hai transistor
    • N-well chứa PMOS được giữ ở điện áp dương nhờ well tap nối với +3.3V
  • Pentium được chế tạo trên quy trình 600nm, và bề rộng đường polysilicon cũng vào khoảng 600nm
    • Kích thước này tương đương bước sóng ánh sáng khả kiến 400~700nm nên ảnh chụp dưới kính hiển vi hơi mờ
  • Cổng NAND CMOS gồm 2 PMOS và 2 NMOS
    • Khi cả hai đầu vào đều cao, hai NMOS bật và kéo đầu ra xuống thấp
    • Nếu một trong hai đầu vào thấp, PMOS sẽ bật và kéo đầu ra lên cao
  • Trong standard cell NAND của Pentium, hai đường polysilicon cắt ngang silicon pha tạp để tạo ra bốn transistor
    • Ở phía PMOS, đầu ra đi ra từ giữa để tạo kết nối song song
    • Ở phía NMOS, đầu ra đi ra từ bên phải để tạo kết nối nối tiếp
  • Ngay cả cùng là một standard cell NAND, chi tiết đi dây và chiều dài polysilicon vẫn khác nhau tùy vị trí đầu vào, đầu ra và nguồn
    • Standard cell không phải là bản sao chép đơn giản mà được điều chỉnh theo từng vị trí
    • Các cell liền kề được ép sát để transistor PMOS chạm nhau, giúp tăng nhẹ mật độ

Cổng tổ hợp và latch

  • Thư viện standard cell không chỉ có cổng đơn giản mà còn có cả cổng tổ hợp
  • Cổng OR-NAND 5 đầu vào tính ~((A+B+C+D)⋅E)
    • Trong mạch NMOS, A~D mắc song song còn E mắc nối tiếp
    • Mạch PMOS thì ngược lại: A~D mắc nối tiếp còn E mắc song song
    • Để cung cấp đủ dòng, phía PMOS có hai bộ transistor A~D, nên lớn hơn nhiều so với khối NMOS
  • Latch là một trong những thành phần cốt lõi của mạch Pentium, là mạch lưu trữ 1 bit được điều khiển bởi clock
    • Khi clock ở mức cao, nó ở trạng thái trong suốt, nghĩa là đầu vào xuất hiện ngay ở đầu ra
    • Khi clock ở mức thấp, nó giữ lại giá trị trước đó
  • Latch được triển khai bằng một vòng phản hồi đưa đầu ra quay lại phía đầu vào
    • Ở trung tâm là một multiplexer chọn giữa đầu ra trước đó và đầu vào mới
    • Inverter khuếch đại tín hiệu phản hồi để nó không bị suy yếu, đồng thời giúp đầu ra có thể điều khiển mạch khác

Multiplexer dùng pass transistor

  • Multiplexer bên trong latch sử dụng pass transistor
    • Thay vì kéo đầu ra về nguồn hoặc mass như cổng logic thông thường, nó cho tín hiệu đầu vào đi xuyên qua đến đầu ra
  • Khi tín hiệu select ở mức thấp, cặp transistor nối với đầu vào thứ nhất sẽ bật còn đầu vào thứ hai bị chặn
  • Khi tín hiệu select ở mức cao, cặp transistor nối với đầu vào thứ hai sẽ bật còn đầu vào thứ nhất bị chặn
  • Cực tính gate của transistor trong multiplexer khác với cổng logic thông thường
    • Cổng logic dùng tín hiệu gate cùng cực tính để một trong hai NMOS hoặc PMOS bật và kéo đầu ra xuống thấp hoặc lên cao
    • Multiplexer cần PMOS và NMOS tương ứng cùng bật một lúc để cho tín hiệu đi qua, nên cần tín hiệu gate có cực tính ngược nhau
    • Vì vậy multiplexer có thêm inverter để tạo tín hiệu cực tính ngược cần thiết

Cách triển khai flip-flop

  • Pentium sử dụng flip-flop rất rộng rãi
  • Flip-flop giống latch nhưng phản ứng theo cạnh clock thay vì mức clock
    • Nó ghi nhớ đầu vào tại khoảnh khắc clock chuyển từ thấp sang cao
    • Và xuất giá trị đó ra đầu ra
  • Vì khác biệt này, flip-flop hữu ích hơn trong bộ đếm, state machine và các mạch đồng hồ khác
  • Flip-flop của Pentium được cấu thành từ hai latch
    • primary latch cho giá trị đi qua khi clock thấp và giữ giá trị khi clock cao
    • secondary latch có hành vi clock ngược lại
    • Khi clock chuyển từ thấp sang cao, primary latch ngừng cập nhật đúng lúc secondary latch bắt đầu cho giá trị đó đi qua
  • Một số biến thể có thêm đầu vào set hoặc reset bằng những thay đổi logic nhỏ
    • Set và reset bỏ qua clock để ép đầu ra về trạng thái mong muốn
    • Điều này hữu ích để khởi tạo flip-flop về giá trị cần thiết khi bộ xử lý khởi động

Bộ đệm BiCMOS và đặc trưng của Pentium thập niên 1990

  • Pentium không chỉ được làm bằng CMOS mà còn bằng BiCMOS
    • Quy trình chế tạo CMOS thông thường được bổ sung thêm vài bước để tạo transistor lưỡng cực NPN và PNP
  • Mạch BiCMOS được dùng rất rộng rãi trong Pentium và giúp giảm độ trễ tín hiệu tới 35%
  • Intel cũng dùng BiCMOS trên Pentium Pro, Pentium II, Pentium III và Xeon, nhưng không dùng trên Pentium MMX
  • Khi điện áp chip giảm xuống, lợi thế của transistor lưỡng cực cũng giảm theo, và cuối cùng BiCMOS không còn được dùng trong mạch số nữa
  • Bộ đệm BiCMOS standard cell của Pentium phức tạp hơn bộ đệm CMOS
    • 2 inverter
    • transistor pull-up NPN
    • transistor pull-down NMOS
    • transistor pull-up PMOS
  • Trong ảnh die, transistor NPN có cấu trúc tròn và lớn hơn nhiều, khác với cấu trúc tuyến tính của NMOS và PMOS
  • Dây kim loại đầu ra cũng dày hơn dây tín hiệu thông thường, cho thấy khả năng cấp dòng cao

Những khác biệt được xác nhận trên phiên bản P54C

  • Đối tượng được phân tích là phiên bản P54C của Pentium nguyên bản
  • Sản phẩm Pentium đầu tiên là 80501, tên mã P5, chạy ở 60 hoặc 66MHz, dùng 5V, quy trình 800nm và có 3,1 triệu transistor
  • Intel đã cải thiện vấn đề tiêu thụ điện năng và tạo ra 80502, tên mã P54C
    • Dùng 3.3V
    • Chạy ở 75~120MHz
    • Có thêm hỗ trợ multiprocessing nên số transistor tăng lên 3,3 triệu
    • Có mạch clock tiên tiến hơn, cho phép giữ bus ngoài ở 50~66MHz trong khi nâng clock nội bộ lên tới 100MHz
    • Dùng quy trình 600nm và 4 lớp kim loại
  • Die P54C gần như giống hệt P5 về mặt thị giác, nhưng có thêm logic multiprocessing ở phía dưới và mạch clock ở phía trên
  • Standard cell nhiều khả năng cũng tương tự trên các phiên bản Pentium nguyên bản khác

Các mạch đơn giản tạo nên bộ xử lý phức tạp

  • Layout standard cell vẫn được dùng rộng rãi trên các chip hiện đại
  • Bộ xử lý hiện đại quá nhỏ để nghiên cứu bằng kính hiển vi do transistor ở kích thước nanomet, nhưng Pentium vẫn đủ lớn để có thể quan sát mạch và reverse engineering
  • Toàn bộ thư viện standard cell của Pentium thực tế còn lớn hơn nhiều, bao gồm từ vài chục đến hàng trăm loại cell
    • Nhiều cổng logic khác nhau
    • Nhiều kích cỡ
    • Nhiều mức drive strength khác nhau
  • Việc Pentium dùng BiCMOS là một đặc trưng công nghệ từng đạt đỉnh phổ biến trong thập niên 1990
  • Dù BiCMOS đã kém thực tiễn hơn trong mạch số khi các đánh đổi thay đổi, nó vẫn giữ vai trò quan trọng trong IC analog, đặc biệt là các ứng dụng tần số cao
  • Khi nhìn kỹ Pentium, có thể thấy ngay cả một bộ xử lý phức tạp cũng được tạo nên từ tổ hợp các mạch transistor đơn giản

1 bình luận

 
GN⁺ 2024-07-09
Ý kiến trên Hacker News
  • Intel bắt đầu dùng kỹ thuật tự động placement & routing từ bộ xử lý 386, vì nó nhanh hơn nhiều so với layout thủ công và cũng giảm lỗi đáng kể
    Việc placement được thực hiện bằng một chương trình tên Timberwolf do nghiên cứu sinh Berkeley Carl Sechen phát triển, dưới sự hướng dẫn của giáo sư Alberto Sangiovanni-Vincentelli
    https://ieeexplore.ieee.org/document/1052337

    • Trong cuộc phỏng vấn các nhà thiết kế i386 của Computer History Museum cũng có nói đến phương pháp này, nhưng không nhắc tên Carl Sechen
      https://archive.computerhistory.org/resources/text/Oral_Hist...
      Họ nói rằng nội bộ Intel khi đó không có tự động placement hay tự động routing, nên lo không biết có kịp hoàn thành hay không và liệu diện tích chip có phình to đến mức không vừa hay không. Họ nhận từ một nghiên cứu sinh Berkeley chương trình tự động placement tên Timberwolf để đánh giá, thấy đủ dùng nên đã sử dụng
      Ngay cả sau khi sinh viên đó chuyển sang MIT vì dự án khác, anh vẫn để một terminal trong phòng ở campus và sửa mỗi khi có bug; đôi lúc họ bị kẹt và phải chờ đến khi anh sửa xong. Cũng có câu rằng: “Nếu ban quản lý biết chúng tôi đang dùng công cụ của một nghiên cứu sinh nào đó cho phương pháp luận cốt lõi thì chắc chắn họ đã không bao giờ cho phép”
      Right-o cũng có bài về placement & routing bằng standard cell của i386, kèm liên kết tới cuộc phỏng vấn dạng panel và đánh dấu cả các khu vực cụ thể trên die i386 nơi standard cell được dùng
      https://www.righto.com/2024/01/intel-386-standard-cells.html
  • Tôi hoàn toàn không thấy hình ảnh nào, nguyên nhân có vẻ là Cloudflare
    Khi vào trang, có thể vượt qua bước xác minh “are you human” của CF, nhưng mỗi lần tải từng ảnh cũng bị áp cùng xác minh đó, và màn hình xác minh ấy không hiển thị cho người dùng. Kết quả là thay vì ảnh, một trang HTML được trả về, nên ảnh không tải được

    • Vài ngày trước tôi cố kiểm tra một tệp trên VirusTotal, nhưng captcha kiểu “hãy chọn tất cả vòi cứu hỏa” cứ hiện ra với hiệu ứng fade chậm vô tận; sau khi bị từ chối 10 lần liên tiếp thì tôi bỏ cuộc
      Cảm giác như họ đã từ chối mình từ trước khi captcha xuất hiện rồi chỉ hành hạ cho vui. Điều lạ hơn nữa là VirusTotal hiển thị một form upload thứ hai trên trang captcha, nhưng bản thân form đó lại không có captcha
    • Tôi dùng uMatrix và cũng quen với bước “are you human” của Cloudflare, nhưng ở đây tôi không tái hiện được vấn đề đã mô tả
      Dashboard cũng không cho thấy Cloudflare có tham gia
  • Nếu “các bộ xử lý hiện đại quá nhỏ để quan sát bằng kính hiển vi vì transistor ở quy mô nanomet”, thì có lẽ chúng ta nên cùng gây quỹ mua cho Ken một chiếc kính hiển vi điện tử ổn chứ nhỉ

  • Với phần mềm EDA hiện đại, chẳng phải nó đã đủ tinh vi để tự bố trí transistor mà không cần dựa vào standard cell sao?

    • Tôi nghĩ là không. Thực tế, mức độ của phần mềm EDA mới nhất còn tệ hơn thế
      Tôi đã làm một dự án thiết kế và xây dựng phần mềm EDA tốt hơn; công cụ này có thể mô phỏng và tối ưu từng transistor để định hình và bố trí chúng nhằm đạt công suất thấp, tốc độ cao và chi phí thấp
      Nhược điểm là vì xử lý ở đơn vị transistor nhiều hơn rất nhiều so với EDA hiện có, nó phải chạy trên siêu máy tính nhỏ cỡ 100.000 USD hoặc cụm FPGA. Dù vậy, tôi cho rằng nó vẫn rẻ hơn EDA hiện có, và có thể tạo ra chip cùng wafer nhanh hơn, tốt hơn, rẻ hơn với ít transistor hơn
      Bức tranh tổng thể của phần mềm được đề cập gián tiếp trong bài thuyết trình này: https://vimeo.com/731037615
      Tôi cũng muốn trình bày về chính phần mềm EDA này, nên nếu được mời thì tốt
      Các nhà nghiên cứu và công ty khác cũng đã cho thấy có thể vượt ra ngoài thư viện standard cell và PDK để tối ưu thiết kế/bố trí transistor; ví dụ trường hợp này được làm bằng phần mềm EDA tự phát triển: https://www.micromagic.com/news/Ultra-Low-Power_PressRelease...
      Tôi rất tin rằng Apple đã dùng cách này trong M1, M2, M3, M4, M5, đặc biệt là các chip M2 cao cấp và M5 Ultra, nhưng không có bằng chứng chắc chắn
      Chỉ cần dùng phần mềm EDA tốt hơn những gì đang dùng hiện nay (CAD=> SYM=> FAB), tôi nghĩ nhân loại có thể thiết kế chip máy tính nhanh hơn 3–4 bậc độ lớn và chế tạo chip rẻ hơn nhiều với năng lượng ít hơn ít nhất 2 bậc độ lớn. Định luật Moore chưa kết thúc, và để chứng minh điều đó cần nhiều nỗ lực hơn một bình luận HN
    • Như bài viết cũng nói, việc tạo layout tối ưu là một bài toán tối ưu hóa mà bài toán quyết định liên quan là NP-complete
      Ngay cả placement standard cell cũng phải giải bằng heuristic; nếu đi từ cấp cell xuống cấp transistor thì kích thước bài toán tăng lên và càng tệ hơn
      Dù sao logic cũng được cấu thành từ các cổng tiêu chuẩn và khối logic như flip-flop, nên overhead của việc dùng standard cell triển khai các building block như vậy có khả năng không lớn lắm
    • Nhìn từ góc khác, năng lực tính toán mà phần mềm EDA có thể sử dụng cũng đã tăng với tốc độ xấp xỉ số transistor trên die
      Vì vậy, độ phức tạp của bài toán so với năng lực tính toán sẵn có được duy trì phần nào ổn định, và thiết kế standard cell vẫn là một cách hiệu quả để giảm độ phức tạp của bài toán mà công cụ EDA phải giải
    • Tất cả công cụ dùng trong các quy trình công nghiệp thế hệ gần đây, 40–12nm, đều sử dụng rộng rãi thư viện standard cell do foundry cung cấp
      Tôi không nghĩ điều này sẽ thay đổi ở thế hệ hiện tại hay thế hệ tiếp theo. Tôi đang làm trong lĩnh vực EDA
    • Tôi hiểu đây không phải là vấn đề phần mềm, mà là vì foundry chỉ cho dùng các block đã được xác minh quy trình
      Nếu không, yield có thể không ổn định hoặc trở nên tùy tiện
  • Một điểm khác biệt giữa standard cell được nói đến trong bài và standard cell hiện nay là bây giờ số lớp kim loại đã nhiều hơn, nên kênh đi dây đã biến mất
    Vào thời đó, rất khó để cho kim loại cắt ngang các đường Vdd và ground ở phía trên và dưới của cell, nên người ta kéo dài các đường polysilicon tới tận mép trên và mép dưới. Việc đi dây được thực hiện bằng cách nối poly vào trong kênh rồi dùng kim loại để kết nối các cell với nhau
    Vì vậy trong ảnh, các đường poly đã bị lộ ra trông như một khối liền, nhưng từ góc nhìn thiết kế thì phần bên trong cell là chuẩn, còn phần trong kênh là tùy chỉnh
    Cách này vẫn hoạt động chỉ với poly và lớp kim loại 1, nhưng nếu có đủ lớp kim loại thì có thể cho dây đi xuyên qua bên trong cell. Tuy nhiên cần tránh các via đưa input và output xuống transistor
    Nếu lật cách hàng của cell, PMOS của hai hàng sẽ chồng lên rail Vdd, còn NMOS của hai hàng sẽ chồng lên rail ground, mang lại thêm một lợi ích nữa

  • Việc mổ xẻ processor theo kiểu này có thể là một hoạt động giáo dục thú vị ở trường, giống như mổ ếch
    Ưu điểm là không có vấn đề về quyền động vật

    • Cá nhân tôi nghĩ ai cũng nên thử mở một con chip ít nhất một lần
      Nếu không phải là chip phủ epoxy thì không khó, và nhìn vào bên trong cũng rất thú vị. Muốn xem chi tiết thì cần kính hiển vi kim tương, nhưng ngay cả bằng mắt thường cũng có thể thấy những cấu trúc thú vị
    • Decap processor tạo ra chất thải độc hại, và phải xử lý chúng
      Processor nếu được xử lý đúng cách sẽ dùng được lâu hơn ếch rất nhiều, và về cơ bản không bị hao mòn nên có thể tái sử dụng nhiều lần. Tôi cho rằng quá trình sản xuất một processor mới có thể gây đau đớn lớn hơn cho nhiều con ếch hơn so với việc giết một con ếch để mổ
      Hơn nữa giờ đây trong túi chúng ta đã có thiết bị phát video. Tự tay mổ một con ếch có thể mang tính giáo dục hơn xem người khác mổ, nhưng tôi nghi ngờ liệu nó có giáo dục hơn việc xem 20 video mổ xẻ được thuyết minh tốt hay không. Tôi nghĩ không nhất thiết phải làm cả hai
  • Cũng có standard cell mã nguồn mở dành cho những người quan tâm
    https://www.vlsitechnology.org/html/libraries.html
    https://opensource.googleblog.com/2022/07/SkyWater-and-Googl...