作者:Greg Daughtry 賽靈思公司產品營銷總監 greg.daughtry@xilinx.com 用于共享工具命令語言腳本的開源庫已發布在GitHub.com上。 在過去五年里,賽靈思把戰略重點放在設計方法和工具上,通過提供業界最先進、最全面的開發環境,解決生產力問題,加快設計周期,促使產品更快上市。 即便新一代Vivado設計套件和綜合全面的UltraFast設計方法可以提高生產力,但使用當今的All Programmable器件開展設計工作仍然面臨諸多挑戰。設計人員必須將數百個高度參數化的IP核、數十萬個可放置的對象和數百萬個邏輯單元與賽靈思All Programmable FPGA、3D IC和SoC完美集成。隨著設計人員不斷拓寬復雜設計的疆域,需要應對的情況也千變萬化。 隨著今年4月份Vivado 2014.1版本的發布,賽靈思正在籌備一個用于共享工具命令語言(TCL)代碼的開源庫,這一舉措無疑在進一步提升設計人員生產力方面又前進了一大步。這個名為“賽靈思TCL庫”的開源庫能夠顯著簡化查找和共享其他工程人員開發的TCL(發音為“tickle”)腳本。借助Tcl,這些腳本能夠擴展Vivado設計套件強大的核心功能,進而提升生產力,簡化使用。“Tcl庫”對用戶社區開放,通過發布對他人可能有用的Tcl代碼,讓所有設計人員受益。 日趨復雜的設計 Vivado設計套件建立在開放的可擴展數據模型上。作為一種開源系統,要想提高生產力,其中一個關鍵就是提高工具的智能化水平,提供更多定制選項和分析功能,以便設計人員更全面了解并充分運用工具,實現最佳設計。 自2012年Vivado設計套件推出以來,用于執行各種規模任務的Tcl腳本呈現出爆炸性發展。Tcl是Vivado XDC約束語言的基礎,因此掌握和運用Tcl對設計人員來說越發重要。 使用Tcl命令可以交互式地開發和優化時序約束,節省編譯時間,減少調試工作量。其核心命令可進行對象查詢,并據以提供定制報告和完成極為精細的工具控制。使用Vivado設計工具還可以開發自己的DRC和Lint檢查,配合高度定制化的流程即可實現更優異的結果質量或是更快的運行時間。設計人員使用Tcl還可以通過工程變更命令(ECO)操作進行針對性的設計變更。 TCL帶來的生產力改善,代碼創建的便捷性和代碼的易讀性,使之成為共享有用代碼的理想選擇。到目前這種共享還主要處于自發階段,采用電子郵件和用戶論壇方式。部分企業也已經在內部建立自己的TCL庫,供自己項目使用。 現在賽靈思通過自己全新的“賽靈思Tcl庫”,讓Tcl共享邁上新的臺階。 歡迎使用Tcl庫 賽靈思Tcl庫提供多種樣例,用于示范如何編寫定制報告,控制特定工具行為,進行定制網表變更,與仿真、綜合、時序與功耗分析及lint工具等第三方電子設計自動化(EDA)工具集成。 Tcl庫可從Vivado集成設計環境(IDE)本地訪問,便于用戶直接從工具內部選擇和安裝稱為“應用程序”(app)的Tcl腳本集。安裝完成后,這些應用程序的命令如同Vivado設計套件內置的命令一樣,可通過幫助命令查看其用法。Vivado設計套件使用Tcl的標準封裝工具支持不同版本的應用程序,故即便有更新的版本發布,只需單擊鼠標即可選擇升級。 賽靈思Tcl庫的目的是使用與Linux開發環境相同的方式,簡化由用戶社區開發和支持的優質Tcl腳本的查找和使用。Tcl腳本編寫與選擇IDE按鈕相比稍微高級一些。但它易于學習和掌握。有大量技術文檔和用戶指南詳細介紹Tcl API提供的具體命令,詳情請訪問china.xilinx.com/support。 下面詳細介紹從賽靈思Tcl庫安裝和使用Tcl應用程序的方式。 ![]() 圖1:Vivado IDE中的Tcl庫對話框為安裝應用程序和瀏覽命令提供方便。 安裝和使用 在首次啟動Vivado IDE時,設計人員可以通過“Getting Started”頁面上的圖標訪問賽靈思Tcl庫。設計人員也可以轉到工具菜單(Tools Menu),選擇“Xilinx Tcl Store”菜單選項。此時會彈出庫對話框,提供可供安裝的應用程序清單(圖1)。 瀏覽應用程序清單時,可以看到每個應用程序下又有一個命令清單(Tcl中稱為“procs(進程)”),列出了可供執行的命令。可以查看每個應用程序及每個應用程序中每個進程的介紹,了解其功能。點擊安裝按鈕就可以安裝和注冊應用程序,隨后可以如同Vivado設計套件本地命令一樣顯示和使用。應用程序安裝完畢后,每次啟動Vivado設計套件它都會自動加載,無需每打開一個新的界面都安裝一次應用程序。 進程有命名規則,使用Tcl中名為“命名空間”的工具。命令的名稱看似比正常的Tcl命令稍顯復雜,同時內嵌有“::”字符。例如xilinx::ultrafast::check_pll_connectivity用于對賽靈思器件中的時鐘修改模塊進行連接檢查。該命名法則的目的是確保Tcl代碼的唯一性以及一個應用程序中的某個進程不會與另一個應用程序中的同名進程發生沖突。命名空間是Tcl的標準特性。 運行應用程序命令的方法是鍵入包括命名空間在內的進程的完整合法名稱,并有選擇地輸入任何要求的命令行參數,就和其它Tcl命令一樣。由于這些命令使用標準命名空間,也可選擇導入命令到全局空間中。如果不和任何其他命令名稱發生沖突,這個方法是適用的。這樣可以略去命名空間限定符,只使用進程名稱。在上面的例子中,如果把UltraFast應用程序導入全局命名空間,無需命名空間限定符即可直接調用check_pll_connectivity命令。 設計人員只需單點應用程序詳細介紹部分中的“Uninstall App”超鏈接,就可以卸載應用程序。另外,點擊“Refresh”按鈕便可更新應用程序目錄。Tcl庫目錄由第三方網站托管,與Vivado版本無關,因此可隨時更新應用版本。目錄更新后,Vivado工具會占用少許資源執行應用程序清單同步。如果有更新后的已安裝應用程序可用,請使用“Update”按鈕來取得。Vivado設計套件會復制并同步該應用程序的最新版本,完成其安裝。為避免發生配置控制問題,更新只根據設計人員的要求安裝。對在意安全性,不愿意讓Vivado設計套件隨時從自己的網絡防火墻外同步的用戶,可以使用一個參數禁用目錄同步功能。 使用賽靈思Tcl庫的Tcl應用程序簡單且方便。賽靈思的目標是鼓勵世界各地的開發團隊使用和共享Tcl庫,提升生產力。庫中只顯示任何給定應用程序的最新版本,設計人員只能安裝或升級到所支持的最新版本。當然充分利用的最好方式是保證有豐富的有用代碼庫。賽靈思在庫中植入了一整套非常有用的實用工具和集成腳本,可供用戶當作范本研究,掌握如何構建自己的可重用Tcl腳本。 使用賽靈思Tcl庫的Tcl應用程序簡單且方便。賽靈思的目標是鼓勵世界各地的開發團隊使用和共享Tcl庫,提升生產力。 向Tcl庫提供代碼 有兩種途徑可向Tcl庫提供代碼,讓腳本供所有的Vivado設計套件用戶使用。第一個途徑是修改現有的應用程序。第二個途徑是開發新應用程序,然后提交新應用程序申請。要提供代碼給Tcl庫,用戶需要對用于版本控制的軟件開發工具有一定熟悉,或至少有學習意愿。 每個應用程序都由一個人控制,一般是編寫大部分代碼的人,也稱為“應用程序負責人”。賽靈思庫在整體上由賽靈思控制,且賽靈思公司負責維護把應用程序發布到公共域的流程,以保持各應用程序之間的基本一致性。賽靈思員工起著質量保障“守門員”的作用。 想要修改現有應用程序或添加新應用程序的“提供人”可與“守門員”和應用程序責任人合作,遵循與其他開源項目一樣的流程,完成提交工作。在代碼托管網站上有個維基(wiki)用于把這個流程形成文檔。 所有代碼提交都應滿足基本要求。賽靈思盡量讓隨時可能發生變化的基本要求項目保持簡潔,同時確保合理的用戶體驗。下面是用戶需要遵循的基本應用程序要求:
GITHUB上的TCL庫 賽靈思Tcl庫托管在名為GitHub.com的第三方網站上。該庫使用版本控制工具來保證分布開發工作以可控方式進行。這個過程的關鍵就是Git,一種常見的開源分布式版本控制工具,常用于Linux。如果要訪問Tcl庫以提交和測試代碼,可以在GitHub.com上注冊一個免費賬號,安裝和設置Git。GitHub提供供Windows PC機使用的Git工具安裝版本。Linux機器一般已經安裝有,或是可通過標準軟件包安裝。GitHub提供輔導資料,幫助用戶入門Git。 用戶注冊得到GitHub賬號后,就可以按下列步驟向Tcl庫提供代碼: 1. 復制賽靈思Tcl庫主庫。這樣可以在用戶的測試環境(Sandbox)中創建一個本地復本,便于用戶在本地開發和測試,避免給其他應用程序造成影響。 2. 遵循按照應用程序名稱及企業或GitHub名稱確立的指引,把自己的新代碼放在正確的目錄中。使用標準Git添加命令。 3. 使用本地庫中的Vivado設計套件,調用注冊代碼和生成Catalog.xml文件所需的命令。這是用戶所需的三個文件之一。另兩個是軟件包索引文件和Tcl索引文件。 4. 在另一個位置打開Vivado設計套件,轉到本地庫,然后測試自己的應用程序。運行Linter和本地測試,直至對所有運行情況滿意為止。 5. 確認修改,并提供信息簡要介紹所做的改動。 6. 發送申請允許提交代碼到tclstore@xilinx.com的電子郵件。說明是否想要創建新應用程序,準備如何命名該新應用程序。如果想要修改現有應用程序或是把代碼提供給現有應用程序,應明確說明。另外需要取得應用程序負責人的許可。 7. 使用Web瀏覽器轉到GitHub.com,發出拉請求。這樣會正式啟動把用戶提供的代碼合并到庫中的流程。應適當與“守門員”和應用程序負責人合作,通過GitHub和電子郵件解決任何問題。 8. 恭喜!幫助大家是一件快樂的事情。 ![]() 圖2:賽靈思Tcl庫提交應用程序的工作流程歷經幾個非連續步驟 圖2所示的是提交應用程序的工作流程示意圖。 細枝末節 賽靈思Tcl庫屬于開源庫,沒有為商業化提供的代碼或用提供的代碼收費提供機制。提交給Tcl庫的應用程序可以通過開源項目中常用的BSD許可證,供各類衍生作品免費使用。為便于提供的代碼被大家接受和發布,向Tcl庫提供的代碼應包含BSD許可證的版本。如果有企業或用戶不想把自己的知識產權發布到公共域,Vivado設計套件也可照搬發出拉請求前測試工作所采用的機制,為本地版本的Tcl庫提供支持。 此外由于該項目使用GitHub進行托管,提交人在注冊賬號時必須同意GitHub的服務條款,因為這屬于第三方服務。 應用程序庫中的應用程序由用戶社區開發和支持。這意味著賽靈思技術支持部未接受過與該功能有關的培訓,無法回答與Tcl代碼有關的問題。請直接把這些應用程序的支持性問題提交到賽靈思用戶論壇上。如果發現代碼段中存在的缺陷或問題,可以直接在GitHub.com項目中備案并跟蹤。由于這屬于開源開發模式,我們鼓勵用戶修改這些問題,改善代碼質量,為所有用戶造福,就如同Linux一樣。 發展規劃 Vivado 2014.1版本推出Tcl庫只是一個開始。賽靈思今年將不斷改進Tcl庫,落實其搜索應用程序和進程的能力,簡化功能查找工作。賽靈思將提供一種無需安裝應用程序即可瀏覽和查看源代碼的途徑。此外賽靈思還考慮提供一種評價機制,用戶可評定一星到五星等級,并可選擇提供書面評語。這樣便于人們為較受歡迎的代碼留下反饋意見。 賽靈思還準備根據應用類別提供篩選功能,實現更好的分類。例如按仿真、綜合、實現、項目和網表實用工具分類。隨著庫規模越來越大,賽靈思可能會增加分類數量,豐富應用程序門類,以體現提交的代碼的多樣性。 賽靈思希望盡量簡化應用程序的提交工作,因此可能會探索讓用戶通過電子郵件提交Tcl腳本的途徑,從而盡量減少支持工作量,避免繞道GitHub。這個過程的無控性質與目前的安裝方案不對接,故只是作為例子介紹。 世界各地有成千上萬的用戶在使用Vivado設計套件,有數以百計的企業已經采用UltraFast設計方法。賽靈思Tcl庫提供了一個新的開源項目,旨在讓賽靈思、賽靈思合作伙伴和客戶之間共享Tcl腳本,從而可以進一步提高設計人員生產力。 參考信息和資料 申請GitHub賬號,查閱Git和GitHub上的教程,請訪問: https://github.com/ 賽靈思Tcl庫的代碼庫和介紹代碼提交方法的維基文檔,敬請訪問: https://github.com/Xilinx/Xilinx-TclStore 賽靈思Tcl庫維基包含代碼提交流程的詳細介紹: https://github.com/Xilinx/Xilinx-TclStore/wiki/Xilinx-Tcl-Store-Home UG 894《使用Tcl腳本編寫指南》內含Vivado設計套件一般腳本編寫功能的介紹: http://china.xilinx.com/support/documentation/sw_manuals/xilinx2013_4/ug894-vivado-tclscripting.pdf UG835《Tcl命令參考》內含Vivado設計套件提供的全部本地命令有關的信息: http://china.xilinx.com/support/documentation/sw_manuals/xilinx2013_4/ug835-vivado-tcl-commands.pdf |