虛擬時鐘(virtual clock)
通常rtl設計要求對晶元/module的輸入訊號進行reg_in打拍處理,對晶元/module的輸出也要求做reg_out打拍處理,這是良好的**習慣,為時序收斂留下足夠裕量,也避免頂層例化綜合後的子模組時出現模組間io時序不滿足的情況。綜合階段可根據設計工藝需求,設定io的input/output為時鐘週期的40%-60%。
但是,晶元timing sign-off階段會偶爾遇到io時序少量違例,比如,輸入reg的hold違例、輸出reg的setup違例,本質原因是eda時序分析工具會在輸出輸入外部假定乙個理想化的不帶clock propagation time的暫存器做時序分析。
比如,在set_propagated_clock命令後,下圖左邊暫存器的clk1端就不帶clock propagation time,而clk2(與clk1同頻同相)就帶insertion delay, 擁有時鐘latency,這樣輸入io的hold違例就可能發生,setup反而更容易滿足。
同理,在set_propagated_clock命令後,輸出io的setup違例就可能發生,hold反而更容易滿足。
以輸出io的register的setup建立時間為例,launch clock的data path上由於存在1.5ns的propagation time/clock latency,發生了時序違例。這是因為外部假定的register是沒有propagation time/clock latency。而保持時間則反而容易滿足。
虛擬時鐘應運而生,那麼建立虛擬時間有什麼好處呢?
create_clock -name vclk -period 10,不用指定clk pin/port
set_input_delay 8 -clock vclk [get_ports data_in]
set_output_delay 8 -clock vclk [get_ports data_out]
eda工具會基於虛擬時鐘,根據晶元/模組內部時鐘的實際insertion delay評估io外部假定暫存器的propagation time,這樣時序分析就可以規避不必要的「假」違例,當然也可以不指定virtual clock,只是每次分析時序時都需要檢查並排除這種「假」違例,影響了工作效率。
實時(RTC)時鐘,系統時鐘和CPU時鐘
最近在學stm32的時候看到rtc時鐘和系統時鐘,不知道區別在 於是上網查了一下。實時時鐘 rtc時鐘,用於提供年 月 日 時 分 秒和星期等的實時時間資訊,由後備電池供電,當你晚上關閉系統和早上開啟系統時,rtc仍然會保持正確的時間和日期。系統時鐘 是乙個儲存於系統記憶體中的邏輯時鐘。用於系統的計...
邏輯時鐘 分布式物理時鐘邏輯時鐘和向量時鐘
在分布式系統中,多個節點都有可能修改資料,由於網路等的原因,第乙個修改的時間節點發起的寫入請求並不一定能最先到達實際寫入節點,為了資料的一致性,各個節點對同一資料產生的update create的值要達到一致性,一般情況下就需要對各個節點的請求資料更新時間進行比對,將最後更新的資料更新到資料系統中 ...
Linux系統時鐘與硬體時鐘
linux系統有兩個時鐘 乙個是由主機板電池驅動的硬體時鐘 real time clock 也叫做rtc或者叫cmos時鐘。當作業系統關機的時候,用這個來記錄時間,但是對於執行的系統是不用這個時間的 另乙個時間是系統時鐘 system clock 也叫核心時鐘或者軟體時鐘,是由軟體根據時間中斷來進行...