Bài viết trình bày các phương pháp kỹ thuật thiết kế vi mạch số công suất thấp như clock gating, multi-threshold, multi-voltage để tối ưu hóa công suất trên vi mạch số, cụ thể là CPU 16-bit để đạt công suất thấp dùng công nghệ CMOS 90nm. Các phương pháp được đánh giá và so sánh để giúp người thiết kế lựa chọn các kỹ thuật tối ưu nhất phù hợp với thiết kế vi mạch số công suất thấp.
Trang 1Xây dựng chương trình thiết kế vi mạch số P&R tự
động công suất thấp
Trần Ngọc Châu, Thái Hồng Hải, Lê Châu Bảo Ngọc, Mã Khải Minh, Đậu Minh Đức, Lê Đức Hùng
Phòng thí nghiệm DESLAB, Khoa Điện tử - Viễn Thông, Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia TP.HCM
Email: ldhung@hcmus.edu.vn
Abstract— Trong bài báo này, nhóm tác giả thực hiện các phương
pháp kỹ thuật thiết kế vi mạch số công suất thấp như clock
gating, multi-threshold, multi-voltage để tối ưu hóa công suất
trên vi mạch số, cụ thể là CPU 16-bit để đạt công suất thấp dùng
công nghệ CMOS 90nm Các phương pháp được đánh giá và so
sánh để giúp người thiết kế lựa chọn các kỹ thuật tối ưu nhất phù
hợp với thiết kế vi mạch số công suất thấp
Keywords- vi mạch số, công suất thấp, clock gating,
multi-threshold, multi-voltage
I GIỚITHIỆU Công nghệ vi mạch đang phát triển mạnh mẽ, kích thước
transistor ngày càng được thu nhỏ Cùng với số lượng ứng
dụng ngày một đa dạng hơn, nhu cầu thiết kế mạch tích hợp
ngày càng tăng cao, dẫn đến yêu cầu thời gian thiết kế cần
được rút ngắn do đó cần có một quy trình thiết kế Backend
hoàn thiện, hạn chế được tối đa lỗi có thể xảy ra trong quá
trình thiết kế Bên cạnh đó, năng lượng cũng là vấn đề được
quan tâm rất nhiều hiện nay, một thiết kế tốt cũng cần đảm bảo
được lượng năng lượng tiêu hao là thấp nhất, do đó thiết kế
công suất thấp là điều cần được đảm bảo trong quy trình thiết
kế Mục tiêu của chúng tôi trong nghiên cứu là tìm hiểu quy
trình và các kĩ thuật thiết kế vi mạch số công suất thấp, tự thiết
kế các script chạy Place & Route (P&R) tự động, và áp dụng
vào thiết kế thực tế, sử dụng các công cụ thiết kế tự động của
hãng Synopsys như: Design Compiler và IC Compiler
Phần còn lại của bài báo được tổ chức như sau: trong phần
II, chúng tôi mô tả về các phương pháp thiết kế công suất thấp
Trong phần III, chúng tôi trình bày về quy trình thiết kế P&R
công suất thấp Phần IV cung cấp các kết quả thực hiện và phân
tích lý thuyết Cuối cùng, chúng tôi kết luận bài báo trong phần
V
THẤP Phần này mô tả một số phương pháp tiếp cận để thiết kế
đạt được công suất thấp [1-2]
II.1 Clock gating
Clock gating là một phương pháp giảm công suất động,
trong đó các tín hiệu clock được tắt khi không cần thiết bởi sự
lựa chọn các băng thanh ghi trong thời gian khi các giá trị
logic được lưu trữ không thay đổi
Các công cụ thiết kế hiện đại hỗ trợ tự động clock gating:
ta có thể xác định các mạch nơi clock gating có thể được chèn
mà không thay đổi chức năng của logic Hình 1 cho thấy cách hoạt động này
Clock gating đặc biệt hữu ích cho các thanh ghi cần duy trì các giá trị logic giống nhau qua nhiều chu kỳ clock Tắt các clock để loại bỏ hoạt động chuyển đổi không cần thiết ngược lại sẽ xảy ra tải lại (reload) của các thanh ghi trên mỗi chu kỳ clock Những thách thức chính của clock gating là tìm những nơi tốt nhất để sử dụng nó và tạo ra logic để tắt và mở clock vào thời điểm thích hợp
Hình 1 Ví dụ clock gating
Clock gating là một kỹ thuật tiết kiệm năng lượng đã được
sử dụng trong nhiều năm Các công cụ tổng hợp như Power Compiler có thể phát hiện đường dữ liệu thông lượng thấp ở clock gating có thể được sử dụng với lợi ích lớn nhất, và có thể tự động chèn các cells clock gating trong các đường clock tại các địa điểm thích hợp Clock gating là tương đối đơn giản
để thực hiện bởi vì nó chỉ yêu cầu một sự thay đổi trong netlist
II.2 Multi-threshold
Khi kích thước hình học CMOS bị thu hẹp 90nm trở xuống, sử dụng các thư viện có nhiều VT (multi-threshold) đã trở thành một cách phổ biến để giảm công suất rỉ
Nhiều thư viện ngày nay cung cấp hai hoặc ba phiên bản của các cells: thế ngưỡng thấp (Low VT), thế ngưỡng chuẩn (Normal VT), và thế ngưỡng cao (High VT) Các công cụ thực hiện có thể tận dụng các thư viện này để tối ưu hóa timing và công suất đồng thời Thư viện có thể cung cấp hai hoặc nhiều cells khác nhau để thực hiện mỗi chức năng logic ứng với sử dụng một ngưỡng điện áp khác nhau Một cell có điện thế
Trang 2ngưỡng thấp sẽ có tốc độ cao hơn, nhưng dòng rò rỉ dưới
ngưỡng cao hơn Một cell có điện thế ngưỡng cao sẽ có dòng
rò rỉ thấp, nhưng tốc độ chậm hơn Công cụ tổng hợp có thể
chọn kiểu thích hợp của cell để sử dụng dựa trên sự cân bằng
giữa tốc độ và công suất Ví dụ, nó có thể sử dụng cell thế
ngưỡng thấp để có tốc độ cao trong các con đường quan trọng
timing (critical paths) và các cell thế ngưỡng cao ở mọi nơi
khác để có công suất rò rỉ thấp hơn
II.3 Multi-voltage
Các bộ phận khác nhau của một con chip có thể có các
yêu cầu tốc độ khác nhau Ví dụ, khối CPU và RAM có thể
cần phải được nhanh hơn so với một khối ngoại vi Như đã đề
cập ở trên, điện áp cung cấp giảm thì công suất tiêu thụ giảm
và làm giảm tốc độ Để có được tốc độ tối đa và công suất thấp
cùng một lúc, CPU và RAM có thể hoạt động với nguồn điện
áp cung cấp cao hơn trong khi khối ngoại vi hoạt động với một
điện áp thấp hơn, như thể hiện trong Hình 2
Hình 2 Thiết kế chip đa điện thế
Cung cấp hai hoặc nhiều điện áp cung cấp trên một con
chip sẽ tăng độ phức tạp cho thiết kế - không chỉ làm các con
chip phải thêm chân IO để cung cấp các power rail khác nhau,
mà cũng cần một lưới điện (power grid) phức tạp hơn phân
phối từng nguồn điện áp riêng cho các khối thích hợp và các
dịch mức điện áp (level shifters) trên tín hiệu truyền giữa các
khối
Trường hợp một tín hiệu logic rời khỏi một miền điện và
đi vào một miền điện khác, nếu điện áp hai miền điện là khác
biệt đáng kể, một cell level-shifter là cần thiết để tạo ra một tín
hiệu với biên độ điện thế (voltage swing) thích hợp Trong ví
dụ thể hiện trong Hình 3, một level shifer cell sẽ chuyển đổi
một tín hiệu với swing 1,8V đến một tín hiệu với swing 1,0V
Một level shifter đòi hỏi hai nguồn cung cấp điện phù hợp với
điện áp cung cấp đầu vào và đầu ra
Hình 3 Level shifter cell
Do đó, mỗi thành phần chính của hệ thống sẽ hoạt động ở điện áp thích hợp để thỏa tốc độ và công suất hệ thống Phương pháp này có thể tiết kiệm đáng kể công suất
II.4 Power Gating
Để giảm tổng công suất rò rỉ của chip, cần thêm các cơ chế để tắt các khối trong thời gian không hoạt động Kỹ thuật này được gọi là Power gating [3] Ví dụ, trong một chip điện thoại di động, khối đó thực hiện xử lý giọng nói có thể được tắt khi điện thoại ở chế độ chờ Khi mà người dùng thực hiện một cuộc gọi hoặc nhận cuộc gọi, khối xử lý giọng nói phải
"thức tỉnh" từ trạng thái tắt nguồn
Power gating có những thách thức bao gồm sự cần thiết của một bộ điều khiển điện (power controller), một mạng chuyển mạch điện (power-switch network), thanh ghi cô lập điện thế và lưu trữ logic (Isolation and retention registers)
Bộ điều khiển điện (power controller) là một khối logic xác định thời điểm tắt nguồn và bật nguồn một khối cụ thể Cần xác định một khoảng thời gian cho việc tắt nguồn và bật nguồn thích hợp lên một khối với độ chính xác cao Khi chuyển bật (On), sẽ tạo sự kết nối nguồn điện với đến các cổng logic trong khối Khi chuyển tắt (Off), nguồn điện bị ngắt kết nối khỏi cổng logic trong khối
Transistor điện thế ngưỡng cao từ công nghệ CMOS nhiều ngưỡng (MTCMOS) được sử dụng cho các thành phần chuyển mạch điện (power switch) vì chúng giảm dòng rò rỉ và tốc độ chuyển đổi của chúng không quan trọng PMOS header switches được đặt ở giữa VDD và chân Gated VDD cho khối logic NMOS footer switches được đặt ở giữa VSS và Gated VSS của khối logic, được thể hiện trong Hình 4
Hình 4 Transistor chuyển trạng thái điện
III XÂYDỰNGQUYTRÌNHTHIẾTKẾP&RCÔNG
Quy trình được xây dựng với các ngôn ngữ lập trình được dùng trong thiết kế vi mạch là:
Makefile: dùng để điều khiển, biên dịch và liên kết một chương trình
Tcl: Nó được thiết kế với mục tiêu rất đơn giản nhưng hiệu quả, Tcl được sử dụng trong các công cụ thiết kế vi mạch tự động
Perl: Cung cấp các cơ chế xử lý văn bản mạnh mẽ và phổ biến trong Unix/Linux
Trang 3Quy trình P&R vi mạch số công suất thấp được đề xuất
phát triển gồm 2 phần: tổng hợp mạch (Synthesis) ứng với
Hình 5 và đi dây (Place & Route) ứng với Hình 6
Hình 5 Quy trình tổng hợp mạch công suất thấp
Hình 6 Quy trình P&R mạch công suất thấp
Trên thực tế, trong quá trình thiết kế việc quy trình xuất ra
các kết quả cũng như báo cáo xảy ra thường xuyên và liên tục
rất khó quản lý và theo dõi Để giải quyết vấn đề trên, ta cần
xây dựng hệ thống thư mục để giúp ta có thể dễ dàng quản lý
được nơi dữ liệu sẽ được chứa và nơi báo cáo được tạo ra,
nhằm tạo sự thuận tiện cho việc truy xuất dữ liệu về sau Như
trong Hình 7, ta thấy thư mục được tạo ra và phân cấp bao
gồm:
/risc: Đây là mục chứa các bước làm việc của quy trình
/design: Bên trong thư mục này chứa các dữ liệu đầu vào
của thiết kế
/synthesis: Bên trong thư mục này sẽ chứa các tập tin khi
thực hiện bước Synthesis của các module trong thiết kế
/icc: Bên trong thư mục này là nơi chúng ta thực hiện
P&R (Place & Route) các module
/pt: Bên trong thư mục này là nơi ta thực hiện phân tích
thời gian tĩnh và công suất của thiết kế
/template: Trong thư mục này chứa các tập tin mẫu làm
ví dụ
Hình 7 Tổng quan thư mục quy trình
Như trong Hình 8 và Hình 9 ta thấy thư mục được tạo ra
và phân cấp trong quá trình tổng hợp mạch và Place & Route
Hình 8 Tổng quan thư mục tổng hợp mạch
Hình 9 Tổng quan thư mục Place & Route
III.1 Quy trình Synthesis
- Ở đây các script sẽ được dùng để thực hiện tổng hợp mạch trong mục synthesis của Hình 8:
Risc/synthesis/Makefile: Tập tin này sẽ có các mục tiêu (target) để thực hiện như: xóa file, tổng hợp với sự tùy chọn có hoặc không có các phương pháp công suất thấp đồng thời xuất tập tin floorplan, cấu trúc lưới điện (.strap) và pin cho bước backend, sao lưu lại các script Risc/template/synthesis/TEMPLATE_tcl: tập tin mẫu này dùng để tổng hợp mạch không có các phương pháp công suất thấp
Trang 4Risc/template/synthesis/TEMPLATE_upf_tcl: tập tin
mẫu này dùng để tổng hợp mạch với sự tùy chọn các
phương pháp công suất thấp với tập lệnh UPF hỗ trợ kỹ
thuật công suất thấp của Synopsys [4-6]
Risc/design/rtl/: Thư mục này chứa tập tin Verilog của
thiết kế
Risc/design/synthesis: Thư mục này chứa tập tin ràng
buộc thiết kế (.sdc), định nghĩa miền điện (.upf), định
nghĩa điện thế cung cấp cho thiết kế (.tcl), ràng buộc
chân IO cho thiết kế (.pin), đếm các cell trong thiết kế
(.tcl)
- Tổng hợp mạch với sự lựa chọn các phương pháp công
suất thấp, các mục tiêu (target) có ký hiệu % sẽ được thay
thế bằng tên thiết kế:
tcl_upf/%.tcl: mục tiêu này dùng tạo tập tin (.tcl) chứa
các lệnh cho quá trình tổng hợp mạch với sự lựa chọn
các phương pháp công suất thấp bằng cách cung cấp tập
tin mẫu (TEMPLATE_upf.tcl) kết hợp với sed để thay
thế các biến trong TEMPLATE_upf.tcl
%_upf_net.v: mục tiêu này phụ thuộc vào mục tiêu
tcl_upf/%.tcl và được dùng để tổng hợp mạch bằng
cách cung cấp tập tin verilog (.v) và tập tin ràng buộc
(.sdc)
%_syn_upf.fp: mục tiêu này phụ thuộc vào mục tiêu
%_net.v và được dùng để tạo floorplan, cấu trúc lưới
điện (.strap) bằng cách cung cấp tập tin createfpicc.pl,
tập tin diện tích của mạch sau khi tổng hợp, biến fill,
-arealog
%_pin.tcl: mục tiêu này để tạo ra tập tin định nghĩa
chân của thiết kế và được dùng cho quy trình P&R
- Sau khi chạy Makefile bởi lệnh make clean, ta thực hiện
lệnh sau:
make TenThietKe_syn_upf.fp opt=clkgating|mvt|mvd|all
- Lệnh này sẽ tổng hợp mạch dựa trên quy trình được thể
hiện ở Hình 5, với các lựa chọn phương pháp như:
clkgating (clock gating), mvt (multi-threshold), mvd
(multi-voltage), all (kết hợp các phương pháp trên) và
xuất ra các tập tin như: netlist, sdc, sdf, ddc, upf Sau khi
tổng hợp xong đồng thời sẽ tạo tập tin floorplan (.fp), cấu
trúc lưới điện (.strap) Tất cả các tập tin sau khi thực hiện
sẽ được lưu tại thư mục ứng với từng phương pháp
./output/output_“opt” Thư mục /report/report_“opt” sẽ
chứa các tập tin về diện tích, timing, công suất, chất lượng
của thiết kế (qor), cell của thiết kế, miền điện thế, level
shifter,
III.2 Quy trình P&R với các phương pháp công suất thấp:
- Script Makefile trong thư mục icc của Hình 9 thực hiện
quy trình P&R dựa trên quy trình được thể hiện ở Hình 6
Đây là các script sẽ được dùng để thực hiện P&R trong
mục icc của Hình 9:
Risc/icc/Makefile: Tập tin này sẽ có các mục tiêu
(target) để thực hiện như: xóa file, thực hiện P&R với
sự tùy chọn có hoặc không có các phương pháp công suất thấp
Risc/template/icc/TEMPLATE_tcl: tập tin mẫu này dùng để thực hiện P&R mà không có các phương pháp công suất thấp
Risc/template/icc/TEMPLATE_upf_tcl: tập tin mẫu này dùng để thực hiện P&R với sự tùy chọn các phương pháp công suất thấp
Risc/synthesis/output/output_“opt”: Thư mục này chứa tập tin đầu vào cho quy trình P&R của thiết kế
TenThietKe/design/icc: thư mục này chứa các tập tin mẫu như: tạo khu vực điện thế, tạo lưới điện rail cho các cell chuẩn, thiết lập đặc tính thư viện Những tập tin này có thể chỉnh sửa để phù hợp với từng thiết kế
- Sau đây là các bước trong quá trình thực hiện P&R với các phương pháp công suất thấp, các mục tiêu (target) có
ký hiệu % sẽ được thay thế bằng tên thiết kế:
tcl_upf/%.tcl: mục tiêu này dùng để tạo tập tin (.tcl) chứa các lệnh cho quá trình thực hiện PNR công suất thấp bằng cách cung cấp tập tin mẫu (TEMPLATE_upf)
kết hợp với sed để thay thế các biến trong
TEMPLATE_upf
%_upf.str: mục tiêu này phụ thuộc vào mục tiêu tcl_upf/%.tcl dùng để thực hiện P&R công suất thấp
- Sau khi chạy Makefile bởi lệnh make clean, ta thực hiện lệnh sau: make TenThietKe_upf.str:
Lệnh này sẽ thực hiện quy trình P&R được thể hiện ở Hình 6 với các tập tin đầu vào ở thư mục: TenThietKe/synthesis/output/output_normal và tập tin mẫu TenThietKe/design/icc
Phương pháp thiết kế công suất thấp được áp dụng với 2 thiết kế là CPU 16-bit theo kiến trúc RISC và DSP 16-bit dấu chấm cố định, được thực hiện trên công nghệ 90nm, điều kiện hoạt động worst, tần số hoạt động: 200MHz
Hình 10 là kết quả sau khi chạy script tổng hợp mạch:
Hình 10 Kết quả sau khi tổng hợp mạch của CPU 16-bit
Trang 5Bảng 1 sẽ thể hiện kết quả so sánh đạt được sau khi thực
hiện tổng hợp mạch điện với phương pháp thông thường
(phương pháp chưa áp dụng các phương pháp công suất thấp),
phương pháp công suất thấp như clock gating, đa thế ngưỡng
(multi-threshold), đa nguồn cung cấp (multi-voltage), và kết
hợp 3 phương pháp công suất thấp ở trên
Bảng 1 So sánh kết quả trên CPU 16-bit sau khi tổng hợp
phương pháp công suất thấp tại tần số 200MHz
Phương pháp
tổng hợp
Diện tích(µm2)
Slack(ps) Công suất(µW)
Hình 11 So sánh kết quả công suất sau tổng hợp
Theo kết quả của Bảng 1 và Hình 11, bằng cách áp dụng
các phương pháp kỹ thuật công suất thấp ở tần số 200MHz,
công suất của mạch giảm rõ rệt, với phương pháp clock gating
giảm 59,18%; với phương pháp multi-voltage giảm 34,12%;
với phương pháp multi-threshold giảm 22,41%; và với việc kết
hợp các phương pháp này giảm được 45,51% so với phương
pháp thông thường Riêng phương pháp power gating được
thực hiện nhưng không giảm được nhiều công suất (kết quả
đạt được là 229,203 W) do thư viện công nghệ chưa hỗ trợ
nên không đưa vào trong kết quả Bảng 1
Bảng 2 So sánh kết quả trên DSP 16-bit sau khi tổng hợp
phương pháp công suất thấp tại tần số 100MHz
Phương pháp
tổng hợp
Diện tích(µm2
)
Slack(ps) Công suất(µW)
(*) : F = 83MHz
Tiếp theo việc tổng hợp mạch công suất thấp trên DSP 16-bit được thực hiện trên công nghệ 90nm Kết quả ở Bảng 2 cho thấy công suất của mạch DSP 16-bit cũng giảm với việc kết hợp các phương pháp kỹ thuật công suất thấp, cụ thể giảm được 36,67% ở tần số 100MHz so với quy trình thông thường chưa áp dụng các phương pháp công suất thấp
Sau khi thực hiện tổng hợp mạch, quy trình thiết kế back-end tiếp tục được thực hiện với các bước P&R công suất thấp Hình 12 và Hình 13 thể hiện kết quả sau khi chạy P&R:
Hình 12 Kết quả Clock Tree Synthesis của CPU 16-bit
Hình 13 Kết quả sau khi placement của CPU 16-bit
Trang 6Hình 14 Layout của mạch sau khi đặt filler cell và chạy routing của
CPU 16-bit
Bảng 3 So sánh kết quả P&R trên CPU 16-bit giữa phương
pháp thông thường và kết hợp các phương pháp thiết kế công
suất thấp
Phương
pháp P&R tích(µm Diện 2 ) Setup
slack(ns) slack(ns) Hold suất(µW) Công
Thông
Bảng 4 So sánh kết quả P&R trên DSP 16-bit giữa phương
pháp thông thường và kết hợp các phương pháp thiết kế công
suất thấp
Phương
pháp P&R tích(µm Diện 2 ) Setup
slack(ns) slack(ns) Hold suất(µW) Công
Thông
470,6 (100%)
Bảng 3, Bảng 4 và Hình 15 thể hiện kết quả thực hiện P&R
giữa quy trình không có các phương pháp công suất thấp (quy
trình thông thường) và các phương pháp công suất thấp như
clock gating, power gating, multi-threshold, multi-voltage, cũng như kết hợp tất cả phương pháp công suất thấp trên CPU 16-bit và DSP 16-bit Kết quả cho thấy công suất sau khi thực hiện P&R với kỹ thuật công suất thấp giúp giảm 30,76% so với kỹ thuật thông thường với mạch CPU 16-bit và giảm 39,3% với mạch DSP 16-bit
Hình 15 So sánh kết quả công suất sau P&R dùng phương pháp thông thường và công suất thấp trên CPU 16-bit và DSP 16-bit
Nhóm tác giả đã nghiên cứu và tự xây dựng các script tự động thực thi quá trình tổng hợp mạch và P&R vi mạch số công suất thấp trên công nghệ CMOS 90nm Việc tự phát triển các script này giúp cho các nhà thiết kế vi mạch Việt Nam làm chủ quy trình thiết kế, tránh phụ thuộc các hãng nước ngoài Với việc tự xây dựng quy trình quy trình thiết kế vi mạch số công suất thấp và thực hiện các phương pháp công suất thấp như clock gating, power gating, multi-threshold, multi-voltage, chúng ta có thể nhận thấy rằng bằng cách áp dụng các phương pháp công suất thấp dù riêng rẽ hay kết hợp đều cho công suất tiêu thụ giảm đáng kể so với việc thiết kế thông thường
[1] Rakesh Chadha, J.Bhasker, “An ASIC Low Power Primer Analysis, Techniques and Specification”, Springer, pp 139-146, 2013
[2] Michael Keating, David Flynn, Robert Aitken, Alan Gibbons, Kaijian Shi, “Low Power Methodology Manual for System-on-Chip Design”, Springer, pp 13-22, 2007
[3] Luís Miguel Granja Gomes, “Power reduction of a CMOS high-speed interface using power gating”, Luís Gomes, pp 23-35, Jun 2013 [4] Petri Solanti, “Low Power System-on-Chip Design”, Synopsys, pp
22-65, Jan 2009
[5] “Low-Power Flow User Guide”, Synopsys, Version D-2010.03, pp
46-67, March 2010
[6] Archana Varanasi, “Course Grained Low Power Design Flow Using UPF”, pp 39-42, Jan 2009