確保數據總線(xiàn)的信號偏移控制
有時(shí)候我們想讓多個(gè)信號或多或少的出現在同一時(shí)刻(也就是說(shuō)這些信號之間的時(shí)間差應該在某個(gè)界限之內)。
本文引用地址:http://dyxdggzs.com/article/201710/365504.htm一個(gè)經(jīng)典的情況就是多位的數據總線(xiàn),總線(xiàn)上的信號應該(幾乎)同時(shí)到達。
如果其它信號均由其中一個(gè)信號生成,那么要滿(mǎn)足上面的要求,我們可以通過(guò)設置set_min_delay約束來(lái)實(shí)現。
但是如果這些信號都是互相獨立生成的呢?
或者說(shuō),大多數情況下,這些信號可能都是由同一個(gè)信號源生成的(例如同一個(gè)時(shí)鐘源)?
確保小的信號傳輸偏移的一個(gè)方式就是相對共同的源約束每個(gè)信號。
舉個(gè)例子,一個(gè)32位的數據信號,相對同一個(gè)時(shí)鐘源(用于生成這些信號)我們可以對每個(gè)信號進(jìn)行約束。
但是使用這種方法來(lái)控制數據總線(xiàn)上信號之間的偏移需要非常嚴格的時(shí)序約束。
例如我們需要確保不同信號之間的偏移差在0.5ns范圍內。
因此我們需要設計延遲規范,比如定義最小和最大延遲,確保所有信號能在0.5ns偏差范圍內全部到達節點(diǎn)。
這個(gè)要求不是對于某個(gè)具體的0.5ns節點(diǎn)來(lái)說(shuō)的,而是需要滿(mǎn)足任意一個(gè)節點(diǎn)——在0.5ns的延遲范圍內所有信號都能到達。
XDC可以通過(guò)set_data_check命令來(lái)規定這樣的偏差控制要求。
我們可以使用這個(gè)命令來(lái)定義兩個(gè)數據信號之間所能接受的最大偏差值。
舉個(gè)例子:
set_data_check –from A –to B 0.5
也就是說(shuō)AB之間的傳輸時(shí)間在0.5之內。
下面讓我們來(lái)使用這個(gè)命令來(lái)規范一個(gè)32位總線(xiàn)的數據偏移問(wèn)題。
這需要31*32/2條命令來(lái)定義任意數據信號之間的組合。
另一個(gè)簡(jiǎn)單的方法(只是稍微加一些限制)是取其中一位數據信號作為參照,根據這個(gè)信號來(lái)規范其它數據信號。
對于每個(gè)數據信號位,set_data_check命令后面都要加“-to”參數。
這樣將僅需要32條這樣的命令。
舉個(gè)例子:
set_data_check –from A[0] - to A[15] 0.25
set_data_check –from A[1] –to A[15] 0.25
….
set_data_check –from A[31] –to A[15] 0.25
注意一定要將想定義的數值減半,因為定義的是雙向的。
因此考慮到的極端情況就是一個(gè)信號可能早些到達,另一個(gè)信號可能晚些到達。
因此所有要約束的信號之間的最大時(shí)間偏移將是具體值的兩倍。
上面的命令設置可以確保任意的信號組合都能夠使用,信號之間的最大時(shí)間偏移為0.5ns。
評論