Mặc định, phần mềm phân tích timing sẽ thực hiện phân tích tất cả các đường từ startpoint đến endpoint bằng cách giả sử sau khi một sự kiện lấy dữ liệu (launch) xuất hiện tại startpoint thì dữ liệu này sẽ được bắt (capture) ở endpoint trong cạnh clock kế tiếp. Nghĩa là timing được kiểm tra trong một chu kỳ xung clock. Bất kỳ trường hợp ngoại lệ nào nằm ngoài quy tắc này đều phải được khai báo như một đường timing ngoại lệ (timing exception). Bài này mô tả một số loại đường timing ngoại lệ.
1) False path
1) Nitin Singh, Neha Agarwal, Arjun Pal Chowdhury; Basics of multi-cycle & false paths; August 07, 2014; https://www.edn.com
False path là một đường có tồn tại thực sự trong thiết kế nhưng trong quá trình hoạt động, đường này không bao giờ được sử dụng để truyền dữ liệu từ startpoint đến endpoint do được cấu hình, do chuỗi dữ liệu được mong muốn hoặc do chế độ hoạt động. False path là đường sẽ không cần phải thỏa mãn các điều kiện ràng buộc timing trong quá trình phân tích timing và là đường sẽ không cần phải tối ưu timing trong quá trình tổng hợp, thiết kế vật lý.
1.1) Đường có giá trị tại startpoint là cố định
Các thiết kế thường có một số bit thanh ghi được sử dụng để cấu hình hoạt động của thiết kế. Các bit này chỉ được cấu hình một lần trước khi hoạt động và giữ nguyên giá trị trong suốt quá trình hoạt động. Trong trường hợp này, việc phân tích timing hay tối ưu timing cho đường này có thể không cần thiết hoặc không qua trọng bằng các đường có trạng thái thay đổi liên tục. Đường đi từ bit này đến các thanh ghi khác có thể được xem như là false path.
Các thiết kế thường có một số bit thanh ghi được sử dụng để cấu hình hoạt động của thiết kế. Các bit này chỉ được cấu hình một lần trước khi hoạt động và giữ nguyên giá trị trong suốt quá trình hoạt động. Trong trường hợp này, việc phân tích timing hay tối ưu timing cho đường này có thể không cần thiết hoặc không qua trọng bằng các đường có trạng thái thay đổi liên tục. Đường đi từ bit này đến các thanh ghi khác có thể được xem như là false path.
Hình 1: flase path - ví dụ về đường có giá trị tại startpoint là không đổi trong khi thiết kế hoạt động |
1.2) Đường không xảy ra sự lan truyền dữ liệu từ startpoint đến endpoint
Trong trường hợp này, dữ liệu của startpoint không ảnh hưởng đến giá trị tại endpoint trong bất cứ trường hợp nào. Trong ví dụ hình 2, FF0 không bao giờ lan truyền dữ liệu của nó đến FF1 do cấu trúc mạch được điều khiển bởi sel. Trong trường hợp này, đường từ FF0 đến FF1 có thể được xem xét như false path.
Hình 2: flase path - FF0 không bao giờ lan truyền dữ liệu đến FF1 |
Một ví dụ khác trong hình 3, giữa FF0 và FF3 có đường timing tuy nhiên giá trị của FF0 không bao giờ ảnh hưởng đến giá trị FF3. Giá trị FF3 chỉ phụ thuộc vào giá trị của FF1. Đường timing từ FF0 đến FF3 có thể được xem như là false path.
Hình 3: False path - giá trị của FF0 không ảnh hưởng đến FF3 trong mọi trường hợp |
1.3) Đường reset bất đồng bộ
Trong quá trình khởi động (start-up), quá trình xảy ra sau khi bật nguồn và trước khi chip bắt đầu hoạt động, các FF cần được reset để xác lập giá trị ban đầu. Một số module sẽ không cần phải hoạt động và không được cấp clock thông qua các cell clock-gate trong suốt quá trình khởi động. Để reset được các FF không có clock, reset bất đồng bộ sẽ được sử dụng. Đối với các module không được cấp clock, timing của tín hiệu reset bất đồng bộ không ảnh hưởng đến các FF. Tín hiệu reset có thể tích cực và thôi tích cực bất cứ thời điểm nào trong quá trình khởi động mà không gây ra trạng thái bất ổn định (metastability) cho các FF không được cấp clock. Vì vậy, đường reset bất đồng bộ đẽn các FF này có thể xem như là false path.
Ví dụ hình 4 minh họa quá trình startup sử reset bất đồng bộ startup_rst để reset các FF. FF0 là FF không được cấp clock trong quá trình này nên đường reset bất đồng bộ đên nó có thể xem như là false path.
1.4) Đường giao tiếp giữa hai miền clock bất đồng bộ
Một tín hiệu được phát bởi một clock này và được nhận bởi một clock khác nhưng hai clock này bất đồng bộ với nhau thì đường này có thể xem như là false path vì chúng ta không thể tìm thấy mối ràng buộc timing nào giữa hai clock bất đồng bộ. Trong ví dụ hình 5, đường timing từ FF0 đến FF1 là false path.
1.5) Ý nghĩa của việc xác định flase path
Việc xác định các đường flase path nếu được thực hiện ngay từ đầu bởi người thiết kế để mô tả rõ cho phần mềm kiểm tra timing và thiết kế vật lý sẽ giúp cho quá trình phân tích timing và tối ưu thiết kế nhanh hơn và hiệu quả hơn.
Nhanh hơn thể hiện ở hai điểm:
Hình 4: False path - FF0 không được cấp clock trong suốt quá trình khởi động (start-up) với reset bất đồng bộ |
1.4) Đường giao tiếp giữa hai miền clock bất đồng bộ
Một tín hiệu được phát bởi một clock này và được nhận bởi một clock khác nhưng hai clock này bất đồng bộ với nhau thì đường này có thể xem như là false path vì chúng ta không thể tìm thấy mối ràng buộc timing nào giữa hai clock bất đồng bộ. Trong ví dụ hình 5, đường timing từ FF0 đến FF1 là false path.
Hình 5: False path - đường giao tiếp giữa hai miền clock bất đồng bộ |
Việc xác định các đường flase path nếu được thực hiện ngay từ đầu bởi người thiết kế để mô tả rõ cho phần mềm kiểm tra timing và thiết kế vật lý sẽ giúp cho quá trình phân tích timing và tối ưu thiết kế nhanh hơn và hiệu quả hơn.
Nhanh hơn thể hiện ở hai điểm:
- Quá trình phân tích timing và tối ưu thiết kế không phải lặp đi lặp lại quá nhiều lần. Trên thực tế, trong các thiết kế lớn, nhiều đường được phát hiện và thiết lập là flase path là nhờ các phần mềm phân tích timing. Nếu các đường flase path không được thiết lập ngay từ đầu, việc phân tích timing có thể phải thực hiện nhiều lần.
- Xác định đúng và đủ các đường flase path sẽ giúp phần mềm phân tích timing giảm bởi thời gian kiểm tra các đường timing không cần thiết.
Hiệu quả hơn thể hiện ở việc các phần mềm tổng hợp sẽ tập trung tối ưu cho các đường timing cần thiết và tránh những tối ưu không cần thiết cho các false path. Việc tối ưu cho các đường đáng lẽ là flase path không chỉ làm tăng thời gian chạy của phần mềm mà còn có thể làm tăng diện tích hoặc công suất tiêu thụ của linh kiện.
2) Multicycle path
Mặc định, phần mềm phân tích timing thực hiện các kiểm tra trong một chu kỳ xung clock khi dữ liệu lan truyền từ startpoint đến endpoint. Tuy nhiên trong thiết kế, một số đường có thể được thiết kế để dữ liệu lan truyền từ startpoint đến endpoint trong khoảng thời gian nhiều chu kỳ xung clock.
Trong ví dụ hình 6 đường timing từ FF3 đến FF4 được thiết kế để FF4 bắt dữ liệu truyền từ FF3 trong 2 chu kỳ xung clock. Nghĩa là, sau khi FF3 lấy dữ liệu mới ở cạnh clock thứ nhất thì đến cạnh clock thứ 3 FF4 mới cập nhật dữ liệu mới từ FF3.
Khi thiết lập một đường là multicycle path, vị trí kiểm tra setup và hold cũng sẽ thay đổi theo tương ứng như trong minh họa hình 7.
Riêng đối với kiểm tra hold, phần mềm kiểm tra timing như Prime Time cho phép thiết lập vị trí kiểm tra hold tại cạnh đầu tiên (như mặc định) hoặc cạnh thứ 2 (đi theo vị trí kiểm tra setup mới).
3) Minimum-delay và maximum-delay path
Đường này phải có độ trễ lớn hơn hoặc bằng giá trị tối thiểu (minimum) hoặc nhỏ hơn hoặc bằng giá trị tối đa (maximum) đã thiết lập. Mặc định, phần mềm phân tích timing sẽ dựa trên cạnh launch và cạnh capture của clock để xác định giá trị độ trễ tối thiểu và tối đa cho phép nhưng phần mềm phân tích timing cho phép ghi đè giá trị này thông qua việc thiết lập độ trễ tối thiểu và độ trễ tối đa cho đường timing. Đối với phần mềm Prime Time, giá trị tối thiểu và tối đa được tính như sau:
Tham khảo:2) Multicycle path
Mặc định, phần mềm phân tích timing thực hiện các kiểm tra trong một chu kỳ xung clock khi dữ liệu lan truyền từ startpoint đến endpoint. Tuy nhiên trong thiết kế, một số đường có thể được thiết kế để dữ liệu lan truyền từ startpoint đến endpoint trong khoảng thời gian nhiều chu kỳ xung clock.
Hình 6: Multicycle path |
Khi thiết lập một đường là multicycle path, vị trí kiểm tra setup và hold cũng sẽ thay đổi theo tương ứng như trong minh họa hình 7.
Hình 7: Kiểm tra timing cho multicycle path |
Hình 8. Vị trí kiểm tra hold có thể được lựa chọn trong cấu hình multicycle path |
Đường này phải có độ trễ lớn hơn hoặc bằng giá trị tối thiểu (minimum) hoặc nhỏ hơn hoặc bằng giá trị tối đa (maximum) đã thiết lập. Mặc định, phần mềm phân tích timing sẽ dựa trên cạnh launch và cạnh capture của clock để xác định giá trị độ trễ tối thiểu và tối đa cho phép nhưng phần mềm phân tích timing cho phép ghi đè giá trị này thông qua việc thiết lập độ trễ tối thiểu và độ trễ tối đa cho đường timing. Đối với phần mềm Prime Time, giá trị tối thiểu và tối đa được tính như sau:
Độ trễ tối đa = giá trị thiết lập - thời gian setup tại cạnh capture
Độ trễ tối thiểu = giá trị thiết lập - thời gian hold
Đường được thiết lập giá trị độ trễ tối thiểu và độ trễ tối đa sẽ bị bỏ qua các ràng buộc liên quan đến clock. Timing của đường này sẽ được kiểm tra dựa trên kết quả so sánh với độ trễ tối thiểu hoặc tối đa đã thiết lập.1) Nitin Singh, Neha Agarwal, Arjun Pal Chowdhury; Basics of multi-cycle & false paths; August 07, 2014; https://www.edn.com
2) http://vlsiuniverse.blogspot.com
Bài viết hay và lý luận dễ hiểu. Cảm ơn tác giả
Trả lờiXóa