Tải bản đầy đủ (.docx) (26 trang)

các phương pháp synthesis và optimize

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 26 trang )

I.Các phương pháp Synthesis và Optimize.
1.1Quá trình Synthesis.
Synthesis logic ( Tổng hợp Logic) là quá trình chuyển đổi mô tả cấp cao
( high-level description ) sang mô tả tối ưu hóa cấp cổng, dựa vào RTL Coding
đã được viết, thư viện Standard Cell và các ràng buộc của thiết kế ( Design
Constraints ) để tạo ra Gate-level Netlist.
Hình1 .Synthesis Flow
Các bước trong qui trình Synthesis:
- Design Compiler (DC) đọc các thư viện kỹ thuật, thư viện DesignWare, thư
viện kí hiệu để thực hiện tổng hợp.
Trong quá trình tổng hợp, DC dịch RTL description sang thành phần rút ra từ
thư viện công nghệ và thư viện Design Ware .Thư viện kỹ thuật bao gồm các
cổng logic cơ bản và các flip flop. Thư viện DesignWare gồm các khối phức
tạp như adders, comparators, có thể sử dụng lại trong các thiết kế khác. DC có
thể tự động xác định khi sử dụng các khối trong thư viện Design Ware và nó
có tổng hợp một cách hiệu quả các thành phần này trong gate-level
implementations.
- Đọc các mô tả phần cứng RTL viết bằng hoặc Verilog / VHDL.
- Công cụ tổng hợp sẽ thực hiện nhiều bước bao gồm tối ưu hóa high-level RTL,
RTL to unoptimized Boolean logic, tối ưu hóa công nghệ độc lập, và cuối
cùng lập bản đồ công nghệ cho các standard cells có sẵn trong thư viện kỹ
thuật, được gọi là thư viện đích. Kết quả là gate-netlist cũng phụ thuộc vào
những ràng buộc đã đưa vào.
- Sau khi thiết kế được tối ưu hóa, thiết kế đã sẵn sàng cho giai đoạn DFT
( Design for test ). DFT là một bài test logic, người thiết kế có thể tích hợp
DFT trong quá trình Synthesis. Điều này có thể giúp người thiết kế có thể kiểm
tra sớm các vấn đề trong chu trình thiết kế, và cũng có thể sử dụng trong quá
trình gỡ lỗi khi chip bị trả về từ giai đoạn chế tạo.
- Sau khi đã test synthesis, chip đã sẵn sàng cho giai đoạn place và route. Các
công cụ place và route đặt vị trí và liên kết vật lý các cells trong thiết kế. Dựa
vào việc đi dây vật lý, người thiết kế có thể chú thích lại cho thiết kế các delay


thực tế. Chúng ta có thể sử dụng DC một lần nữa để resynthesis thiết kế để
phân tích thời gian chính xác hơn.
1.2.Thiết đặt các điều kiện môi trường và ràng buộc cho thiết kế.
1.2.1. Thiết đặt điều kiện môi trường.
Trước khi tối ưu hóa thiết kế, người thiết kế phải đặt các điều kiện môi
trường mong muốn thiết kế có thể hoạt động được. Ta định nghĩa môi trường
thông qua 2 thông số chính:Operating Conditions, Wire Load Model.
1.2.1.1. Operating Conditions ( Những điều kiện hoạt động)
Operating Conditions bao gồm sự thay đổi về nhiệt độ, điện áp, quá trình
hoạt động. Những sự thay đổi này ảnh hưởng mạnh đến hoạt động của mạch. Khi
phân tích về mặt thời gian, Design Compiler sẽ xem xét điều kiện xấu nhất
( worst-case ) và điều kiện tốt nhất ( best-case ) về nhiệt độ, điện áp… mà thiết kế
vẫn có thể hoạt động tốt được.
Hầu hết các thư viện kỹ thuật đã định nghĩa trước tập hợp các thông số
Operating Conditions, người thiết kế có thể chọn giá trị có sẵn trong thư viện hay
tự định nghĩa. Nếu người thiết kế không chỉ ra Design Compiler sẽ chọn giá trị
mặc định.
1.2.1.2. Wire Load Model ( Mô hình dây tải).
Cho phép người thiết kế ước lượng được ảnh hưởng của điện trở, điện dung,
khả năng chịu tải nhất định tương ứng với độ dài một đoạn dây. Từ đó phần mềm
sẽ tính toán độ trì hoãn qua các dây. Người thiết kế phải chỉ ra cho phần mềm biết
sử dụng loại dây nào, độ dài bao nhiêu cho các thiết kế thông qua các câu lệnh để
thiết lập giá trị.
Nếu người thiết kế không chỉ ra sử dụng Wire Load Model nào thì Design
Compiler sẽ sử dụng Wire Load Model mặc định nhưng chắc chắn thông tin về
timing và delay sẽ không chính xác như mong muốn.
Design Compiler hỗ trợ ba cách trong cấu trúc phân cấp :
• Mode Top:
Wire Load Model ở Top Level sẽ được áp dụng trên tất cả các sub-module.
Design Compiler sẽ bỏ qua tất cả các Wire Load Model của các sub-module.

