
1. Timing là gì?
Timing đơn giản là thời gian, là đáp ứng về mặt thời gian của cell logic - cell delay, của dây nối (net/wire) - net delay, của các hiện tượng điện tử trong mạch có thể gây ra delay, ảnh hưởng đến hoạt động của thiết kế.
Một ví dụ đơn giản, giả sử bạn có một cổng logic NOT, khi bạn chuyển mức logic đầu vào từ 0 lên 1 (ta quy ước với nhau mức 0 đại diện cho 0V và mức 1 đại diện cho 5V), thì điện thế ở phía đầu ra phải mất một khoảng thời gian mới chuyển về 0, và ngược lại nếu chuyển đầu vào từ 1 về 0 thì ở đâu ra cũng sẽ mất một khoảng thời gian để lên được mức logic 1. khoảng thời gian từ lúc đầu vào được thay đổi đến khi có sự thay đổi tại đầu ra được gọi là delay của logic NOT. Như trong hình dưới, ta sẽ có delay của NOT (để đầu vào từ 0 lên 1 - đầu ra 1 về 0) sẽ là T1-T0 và delay của NOT (để đầu vào từ 1 về 0 - đầu ra 0 lên 1) là T3-T2. Chúng ta có 2 loại delay cho cùng một cổng logic là do cách thiết kế của cổng logic.
Các delay này tồn tại bởi vì bản chất vật lý của linh kiện tạo nên các cổng logic. Các bạn tìm hiểu thêm khái niệm về CMOS nhé.
2. Tại sao phải phân tích Timing?
Ta đã biết về delay, vậy thì nó sẽ ảnh hưởng thế nào đến thiết kế mà ta phải phân tích ? Lấy ví dụ một thiết kế đơn giản bao gồm có 2 flipflop và 1 cổng NOT ở giữa với giá trị delay của nó là 1.1ns (nano giây), và bạn đang muốn mạch hoạt động với tốc độc clock là 1GHz.
Tất nhiên, khi thiết kế mạch này, bạn mong muốn rằng khi cho tín hiệu input từ 0 lên 1 thì tín hiệu ở đầu ra dự kiến sẽ biến đổi từ 1 về 0. Tuy nhiên, bạn có thể thấy theo mô tải sóng hình phía dưới mạch, đầu ra output không thay đổi giá trị về 0 mà vẫn giữ mức logic 1. Tại sao ư? bạn dễ dàng thấy rằng, FF2 đưa tín hiện NOT/out ra ngoài output mỗi khi thấy cạnh lên của clock, nhưng delay 1.1ns của cổng NOT lúc này đã làm cho tín hiệu kết quả không ra kịp tại cạnh lên FF2 (tại 1ns), và điều này dẫn đến cả thiết kế của bạn bị sai cơ bản về mặc logic. Bạn đã lỡ chuyến xe bus.
Đây chính là lý do bạn cần phải phân tích timing để đảm bảo rằng các giá trị delay trong thực tế sẽ không làm cho mạch của bạn bị chạy sai. Hay có thể nói cách khác, nhiệm vụ của STA là đảm bảo cho thiết kế của bạn được đúng về mặc logic trước sự tồn tại của những giá trị delay phát sinh bởi thực tế.
3. Phân tích như thế nào ?
Trong thực tế, chúng ta có các công cụ phần mềm để STA (Static Timing Analysis) như PrimeTime, Tekton, Tempus,... đây là những tool "đặc trị", bên cạnh đó thì các tool khác ở mỗi giai đoạn/khâu trong thiết kế cũng có thể cho chúng ta các báo cáo về STA.
Ta có thể thấy STA là khâu kiểm tra khá quan trọng trước khi mang thiết kế ra nhà máy để làm khuôn, đúc chip. Tuy nhiên, việc thực hiện STA cũng phải được đòi hỏi hoàn thành xuyên suốt qua mỗi khâu của thiết kế. Điều này sẽ giúp chúng ta nhận ra sớm các vấn đề về timing trong thiết kế, giúp tiết kiệm thời gian và đỡ tốn công sức hơn trong việc khắc phục những lỗi về timing.
Lấy ví dụ: bạn có thể sử dụng lại hình có 2FF và 1NOT, cổng NOT ở đây tượng trưng cho một mạch logic phức tạp và dài ngoằn về mặt timing. Nếu chúng ta không kiểm tra STA khi synthesize mạch từ RTL ra netlist, thì đến lúc layout cũng sẽ gặp, và quá trình làm lại lúc này sẽ dài hơn (từ layout quay lại code RTL lại hoặc synthesize lại). vậy nên ta thường kiểm tra STA tại mọi nút có thể trong các khâu thiết kế nhằm tránh lãng phí thời gian nếu có lỗi phát sinh.
STA là một trong những bài kiểm tra cơ bản và quan trọng đối với mọi thiết kế trong thế giới số. Hy vọng bài viết đã mang lại cho các bạn một ý niệm ban đầu về thế nào là Statics Timing Analysis.
Nguồn: http://hoanglongroyal.blogspot.com
Bạn Có Đam Mê Với Vi Mạch hay Nhúng - Bạn Muốn Trau Dồi Thêm Kĩ Năng
Mong Muốn Có Thêm Cơ Hội Trong Công Việc
Và Trở Thành Một Người Có Giá Trị Hơn
Bạn Chưa Biết Phương Thức Nào Nhanh Chóng Để Đạt Được Chúng
Hãy Để Chúng Tôi Hỗ Trợ Cho Bạn. SEMICON
Hotline: 0972.800.931 - 0938.838.404 (Mr Long)