相關閱讀
Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm=1001.2014.3001.5482
????????本文是對Spyglass?Hands-on Training中第一個實驗的翻譯(有刪改),Lab文件可以從以下鏈接獲取。Spyglass Hands-on Traininghttps://download.csdn.net/download/qq_43699362/85585058?ops_request_misc=%257B%2522request%255Fid%2522%253A%25225fb1922ab549e363d5c551d14bebd31a%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownload.%2522%257D&request_id=5fb1922ab549e363d5c551d14bebd31a&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~download~first_rank_ecpm_v1~rank_v31_ecpm-30-85585058-null-null.269^v2^control&utm_term=Spyglass%20Get%20Start&spm=1018.2226.3001.4451.31
? ? ? ? 本教程提供了在多個設計階段中運行SpyGlass的操作指導,旨在通過實操獲得對SpyGlass設置及其結果調試/分析的深入理解,涵蓋多個動手練習,每個練習之間是相互依賴的,需要按順序完成。
實驗概述
????????圖1展示了實驗使用設計的模塊框圖。該設計包含一個USB控制器和一個音頻解碼器核心(IMA_ADPCM),使用Wishbone總線協議,這些模塊通過Wishbone總線矩陣(WB_Connmax)相互連接,然后再通過Wishbone-to-AHB橋接模塊(wb2ahb)連接至AMBA AHB總線。順帶一提,該設計是一個混合語言RTL設計,即同時使用Verilog和VHDL。
圖1 設計框圖
實驗目錄的內容
????????教程目錄包含以下子目錄:
- rtl:與設計相關的RTL文件
- spyglass:實驗的工作目錄,所有SpyGlass的運行將在該目錄下進行
- doc:包含實驗文檔(即本手冊)
- tools:實驗中會使用到的其他腳本
實驗一、Spyglass概述
? ? ? ? 實驗一的目標是快速開始使用SpyGlass,在其中運行分析并查看結果。由于該案例將用于后續的多個實驗,建議將實驗一創建的項目文件保存以供以后使用。
????????實驗一中,為了簡便使用圖形用戶界面(GUI)創建一個項目文件作為起點,之后的實驗將繼續使用該項目文件以批處理方式(Batch)進行操作。
將設計讀入SpyGlass
1、進入名為spyglass的目錄。
% cd Training_labs/spyglass
2、使用以下命令啟動SpyGlass圖形界面(SpyGlass Explorer):
% spyglass
? ? ? ? 由于Spyglass是Synopsys收購自Atrenta,最初使用的GUI是Atrenta Console,但目前已經被新的SpyGlass Explorer替代,不再進行任何更新。感興趣的讀者可以通過添加-gui=console選項啟動Atrenta Console。
3、此時你將看到以下的主界面窗口:
圖1?SpyGlass Explorer
4、點擊窗口左欄的Add File(s),打開名為Add File(s)的窗口,在該窗口中添加以下來自rtl目錄的兩個RTL文件,如圖2所示。
rtl/ahb2wb.v
rtl/wb_subsystem.v
圖2?Add File(s)窗口
5、接著點擊窗口左欄的Set Options,然后設置頂層設計模塊為"wb_subsystem",如圖3所示。
圖3 設置頂層模塊
6、現在選擇Design Setup階段下的Read Design,勾選Synthesize Netlist選項框并點擊Run Design Read以啟動設計讀取(這其實是啟動了一個名為Design_Read的目標)。一旦運行完成,就可以查看SpyGlass報告的設計讀取錯誤,如圖4所示。
圖4?Design_Read的結果
? ? ? ? 注意圖4在Violations窗口選擇Group By Severity,可以看出有三個來自ErrorAnalyzeBBox規則的錯誤,SpyGlass沒有找到這些模塊的定義,因此將其標記為黑盒(black box)。
? ? ? ? 左邊的實例窗口(Instances)使用不同顏色的文件形狀標記狀態:
- 黃色:已綜合的最底層實例。
- 黑色:黑盒實例。
- 綠色:未綜合的最底層實例。
使用SpyGlass進行分析
1、選擇Goal Setup階段,并點擊lint_rtl目標,使其綠色高亮,所選目標的用途可以在右邊的Help窗口中查看,用于檢查設計中的基本連接性問題,例如輸入懸空、位寬不匹配等,如圖5所示。為了簡便,實驗一只勾選這一個目標,如果有多個目標被勾選,它們將會順序執行(順帶一提,lint_rtl目標是來自/Guideware/latest/block/rtl_handoff方法的lint子方法,Guideware是Spyglass提供的一些預設的檢查參考)。
圖5 選擇目標
2、點擊Run Goal(s),一旦運行完成,工具將自動跳轉至Analyze Results階段,還是在Violations窗口選擇Group By Severity,可以看出除了之前的三個來自ErrorAnalyzeBBox規則的錯誤,多了三個InferLatch規則的錯誤,雙擊選中第一個規則,相關的RTL代碼行將在上方的HDL查看器中被紅色高亮顯示,如圖6所示。
圖6?Lint的結果
? ? ? ? 可以看出RTL代碼中包含了不完整的if語句,這確實是導致Latch產生的原因,同時注意到三個InferLatch規則的左邊有NAND門符號,這代表可以查看用于調試的原理圖。可以使用快捷鍵I或者點擊Violations窗口上的符號查看原理圖,如圖7所示。
圖7 原理圖
? ? ? ? 可以看出hready信號綜合成了一個鎖存器,如果設計意圖就是需要hready信號相對于選通信號stb_o被鎖存,那么可以該規則進行豁免(waive);如果確實需要修復該問題,可以點擊RTL代碼行,并按下鍵盤上的快捷鍵e(或右鍵選擇Open Editor選項),Spyglass會使用默認文本編輯器(Vim)打開RTL文件并將光標定位到該行,如果想更改默認文本編輯器,可以看下面的博客。
Spyglass:更改默認編輯器https://chenzhang.blog.csdn.net/article/details/143947206
3、保存項目文件,點擊File選項欄下的Save Project,然后輸入wb_subsystem作為文件名),并退出。
4、使用文本編輯器打開項目文件wb_subsystem.prj,如下所示。
#!SPYGLASS_PROJECT_FILE
#!VERSION 3.0
# -------------------------------------------------------------------
# This is a software generated project file. Manual edits to this file could be lost during the next save operation
# Copyright Synopsys Inc.
# Last Updated By: SpyGlass SpyGlass_vW-2024.09-SP1
# Last Updated On Wed Apr 30 17:35:59 2025
#
# -------------------------------------------------------------------##Data Import Sectionread_file -type verilog ../rtl/ahb2wb.v
#BackRefFile:/home/zhangchen/Training_labs/spyglass/wb_subsystem.prj #LineNumber:13
read_file -type verilog ../rtl/wb_subsystem.v
#BackRefFile:/home/zhangchen/Training_labs/spyglass/wb_subsystem.prj #LineNumber:15##Common Options Sectionset_option projectwdir .
set_option language_mode mixed
set_option designread_enable_synthesis yes
set_option designread_disable_flatten no
set_option top wb_subsystem
set_option active_methodology $SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff##Goal Setup Sectioncurrent_methodology $SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff
? ? ? ? 可以看出,其中的Data Import Section包括了一些文件讀取的命令,而Common Options Section包括了工作目錄、語言模式、頂層設計和方法的設置。在實驗二中,需要繼續向項目文件中添加額外的命令和選項。