Sử dụng Wire Load Model ở mode top tương ứng với việc thiết kế sẽ được
Flatten toàn bộ khi Place and Route.
Hình2 .Mode Top.
Nếu thiết đặt Wire Load Model cho thiết kế là mode Top thì việc ước lượng
độ dài dây là không chính xác. Sử dụng độ dài dây là lớn nhất cho tất cả các sub
block thì sẽ gây ra sai số lớn sau khi thiết kế được Place and Route.
• Mode Enclosed:
Wire Load Model chạy giữa hai module sẽ được áp đặt theo Wire Load
Model chứa cả hai module đó.
Sử dụng Wire Load Model ở mode enclosed sẽ chính xác hơn ở mode top khi
những Cell trong cùng một thiết kế được đặt ở những vùng tiếp giáp nhau trong
suốt quá trình Layout.
Wire Load Model ở mode enclosed vẫn giữ cấu trúc phân cấp.
Hình 3.Mode Enclosed.
• Mode Segmented:
Wire Load Model ở mode segmented thì một dây kết nối giữa hai module sẽ
được chia thành nhiều đoạn, đoạn nào nằm trong module nào thì sẽ sử dụng Wire
Load Model ở module đó.
Wire Load Model ở mode segmented vẫn giữ cấu trúc phân cấp.
Hình 4. Mode Segmented.
Thiết đặt Wire Load Model theo mode Segmented thì việc ước lượng độ dài
sẽ chính xác hơn vì dây trong sub block nào thì sử dụng Wire Load Model trong
sub block đó nên ít gây ra sai số sau khi thiết kế được Place and Route.
Thông thường thư viện kỹ thuật có thể định nghĩa Wire Load Model mặc
định cho thiết kế, sử dụng thuộc tính default_wire_load để định nghĩa Wire Load
Model mặc định cho thư viện kỹ thuật.
Một số thư viện hỗ trợ việc chọn Wire Load Model tự động dựa trên diện
tích Cell. Design Compiler sử dụng thuộc tính wire_load_selection của thư viện
để chọn Wire Load Model dựa trên tổng diện tích các Cell.
Với những thiết kế lớn có nhiều cấu trúc phân cấp thì việc để cho thư viện tự

chọn Wire Load Model tự động là không tối ưu về mặt timing và delay. Người
thiết kế nên thiết đặt các giá trị Wire Load Model bằng các câu lệnh tương tác trực
tiếp với Design Compiler để đảm bảo tính chính xác và ổn định về mặt timing và
delay. Người thiết kế có thể tắt chức năng tự chọn Wire Load Model bằng cách
gán cho thuộc tính auto_wire_load_selection giá trị false.
1.2.2 Những ràng buộc cơ bản trong quá trình thiết kế logic chip.
1.2.2.1Ràng buộc luật thiết kế ( Design Rule Contrains).
 Thời gian chuyển tối đa (Maximum transition time).
