В очередном проекте появилось желание автоматизировать создание UCF для Xilinx в AD.
Скрипт VendorTools_v3.0 из google code - пропускал много выводов.
Вместо того, чтобы тратить время на ручное набивание UCF, и то я не большой знаток Delphi и API Альтиума,
все же решил попытаться поправить VendorTools_v3.0 под реальную задачу.
Может найдется кто потестировать и отправить коммит в Google Code.
Вот что у меня получилось.
Модифицированная версия на базе VendorTools_v3.0
- Добавлена переменная Net Tolerance для поиска метки на цепи подходящей к выводу.
Она почему-то в метрической системе "плавает" и не точно "ложится" на цепь.
Возможно что цепь не точно подводится к пину элемента.
- Добавлена возможность изменять Wire Length при экспорте UCF.
Вроде бы так надежнее ищет метки цепей около выводов.
В оригинальном скрипте было фиксированное значение 30000000,
исчисляемое во внутренних "попугаях" (cInternalPrecision в 0,1 микродюймах).
Было (пример для Pin.Orientation = eRotate180):
Код
NetItr.AddFilter_Area(Pin.Location.X - 30000000, Pin.Location.Y - 1, Pin.Location.X + 1, Pin.Location.Y + 1)
Стало (пример для Pin.Orientation = eRotate180):
Код
GridSizeMM := CoordToMMs(SchDoc.VisibleGridSize);
WireSizeMax := StrToInt(EditLength.Text) * GridSizeMM;
WireSizeMin := 1;
if Pin.Orientation = eRotate180 then
begin
X1 := Pin.Location.X - MMsToCoord(WireSizeMin);
Y1 := Pin.Location.Y - MMsToCoord(WireSizeMin);
X2 := Pin.Location.X + MMsToCoord(WireSizeMax);
Y2 := Pin.Location.Y + MMsToCoord(WireSizeMin);
end
NetItr.AddFilter_Area(X1,Y1,X2,Y2);
Т.е. по вертикали "окно поиска метки" расширено с 0,1 микродюйма до ±1 мм,
а по горизонтали - до величины, заданной в поле Wire Length в единицах видимой сетки.
- Добавлена поддержка экспорта в xdc файл для Vivado
- Добавлена возможность сортировки ucf/xdc по имени цепи.
- Для отладки, при экспорте в Xilinx, создается второй файл с выводами элемента, у которых не обнаружено Net Label.
З.Ы. Почему-то мне попался для правки VendorTools_v3.0 и уже после своих доработок обнаружил более новую версию VendorTools_v3.5 by Caludio Veronesi
Глянул на изменения в коде - мне кажется его изменения незначительны для ликвидации пропусков.