xilinx 內部IO延時導入Allego

本文轉自:http://blog.chinaunix.net/uid-25737580-id-5753248.html

ZYNQ 片內pin Delay導入Allegro

 

分類: LINUX

2016-10-12 20:43:28

 

最近設計一款產品的時候,需要用到zynq7015,在參考picozed的設計的時候,他們的原理圖中有這樣一句話,如下圖所示

明確說DDR設計的時候需要考慮片內延時,當時問過專業layout的朋友,他們告訴我這個一般是別人提供的,你只需要導入就可以了。只導入也簡單,可這數據從哪裏來,沒有人能告訴我,問過安富利的FAE他們也沒有告訴我哪裏有,於是和朋友討論這個問題,也在手冊裏面到處找,最後在UG586中看到這樣一段

哈哈,趕緊打開Vivado 

在最下面一欄Type a Tcl commond here裏面輸入link_design  -part  xc7z015iclg485

然後回車會出現如下界面:

在最下面一行輸入write_cvs zynq_pin_delay(這個名字隨便起,自己知道就OK)如下圖:

回車就會生成相關的文件

需要的文件已生成,路徑在上面也給出了,可以直接用Excle打開

如上圖所示的部分。我們簡單做下編輯。突然發現這裏面的數據不能直接用,因爲這裏面提供的數據首先單位是ps,然後給出了一個最大值和最小值,還有一些無關的東西。需要注意的是通過Allegro pin delay格式。我這裏通過導出ZC706的來參考他們的格式:

PIN DELAY                                              

REFDES     U1

DEVICE     SOC_IRONWOOD_FF900    

PIN_NAME PIN_DELAY  這裏是管腳名和管腳的延時,延時是以mil爲單位,那麼我們在算的時候,需要根據材質來計算1ps的延時相當於多少mil,  這裏需要計算在網上找了下如公式PCB佈線延時傳播公式.docx   
這裏我就按6,現在開始始整理生成的文件,提取出我們需要的數據,其他的我們直接刪掉就好。
原始格式如下:
       
 我們在Max Trace Delay (ps)後面新建一行,來計算最大小的平均值:


在新的欄裏輸入=(E6+F6)/2回車就能得到平均值

 

然後選中單元格,下拉,把剩下的全算出來

ps轉爲mil這裏大概取6倍,再在後面新建一列

再加上單位mil,後面再新建一列。

將算出來的值和MIL合併,在MIL那一列後面再新建一列。

注意,這裏因爲都是用的函數計算的,所以這個多的值是不能直接刪的,一刪全變成#,我們這裏把需要的值以數據的方式複製出來,然後刪掉不要的數據,複製合併好的這一列。

粘貼的時候選值

完成後的

    現在可以放心大膽去刪掉不要的數據了。 整理好後是介個樣子的
           

保存,等着導入PCB打開PCB,需要更改下

然後打開PCB file->inport->pin delay,選擇我們處理好的文件,直接導入就OK了


上面是導入前,下面是導入後。


可以很清晰地看出,導入前和後的區別就是這麼大,我們在設計高速板時,這些片內pin_delay一定要考慮進去。
導入的數據是否準確也是需要進行驗證的,如果導入的數據錯了,也是白搭,所以驗證數據也很有必要,在導入數據的PCB中file->export->pin delay選中芯片。然後選擇導出的位置和重新命個名就OK了。

打開導出的數據,

在後面貼入之前導入的數據,來做個對比。

這樣也對比不出啥或,都不是一一對應的,對比啥呀,不要慌,這裏就要用到Excle裏面的VLOOKUP函數了。

vlookup(lookup_value,table_array,col_index_num,[range_lookup])

lookup_value表示要查找的對象;

table_array表示查找的表格區域;

col_index_num表示要查找的數據在table_array區域中處於第幾列的列號;

range_lookup表示查找類型,其中1表示近似匹配,0表示精確匹配,一般我們用精確匹配的情況較多。


這裏需要注意的是,導出的數據,第一列裏面有兩個空格,在使用的時候要報錯,用查找,替換,把空格幹掉


在導入的右側得到導出的值,通過兩欄的對比就很容易發現值是一樣的。至些檢查結束!

 

發佈了42 篇原創文章 · 獲贊 29 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章