Thời gian chuyển tối đa là khoảng thời gian dài nhất, cần thiết mà một
chân của cell có thể chuyển Logic từ 1 xuống 0, hoặc 0 lên 1.
Design Compiler mô tả giới hạn trên thông qua giá trị max_transition trên
mỗi chân ra của một Cell. Trong suốt quá trình tối ưu hóa, Design Compiler cố
gắng để thỏa thời gian chuyển Logic của mỗi chân của các Cell phải nhỏ hơn
giá trị max_transition.
Hình 5.Max_transition.
Có thể thay đổi giá trị max_transition bằng lệnh set_max_transition. Việc
thiết đặt giá trị max_transition càng lỏng thì phần mềm sẽ dễ dàng chọn các
Cell nhưng thiết kế sẽ bị chậm. Thiết đặt giá trị max_transition càng chặt thì
phần mềm sẽ phải thay đổi Cell để thỏa hoặc là thêm những bộ đệm ( buffer )
vào giảm delay nhưng lúc đó diện tích thiết kế sẽ tăng mạnh.
 Khả năng chịu tải lớn nhất (Maximum fanout load).
Maximum fanout load là giá trị tải lớn nhất mà chân chịu tải có thể tải
được. Design Compiler sẽ tính giá trị max_fanout trên một pin bằng cách kết
hợp với giá trị fanout_load từ tất cả các pin xuất phát từ pin đó. Thiết kế sẽ
thỏa ràng buộc về giá trị chịu tải của driving pins nếu tổng fanout_load nhỏ
hơn max_fanout. Thiết đặt giá trị max_fanout bằng lệnh set_max_fanout.
Hình 6.Max Fanout
Ví dụ: pin X tải hai pin A và B. Pin A có fanout_load là 5.0, pin B có
fanout_load là 8.0 thì fanout_load tổng cộng của pin X là 13.0. Nếu
max_fanout của pin X là 16.0 thì thỏa ràng buộc về khả năng chịu tải của

driving pins.
Ví dụ với một chân phải tải nhiều chân khác như sau:
Hình 7.Ví dụ về Max Fanout.
Khi ta set max_fanout của chân chịu tải trên hình chặt lại thì phần mềm có
thể thay đổi Cell sao cho phù hợp. Nếu các Cell đó có fanout_load là nhỏ nhất rồi
thì phần mềm sẽ thêm vào các buffer để chia khả năng gánh tải như hình sau đây
nhưng thiết kế sẽ tăng về diện tích.
Hình 8.Thên buffer cho thiết kế.
 Điện dung lớn nhất ( Maximum capacitance ).
Điện dung lớn nhất là một thiết đặt về điện dung của dây nối. Các pin không
thể kết nối với một net có tổng điện dung (điện dung tải và điện dung kết nối ) lớn
hơn hoặc bằng điện dung tối đa quy định tại pin.
Giá trị max_capacitance là độc lập với max_fanout và max_transition nên có
thể dùng chung với hai giá trị đó. Thông thường trong thiết kế ta chỉ thiết đặt hai
trong ba giá trị trên thì phần mềm sẽ tính toán cho giá trị còn lại.
Ta dùng lệnh set_max_capacitance để đặt môt giá trị điện dung trên các cổng
input. Giá trị này nên nhỏ hơn hoặc bằng các max_capacitance của pin lái net.
 Điện dung nhỏ nhất ( Minimum capacitance).
Điện dung nhỏ nhất qui định cụ thể tải nhỏ nhất mà một cell có thể lái
được. Trong quá trình tối ưu hóa, Design Compiler đảm bảo cho các tải được
lái bởi một cell phải đạt được yêu cầu điện dung nhỏ nhất cho cell đó. Nếu xảy
ra lỗi, Design Compiler sẽ sữa lỗi đó bằng cách định cỡ lại cell.
Điện dung nhỏ nhất có độ ưu tiên cao hơn các ràng buộc về thời gian
chuyển tối đa, khả năng chịu tải tối đa,và điện dung lớn nhất. Ta dung lệnh
set_min_capacitance để thiết đặt giá trị điện dung nhỏ nhất.
 Phẩm chất đơn vị cell (cell degradation).
Phẩm chất đơn vị cell là sự giảm phẩm chất cell. Luật thiết kế định rõ giá
trị điện dung cho một net phải nhỏ hơn giá trị suy giảm phẩm chất cell.
Luật phẩm chất cell có thể dùng chung với các luật thiết kế khác. Nhưng
luật điện dung tối đa có đôn ưu tiên cao hơn. Vì thế nếu luật điện dung tối đa

không bị lỗi thì khi áp dụng luật phẩm chất đơn vị cell, thiết kế sẽ không bị lỗi.
Để thiết đặt giá trị cho luật phẩm chất đơn vị cell ta dùng lệnh
set_cell_degradation.
1.2.2.2 Ràng buộc tối ưu hóa.
 Ràng buộc thời gian.
Xung Clock và các thuộc tính của xung Clock như Latency, Uncertainty,
Transition … rất cần thiết cho việc cho việc phân tích chính xác các đoạn thời
gian ( timing paths ) trong thiết kế.
Người thiết kế phải thiết đặt các giá trị clock latency, uncertainty, transition
v.v… trong giai đoạn Front End với mục đích tạo ra một độ dự trữ ( margin ) cho
thiết kế vì trên thực tế clock không thể từ nguồn đến ngay chân clock của các
register. Vì trong giai đoạn Front End clock không có các giá trị này nên ta buộc
phải thêm độ dự trữ vào. Giả sử nếu không thiết đặt các giá trị này, giai đoạn
Front End kiểm tra thỏa về timing nhưng sau khi Place and Route thiết kế sẽ
không đạt yêu cầu.
Design Compiler không tự tạo ra xung Clock khi thực thi thiết kế, người
thiết kế phải tự tạo ra xung Clock bằng lệnh create_clock.
create_clock -period 20 CLK50
Hình 9.Tạo Clock CLK50 với chu kì 20ns.
• Ideal Clock ( Clock lý tưởng)
Ideal Clock là Clock mà không có thời gian trễ khi truyền từ nguồn xung
Clock đến chân xung Clock của các thiết bị thanh ghi.
• Propagated Clock ( Clock lan truyền)
Ngược với Ideal Clock, Propagated Clock là Clock có độ nghiêng do có
khoảng thời gian trễ từ nguồn xung Clock đến chân xung Clock của các thiết bị
thanh ghi.
• Clock Network (Clock mạng)
Clock Network hay còn gọi là Clock Tree là Clock rẽ ra thành nhiều nhánh
trước khi đến chân xung Clock của các thiết bị thanh ghi.
Mặc định Design Compiler xem Clock Network là Clock lý tưởng

( không có độ trì hoãn ). Để phân tích chính xác về mặt timing của thiết kế,
người thiết kế cần thiết đặt những giá trị liên quan đến Clock Network như
Uncertainty, Latency, Transition … sẽ được trình bày tiếp theo sau đây.
Hình10 .Clock network.
• Clock Uncertainty ( Độ bất định clock)
Uncertainty là sự sai khác lớn nhất về độ trì hoãn giữa các Clock nhánh của
Clock Network. Thiết đặt Clock Uncertainty xác định lề ( margin ) cho phép các
giá trị Clock truyền có thể đến sớm hay muộn nhưng phải nằm trong lề đó. Thiết
đặt giá trị Clock Uncertainty bằng lệnh set_clock_uncertainty.
Hình 11. Clock Uncertainty
Hình 12. Waveform của Clock Uncertainty
• Clock Latency ( Thời gian chờ clock)
Clock Latency là khoảng thời gian để tín hiệu Clock đi từ điểm của nguồn
lý tưởng đến chân của thiết bị thanh ghi trong thiết kế. Clock Latency gồm có hai
phần : Source Latency và Network Latency.
Hình 13. Clock Latency
Source Latency là khoảng thời gian để tín hiệu Clock đi từ điểm của
nguồn lý tưởng đến điểm được định nghĩa là nguồn Clock của thiết kế được chỉ ra
trong lệnh create_clock.
Network Latency là khoảng thời gian để tín hiệu Clock đi từ điểm được
định nghĩa là nguồn Clock đến chân Clock của thiết bị thanh ghi.
Hình 14. Waveform của Clock Latency
Hình 15. Source Latency và Network Latency
• Clock Transition ( Thời gian chuyển clock)
Clock Transition là khoảng thời gian để Clock Network chuyển trạng thái
Logic từ 0 lên 1 hay từ 1 xuống 0.
Hình 16. Clock Transition
• Clock Gating ( Clock cổng).
Clock Gating là Clock Network kết hợp với các cổng Logic trước khi đến
chân Clock của các thiết bị thanh ghi, ví dụ ta có cổng AND có hai ngõ vào với

một là Clock Network, ngõ vào còn lại là tín hiệu điều khiển thì ngõ ra sẽ là Clock
Gating.
Sử dụng Clock Gating để chốt Clock đối với những khối nào không sử
dụng, mục đích để tiết kiệm năng lượng.
Hình 17.Clock Gating
Clock Gating có th bị cắt xén hay bị giả mạo do trường hợp tín hiệu kết
hợp với tín hiệu Clock trong cổng Logic đến sớm hay trễ so với tín hiệu Clock.
Giải quyết vấn đề này bằng cách check setup và hold cho clock gating để
bắt buộc tín hiệu Gated_Clock không được phép thay đổi trong khoảng đó.

Hình 18. Clock Gating bị cắt xén hay giả mạo
• Clock Jitter ( Clock rung).
Clock Jitter là sự sai khác do độ không tuyệt đối của một Clock nguồn.
Clk
tJS
Hình 19. Clock Jitter
 Ràng buộc I/O.
Thông thường mỗi design hay module sẽ là một phần nhỏ của một hệ thống
lớn nên muốn phân tích chính xác về mặt timing ta thường thiết đặt các ràng buộc
cho các input và output của các design nhỏ hay các module kết nối với nhau trong
phạm vi hệ thống đó.
Hình 20. input_delay và output_delay
• Input delay (Dộ trễ đầu vào).
Input delay là khoảng thời gian từ khi có Clock lên đến khi dữ liệu ổn định
tại ngõ vào của thiết kế. Thiết đặt giá trị input delay bằng lệnh set_input_delay.
• Output delay ( Độ trễ ngõ ra).
Output delay được sử dụng cho output port, được định nghĩa là khoảng thời
gian cần thiết cho dữ liệu từ ngõ ra của thiết kế đến ngõ vào của một khối kế tiếp.
Khi ta thiết đặt ràng buộc cho input_delay và output_delay càng lớn thì
phần mềm sẽ phải tối ưu sao cho thời gian qua các khối logic bên trong thiết kế

càng nhỏ.
 Design Exceptions.
• False-paths.
Trong thiết kế khi phân tích về mặt thời gian có những đoạn thời gian ta
không cần phân tích thì ta sẽ dùng lệnh set_false_path để chỉ cho Design
Compiler bỏ qua không phân tích và tối ưu đoạn thời gian đó.
Chỉ ra một đoạn thời gian nào đó là false không có nghĩa là xóa bỏ đoạn
thời gian đó mà chỉ là ngăn đoạn thời gian đó khỏi việc phân tích timing và tối ưu
hóa.
Hình 21. False path
set_false_path -from {A} -through {C} -to {OUT}
set_false_path -from {B} -through {D} -to {OUT}
• Multicycle-path.
Thiết đặt Multicycle path cho thiết kế chạy nhiều hơn một mode hay chạy
với nhiều tốc độ khác nhau, ví dụ thiết kế chạy ở mode thường và mode kiểm tra
trong đó mode kiểm tra cần chạy nhiều thời gian hơn mode bình thường thì ta có
thể thiết đặt Multicycle path cho mode kiểm tra.

Hình 22.Multicycle path
set_multicycle_path 2 -from FF1 -to FF2
 Area Constraints.
Lệnh set_max_area cho phép người thiết kế thiết đặt giá trị diện tích lớn
nhất cho thiết kế. Diện tích của thiết kế bao gồm tổng diện tích Cell và tổng diện
tích Net. Tuy nhiên, diện tích ở đây chỉ là giá trị ước lượng về mặt Logic, diện
tích thật sẽ được thiết đặt ở giai đoạn thiết kế Back End.
Trong quá trình tối ưu thiết kế, theo mặc định phần mềm sẽ cố gắng thỏa
Design Rule Constraints sau đó mới cố gắng thỏa Optimization Constraints.
II.Tối ưu hóa thiết kế ( Optimazing Design ).
Một thiết kế hoàn toàn tối ưu phải đáp ứng được yêu cầu thời gian và chiếm
diện tích nhỏ nhất. . Tuy nhiên trên thực tế để thực hiện điều này rất khó nên tối

ưu hóa thiết kế được thực hiện trong điều kiện không khắt khe, nghĩa là tùy theo
yêu cầu, mục đích của thiết kế mà chọn phương pháp tối ưu thích hợp nhất.
Một thiết kế bao gồm nhiều khối, trong các khối đó lại được chia ra nhỏ hơn,
cấu trúc này gọi là cấu trúc phân cấp ( hierarchy ).
Hình 23. Cấu trúc phân cấp
Quá trình tối ưu có thể thực hiện theo hai cách :
 Top – Down : thực hiện từ trên module Top xuống. Trong hình
3.29 sẽ thực hiện tối ưu từ module Top level trước, sau đó thực
hiện tối ưu module A, B, C. Trong module C sẽ thực hiện tối ưu
C1, C2.
Ưu điểm :
• Chỉ cần thiết đặt ràng buộc cho Top Level.
• Kết quả tối ưu tốt hơn vì thực hiện thông qua toàn bộ thiết
kế.
Khuyết điểm :
• Thời gian compile lâu với thiết kế lớn hay nhiều ràng
buộc phức tạp, tốn bộ nhớ.
• Khi có sự thay đổi của mỗi sub-block đòi hỏi phải tổng
hợp lại toàn bộ thiết kế.
 Bottom – Up : như hình 3.29 trước tiên sẽ thực hiện tối ưu
module C1, C2 sau đó đến module C, B, A và cuối cùng là
module Top. Mỗi module con phải thỏa mãn các ràng buộc của
riêng chúng sau cùng mới thiết đặt ràng buộc cho module Top.
Sau khi mỗi module con đã thỏa ràng buộc khi tối ưu module
Top ta có thể sử dụng thuộc tính don’t_touch để DC không tối
ưu lại các module con đã thỏa rồi.
Ưu điểm :
• Không tiêu tốn nhiều bộ nhớ để thực hiện compile.
• Mỗi sub-block thay đổi chỉ cần tổng hợp lại sub-block đó
không cần tổng hợp lại toàn bộ thiết kế.

Khuyết điểm :
• Mỗi sub-block đòi hỏi cách tổng hợp riêng vì thế cần
nhiều script cho từng sub-block.
• Đòi hỏi phải kiểm tra kỹ càng từng sub-block cho việc tối
ưu.
III.Phân tích thời gian tĩnh ( Static Timing Analysis-STA).
Phân tích thời gian tĩnh là phương pháp kiểm tra thời gian của thiết kế bằng
cách kiểm tra tất cả các vi phạm thời gian có thể có trong tất cả các đường dẫn mà
không cần mô phỏng.
STA được thực hiện ở trạng thái tĩnh và không phụ thuộc và giá trị đang được
áp dụng tại các chân đầu vào. Mục đích của việc phân tĩnh là kiểm tra xem thiết
kế có hoạt động được ở tốc độ xung clock hay các ràng buộc đã được đặt ra từ
những yêu cầu ứng dụng ban đầu hay không. Phân tích thời gian tĩnh được thực
hiện ở hai giai đoạn: Front_End có pre_layout STA và Back_End có pót_layout
STA.
Hình24 .Static timing analysis.
3.1.Qui trình phân tích thời gian tĩnh.
Hình25 .Static Timing Analysis flow.
Cụ thể hóa STA thành 3 bước:
- Chia thiết kế thành nhiều Timing paths.
- Tính thời gian delay của mỗi Timing path.
- Kiểm tra delay của mỗi Timing path xem có vi phạm không.
3.2. Những khái niệm trong STA.
3.2.1 Timing paths ( Đường thời gian).
Timing paths được định nghĩa là điểm tới điểm trong một thiết kế mà thiết kế
có thể truyền dữ liệu từ flip flop này đến flip flop khác. Nó được bắt đầu tại một
chân của thanh ghi clock hay một input port thông qua những kết nối logic và
điểm kết thúc của nó là một chân đầu vào của một thanh ghi dữ liệu hay một
output port.
Timing paths gồm 4 loại:

 Data path: là những đường của data output port của một yếu tố tuần tự đến
data input port của một yếu tố tuần tự khác.
 Clock path :là đường từ một clock input port hoặc cell pin qua nhiều bộ
điệm hay cổng đảo đến clock pin của một yếu tố tuần tự.
Hình26 .Clock path.
 Clock-Gating path: là một đường từ một input port đến thành phần của
một clock-gating.
Hinh27 .Clock-Gating path.
 Asynchronous path: là đường từ một input port đến một tín hiệu không
đồng bộ như set hoặc preset của thanh ghi.
Hình28 .Asynchronuos path.
Trong đó data path và clock path đóng vai trò quan trọng và ảnh hưởng
nhiều nhất đến phân tích thời gian tĩnh.
Ngoài cách phân loại như trên người ta còn có cách phân loại sau:
- Từ chân vào input đến thanh ghi ( register) => path 1.
- Từ thanh ghi đến thanh ghi => path 2.
- Từ thanh ghi đến chân ra (output) => path 3.
- Từ chân vào đến chân ra => path 4.
Hình29. Các loại Timing paths.
3.2.2 Thời gian trì hoãn.
Tổng thời gian delay từ đầu vào đến đầu ra của một đường là tổng thời gian
delay của tất cả các cell và các net trên một đường đó:
Total Delay/path = ∑ Cell delay/path + ∑ Net delay/path
 Cell delay ( thời gian trễ cổng): là thời gian delay từ input đến output
của một cổng trên một đường thời gian.
 Net delay ( thời gian trễ dây): là thời gian delay từ output của một
Cell đến một input của một Cell kế tiếp trên một đường truyền thời
gian. Thời gian này lớn hay nhỏ phụ thuộc vào những tụ ký sinh trên
Net, chiều dài của Net
3.2.3 Setup time và Hold time.

 Setup time: là khoảng thời gian tối thiểu để dữ liệu được chuẩn bị ổn định
trước khi có sự kiện xung clock. Để ta có thể thực hiện quá trình lấy mẫu.
 Hold time: là khoảng thời gian tối thiểu để dữ liệu phải ổn định sau khi có
sự kiện xung clock. Để quá trình lấy mẫu đó được thực hiện chính xác.
Hình30 .Setup time và Hold time.
3.2.4. Slack.
Slack là khoảng thời gian được rút ra khi so sánh khoảng cách giữa khoảng
thời gian đến của dữ liệu ( Arrival time) và khoảng thời gian yêu cầu ( Riquired
time).
Slack càng lớn thì yêu cầu về tốc độ của thiết kế càng dễ đạt được. Nhưng ta
không cho phép cố tình nới lỏng ràng buộc thực tế cho Slack, vì đây chỉ là giai
đoạn ước lượng. Nếu nới lỏng ràng buộc khi thành Chip thật dễ bị sai yêu cầu ban
đầu.
Công thức tính Slack:
 Đối với Setup time, vì ta muốn dữ liệu đến trước khi nó
được sử dụng, nên:
Slack = Riquired - Arrival
Slack > 0: dữ liệu đến thỏa ràng buộc thời gian.
Slack < 0: xảy ra Setup violation.
 Đối với Hold time, vì muốn dữ liệu không đổi sau khi nó
được yêu cầu:
Slack = Arrival - Riquired
Slack > 0: dữ liệu được giữ thỏa ràng buộc thời gian.
Slack < 0: xảy ra Hold violation
3.2.5.Những ngoại trừ trong thiết kế ( Timing exceptions ).
Timing exceptions là những đường không được quan tâm trong thiết kế, ta
không cần phải thiết lập những ràng buộc như Setup tỉm hay Hold time cho
chúng. Có các loại Timing exceptions như sau:
 False path: là những đường thời gian không làm trì hoãn
tín hiệu, do đó đoạn thời gian này chúng ta không cần

phân tích nhưng nó vẫn được công cụ báo cáo lại để cho
người thiết kế biết.
 Multicycle path: là đường được thiết kế cần nhiều hơn
trong một chu kì xung clock từ khi tín hiệu được phóng ra
đến khi tín hiệu được nhận và thường được dùng cho thiết
kế có nhiều chế độ hoạt động.
 Max/min delay path: là đoạn thời gian mà người thiết kế
muốn giá trị trì hoãn không được vượt qua giới hạn này.
 Timing disable:là đoạn thời gian mà chúng ta không phân
tích. Timing path này sẽ không được tính khi phân tích
trong dụng cụ.
IV. Giới thiệu về khối FM_Decode.
FM Decode hoạt động dựa trên hoạt động của mạch vòng khóa pha PLL
( Phase locked loop) để bắt giữ và sữa lỗi tín hiệu vào FM.
4.1Sơ đồ mạch điện.
Cấu trúc mạch FM Decode gần giống như mạch PLL gồm các khối như
phase detector , vco ( thay bằng nco), loop filter, và một số khối hỗ trợ khác
Hình31.Sơ đồ khối mạch FM Decode.
4.2.Giải thích các khối.
• fm: Đây là phần tử chính, dùng để liên kết với các phần tử khác để tạo nên mạch
PLL.Chức năng của fm là giải điều biến dữ liệu FM.
Hình 32.Khối fm.
• nco:
Chức năng của NCO giống với VCO trong mạch tương tự PLL. Khối NCO hoạt động
như một bộ đếm lên nhị phân biến đổi được điều khiển bởi tín hiệu vào. Vì vậy tần số ngõ
ra của nó thay đổi theo giá trị ngõ vào.
Hình 33.Khối NCO.
• Phase_detector:
Chức năng của bộ này là phát hiện sự khác pha giữa tín hiệu vào và tín hiệu từ NCO.
Phase _detector có thể hoạt động bởi nhiều tín hiệu vào và tín hiệu ra từ NCO.

Hình34. Khối phase_detector.
• Loop_filter:
Bộ lọc tồn tại trong vòng lặp PLL
Hàm toán học của nó là: Y(z ) = X(z)
Hình 35. Khối Loop_filter.
• fir: Đây là một mạch lọc thông thấp loại FIR. Hàm toán học của mạch Fir:
• others: Ngoài ra còn có các bộ như: adder, subtractor, multiplier, full adder.

×