網站首頁 編程語言 正文
VIP Run-Time Control (.denalirc) Features
Product Version 11.3
August 2016
Contents目錄
1 Using Run-Time Control Files
1.1 Introduction
1.1.1 Existing Run-Time Control Operation
1.2 Enhancements
1.2.1 Using Model and Instance Qualifiers
1.2.2 Checking Parameter Name
1.2.3 Using Reserved Words
1.2.4 Including Files
1.2.5 Using Line Continuation
1.2.6 Undefining a Parameter
1.2.7 Using New Pattern Parameters
2 Run-Time Control Error Messages
2.1 Error Message Table
2.2 Multiple Pattern Match Warning
2.3 Messages to Help Locate Error Lines
3 Run-Time Control File Examples
3.1 Settings for Specific Instances and Models
3.1.1 Turning on History for Specific Instances
3.1.2 Priority of matching
3.1.3 Organizing Initialization Files by Model
3.1.4 Run-Time Control File Organization
1 運行控制文件的使用
1.1 引言
VIP模型運行控制是通過使用包含在運行控制文件中的參數設置進行管理的。這些文件提供了靈活的方式組織參數設置。運行時控制操作的幾個新可用更新允許你更精確的運用這些設置。本文檔提供了增強功能和現有操作的概述,因為大多數現有操作仍然可以向后兼容。
1.1.1 現有的運行控制操作
目前,運行時控制文件被稱為.denalirc文件,這是一個特定的文件名,而不是一種文件類型。它可以簡單地稱為運行時控制文件。
.denalirc文件是一個文本文件,包含對VIP存儲運行時選項的關鍵字-值對。安裝中默認的$DENALI/.denalirc文件包含描述所有參數的注釋。以#開頭的行是注釋,工具會忽略它。參數關鍵字不區分大小寫,但它們的值可以區分大小寫。
VIP使用.denalirc文件進行初始配置,如果沒有找到同名文件,則使用默認設置。
VIP需要.denalirc配置文件來控制仿真過程中的模型行為。這些工具按順序在以下位置查找.denalirc文件:
Location | Description |
---|---|
$DENALI/.denalirc | 系統默認 |
~/.denalirc | 用戶默認 |
./.denalirc | 指定仿真默認 |
$DENALIRC | 環境變量 |
如果設置了$DENALIRC
環境變量,并且在指定路徑中存在一個文件,則使用該文件。如果沒有設置$DENALIRC
(或者如果在指定位置沒有找到該文件),那么仿真器將在當前目錄中查找.denalirc,以此類推。
例如,如果您只想為特定的仿真更改一個設置,那么在工作目錄中創建一個.denalirc文件來存儲特定的仿真設置。
參數的格式如下:parameter-name parameter-value
實例:InitialMemoryValue RandomWithUpdate # update model with the random data so we get the same result for multiple reads使用隨機數據更新模型,因此我們多次讀取得到相同的結果'
在上面的例子中,一行中的空格會被忽略。
1.2 增強功能
運行控制文件操作有幾個簡單直觀的新特性。升級后的運行控制操作的一些優點是:
- 增強的運行控制文件語法
- 由于文件處理對仿真性能的影響可以忽略不計
- 未識別變量的錯誤信息,并且幫助定位錯誤行
- 在運行時控制文件中有效的行在用戶界面調用(例如TCL命令)中也有效
本文檔對以下特性進行了解釋,并在需要的地方舉例說明: - 使用模型和實例限定符
- 檢查參數名稱
- 使用保留字
- 使用行連續
- 包含文件
- 取消定義一個參數
- 使用新的模式參數
1.2.1 使用模型和實例限定符
通過使用限定符-instance和-model來指示參數定義的限定符,可以將運行控制文件專門應用于某些模型或實例。使用限定符來指定應用參數定義的實例的特定子集。
在參數值之后包含限定符,并在它們之后以下列格式列出實例或模型名:parameter-name parameter-value [-instance instance-list] [-model model-list]
實例列表是一個以空格分隔的實例路徑名或類似glob的模式列表。模型列表是一個以空格分隔的模型名稱列表。當沒有列表時,參數定義作為所有實例和模型的默認值。DifferentialClockChecks on -model lpddr4 flash
上面一行表明對于lpddr4或flash的所有實例,differalclockchecks是打開的。
如果參數定義包含一個實例,或者一個模型列表,那么該定義將覆蓋實例的默認定義,這些實例的名稱與指定的名稱或模式相匹配,并且其模型與指定的模型相匹配。
在指定實例列表時,可以通過在引號的路徑名稱中添加空格或其他特殊字符來處理轉義名稱。如果路徑名還包含引號字符,可以用兩個連續的引號字符來指定。
1.2.2 檢查參數名字
參數名稱將根據有效名稱列表進行檢查,任何無法識別的名稱都將導致錯誤。帶有無法識別參數的行將被忽略。參數名不區分大小寫。
- 每個參數都有一個與之相關聯的類型。有效的類型有布爾型、整數型、浮點型、字符串型和時間型。可以定義其他自定義類型。
- 檢查參數值以確保它們是正確的類型。不適當的值將導致錯誤。
- 對于布爾類型變量,可以使用任何標準布爾表示,如1/0、on/off、true/false、t/f、yes/no、y/n。這些布爾值不區分大小寫。
- 引號可以用來指定參數值字符串,這在大多數情況下是可選的。帶引號的字符串可以使用單引號或雙引號。然而,使用引號有一些條件。
– 如果您希望值包含一些可能被解釋為注釋或保留字的內容,請使用引號。
– 如果實例或模型名稱包含空格,則使用引號。
– 開始和結束引號不是字符串值的一部分。如果字符串值包含一個引號字符,可以用兩個連續的引號字符來表示。例如, HistoryFile "That’“s All folks!”. 這里, History file 的名字是That’s all Folks!。
1.2.3 使用保留字
There are four reserved words that may not be used as the name or unquoted value of a run-time
control parameter. They are:有四個保留字不能用作運行時控制參數的名稱或未加引號的值。它們是:
- Include
- -instance
- -model
- Undefine
但是,您可以使用上面的單詞之一作為帶引號的字符串的一部分。例如,HistoryFile “-modle”。在示例中,“-model”是一個帶引號的字符串,而不是關鍵字。
1.2.4 包含文件
It is now possible to have one run-time control file include other run-time control files by using the
include keyword in the following format:
現在可以通過以以下格式使用include關鍵字讓一個運行控制文件包含其他運行控制文件:include glob-like-filespec
術語"glob-like"意味著給定的字符串將按照unix風格的路徑名稱模式擴展。因此,給定的字符串可以包括環境變量名、波浪線、嵌套的shell命令等。如果global-like-filespec參數展開為多個文件路徑,它將生成一條錯誤消息,并且不包含任何文件。下面是包含行的示例:include $MY_INCLUDE_AREA/$MODEL/RunTimeControl.txt
1.2.5 使用行連續
行延續特性使其易于讀取和維護運行控制文件。行延續字符是一個反斜杠(),它用在一行中的最后一個字符。當在行尾使用時,下一行將被視為行的延續,忽略反斜杠后面跟著一個新行的兩個字符序列。例如,
InitialMemoryValue X -instance testbench.io \
testbench.i1 \
testbench.i2 \
如果反斜杠后面沒有緊跟新行,則保留為反斜杠。
注意,行延續檢測和處理先于注釋檢測。如果在開始注釋的行末尾有一個反斜杠,則注釋會繼續到下一行。反斜杠不會被忽略,就像它是注釋的一部分一樣。在下面的例子中,一些反斜杠沒有出現在行尾,注釋會繼續到下一行:
HistoryFile \george\histories\test1.his # this line uses a file path containing \
Blacklashes to demonstrate some backslashes \
That are not at the end of the line.
1.2.6 取消定義參數
參數定義擴充了當前的任何定義,但并不一定取代它。例如,一個文件中的ErrorMessages定義可以在某些情況下定義為On,而在其他情況下定義為Off。要完全刪除一個參數的所有定義,可以使用undefine命令。
例如,未定義ErrorMessages命令將刪除之前的任何定義。
以前,定義參數將覆蓋該參數以前的任何定義。
1.2.7 使用新模式參數
通過添加新的實例限定符增強,您可以為許多運行參數指定實例名稱或模式。但是,一些現有的參數已經被設計為通過接受一個“實例名稱模式”的參數來操作特定的實例,例如HistorPattern參數。此模式用于以類似glob的方式匹配實例名。
只有名稱匹配模式的實例才會受到參數的影響。例如,HistorPattern只記錄名稱與參數指定的模式匹配實例的歷史。
其他現有的模式參數包括EnableCoverage, DisableCoverage, EnableProtocolChecks, DisableProtocolChecks, SuppressPortContention,SuppressUnknownAddrReadError, SimulationDatabasePattern, ErrorOnWritethroughTracePattern.
按照當前的設計使用這些模式參數可能有些尷尬,因為您只能指定一個模式。很難找到指定所需實例的精確子集的單一模式。
Cadence VIPs正在用一組更直觀命名的參數替換這些模式參數,然后可以將這些參數與新的實例限定符一起使用,從而更容易地設置模式。例如,為了取代現有的HistoryPattern參數,VIPs現在支持一個新的History參數。為了向后兼容,仍然支持現有的模式參數,但您將希望遷移到新的參數,特別是當它幫助您設置您想要的模式時。
下表比較了兩個模式參數—HistoryPattern和TracePattern—與它們的新對應參數。Examples列展示了如何使用現有參數和新參數來實現等價的實例匹配。
在所有模式運行參數中,只有HistoryPattern和TracePattern參數此時實現了新的增強參數。
You may continue to use the existing pattern parameters, but if you use both old and new, be aware
that the new parameters take precedence. For example, if you use both HistoryPattern and
History, the settings for History take precedence.
您可以繼續使用現有的模式參數,但是如果同時使用新舊模式參數,請注意新參數優先。例如,如果您同時使用HistoryPattern和
“History”,優先設置“History”。
作為新語法如何簡化模式使用的另一個示例,假設您想要消除模式參數的影響。假設您想保存除匹配模式以外的所有實例的歷史數據。使用現有的historpattern參數沒有辦法做到這一點,但是使用新的語法你可以很容易地說:
History on # history is on by default
History off -instance test* # but history is off for any instances matching this pattern
關于使用新的History參數而不是舊的HistoryPattern模式參數的另一個例子,請參閱Run-Time Control File Examples運行時控制文件示例。
2 運行控制錯誤信息
2.1 錯誤信息表
以下是在讀取運行時控制文件時可能發生的錯誤消息列表:
2.2 多模式匹配警告
在運行過程中可能會出現以下警告消息:
RTC parameter name has multiple pattern matches for instance-name:
details
當運行代碼試圖檢索實例instance-name的參數名稱的值,并且發現與實例名稱匹配的多個模式時,會出現此消息。例如,假設您設置了以下行:
DifferentialClockSkew 100 ps -instance test* *1 *2 # suppose this is line 5 in ./.denalirc
DifferentialClockSkew 120 ps -instance t* # suppose this is line 20 in ./myParams
如果運行的代碼試圖獲取一個名為testbench.i1實例的參數DifferalClockSkew的值。將檢測到多個模式匹配。這是因為testbench.i1匹配test*,匹配1,也匹配t。因為對于使用哪個值是不明確的,所以會打印警告消息。在這種情況下,所使用的值將始終是最近的匹配,因為這種選擇與允許后面的參數定義覆蓋前面的參數定義的做法是一致的。所以在這個例子中,選擇的值將是120ps。警告消息的詳細信息部分指出找到了哪些匹配,以及這些模式出現在哪里。在本例中,警告如下:
RTC parameter DifferentialClockSkew has multiple pattern matches for testbench.i1:
*1 (from line 5 in ./.denalirc)
test* (from line 5 in ./.denalirc)
t* (from line 20 in ./myParams)
Using pattern t* with value 120 ps
##2.3 幫助定位錯誤行的消息
由于添加了include文件,現在重要的是要指出導致錯誤的文件。如果錯誤是由從運行控制文件中讀取的行引起的,則錯誤消息將在前面加上:At line line-number in Run-Time Control File file-name
此外,如果使用了嵌套的include文件,則對上面這一行進行擴充以顯示嵌套路徑。例如:
At line line-number in Run-Time Control File file-name
included at line line-number in Run-Time Control File file-name
included at line line-number in Run-Time Control File file-name
...
示例消息:
At line 5 in Run-Time Control File ./.denalirc:
Unrecognized parameter name: HistiryFile
At line 3 in Run-Time Control File ./myInclude
included at line 6 in Run-Time Control File ./.denalirc:
Illegal Integer value '2.5' for parameter 'ErrorCount'
3 運行控制文件實例
3.1 特定實例和模型的設置
下面的例子展示了特定實例和模型的參數定義。
- 為特定實例打開歷史記錄
- 匹配優先級
- 根據模型組織初始化文件
- 運行控制文件組織
3.1.1 為特定實例打開歷史記錄
下面的例子展示了History如何比historpattern更容易使用:
HistoryFile myTest.his
History off # turn off history by default
History on -instance testbench.ddr_II.inst04 testbench.ddr_II.inst82
History on -instance testbench.ddr_II.inst45
上面的示例僅為指定的三個實例打開歷史記錄。注意,沒有一個歷史行覆蓋前面的行,因為它們引用不同的實例。
要通過使用HistorPattern實現相同的結果,需要一個只匹配三個所需實例的glob模式。這樣的模式甚至是不可能的。嘗試使用多個HistorPattern行將不起作用,因為后續的HistorPattern行將覆蓋前面的行。
3.1.2 匹配的優先級
給定的實例名可以匹配特定參數的多個模式。在這種情況下,有一個優先順序來進行匹配。
- 首先,檢查實例名是否與實例限定符完全匹配。
- 如果沒有完全匹配,接下來將檢查該名稱是否同時匹配實例模式和模型。
- 如果沒有匹配,接下來將單獨檢查名稱是否匹配模式。
- 如果沒有匹配,則只檢查模型匹配。
- 最后,如果仍然沒有匹配,則使用默認值。
考慮以下幾行:
InitialMemoryValue 0
InitialMemoryValue 1 -instance testbench.i0
InitialMemoryvalue 2 -instance test* -model usb
InitialMemoryValue 4 -instance *.i0 *.i1
InitialMemoryValue 8 -model ddr_II
- 如果我們有一個名為testbench.i0的usb實例,則使用值1,因為名稱是testbench.i0的精確匹配。
- 如果我們有一個名為testbench.i1的usb實例,使用值2,因為有名稱test*的匹配和usb模型的匹配。
- 如果我們有一個名為testbench.i1的ddr_II實例,使用值4,因為只有*.i1的名稱匹配。
- 如果我們有一個名為testbench.i2的ddr_II實例,使用值8,因為只有模型ddr_II的匹配。
- 如果我們有一個名為top.i5的usb實例,則使用值0,因為名稱和模型與任何其他行都不匹配。
3.1.3 根據模型組織初始化文件
包含文件的功能使您可以很容易地按模型對變量進行分組。例如,一組用于usb模型的變量可以全部放在一個文件中。然后,該文件將包含在一個標準運行控制文件中,例如./.denalirc。為了確保include文件中的參數只應用于usb,可以在每行的末尾加上“model usb”。
當重新組織現有的運行控制文件以利用新特性時,您可能需要考慮以下檢查表:
- 是否有一些參數,您希望站點上的每個人都使用默認值?考慮把這些放入
d
e
n
a
l
i
/
.
d
e
n
a
l
i
r
c
中
。
您
也
可
以
將
它
們
放
入
一
個
文
件
中
,
例
如
′
s
i
t
e
w
i
d
e
.
R
t
c
′
,
然
后
在
denali/.denalirc中。您也可以將它們放入一個文件中,例如'sitewide.Rtc',然后在
denali/.denalirc中。您也可以將它們放入一個文件中,例如′sitewide.Rtc′,然后在denali/.denalirc包含這個文件。
記住,用戶總是可以在他們自己的RTC文件中重寫缺省值。
- 是否有需要您自己的默認值的參數?把它們放到/.denalirc中,或者放到/.denalirc包含的文件中。
- 將特定的test的參數添加到test目錄中的.denalirc文件,以便將它們加載為./.denalirc。另外,您可以將環境變量DENALIRC設置為您想要的文件。
- 如果您有特定于模型的參數,考慮將它們添加到一個特定于模型的運行控制文件中,然后您就可以包含該文件。
- 如果您有以模型名稱開始的參數,請檢查是否可以用新的通用參數和模型限定符替換它們。例如,PcieHistoryPktSize 4096可以升級為HistoryPktSize 4096 model pcie。請參閱Using New Pattern Parameters一節。
- 如果您有現有的“pattern”參數,請嘗試按照UsingNew Pattern Parameters的描述替換它們。
3.1.3 運行控制文件組織
下面的示例演示了如何有效地使用新的運行控制增強功能。為此,將重寫使用模型pcie、usb和ddr4sdram仿真的運行控制文件。
- 選擇以下原始運行時控制文件進行重寫。
現有運行控制文件
AssertionCoverageFile assert.statsAssertionChecklistFile check.stats
PcieTransLogTypes tlp dllp os
PcieTLBypassInit 1
HistoryFile denali.history
HistoryDebug On
HistoryDebugLoad On
TraceFile denali.trc
LicenseQueueTimeout 120
LicenseQueueRetryDelay 60
PcieUnknownPLValue 2
PcieHistoryPktSize 4096
UsbBypassReset 0
UsbProcessPhyAfterDisconnect 1
UsbBypassTraining 0
UsbBypassInit 0
UsbBypassLmpInit 0
InitialMemoryValue RandomWithUpdate
UsbAutoDeviceEnumeration 1
UsbAcceptJKForChirp 1
UsbAcceptSe0ForHSIdle 1
UsbAcceptJForFSLSIdle 1
InitChecks 1
TimingChecks 1
RefreshChecks 1
ErrorMessages on
LicenseQueueOnlyWhenAllInUse 0
ReadDQSContentionCheck 1
InitMessages Off
ClockStableCycles 20
RandomOutputDelay 0
InitChecksPauseTime 0
noXsInReadData 1
tracepattern testbench.i0.micron_mt18
- 一些常用參數例如LicenseQueueTimeout, LicenseQueueRetryDelay,LicenseQueueOnlyWhenAllInUse, HistoryFile和TraceFile被放到一個單獨文件以便如果需要站點默認值,所有測試可以很容易的加載。假設站點管理員將一些公共參數放入
$SITE_RTC
指向的文件中。一些參數可能具有典型的站點范圍的值。每個測試仍然可以根據需要覆蓋單個參數。
LicenseQueueTimeout 120 # wait 2 minutes before timing out
LicenseQueueRetryDelay 60 # retry every minute
LicenseQueueOnlyWhenAllInuse 1
HistoryFile denali.his # get history by default. user can turn off if they want
TraceFile denali.trc # same for trace
- 原始文件中的其他參數似乎是特定于模型的。假設一個項目經理已經指定了一組用于各種模型的默認參數。他可以將每個模型的單獨文件存儲在(例如)所指向的目錄中
$PROJ_MODEL_RTC_DEFAULTS
,并告訴用戶在他們使用的模型中包含這些。項目經理可能在$PROJ_MODEL_RTC_DEFAULTS
中創建以下文件
:
ddr4sdram
InitChecks 1
TimingChecks 1
RefreshChecks 1
InitialMemoryValue X -model dd4sdram
pcie
PcieTLBypassInit 1
PcieUnknownPLValue 1
usb
UsbBypassReset 0UsbProcessPhyAfterDisconnect 1
UsbBypassTraining 0
UsbBypassInit 0
UsbBypassLmpInit 0
InitialMemoryValue RandomWithUpdate -model usb
UsbAutoDeviceEnumeration 1
UsbAcceptJKForChirp 1
UsbAcceptSe0ForHSIdle 1
UsbAcceptJForFSLSIdle 1
- 最后,可以重寫運行時控制文件,如下所示:
新的運行控制文件
# load our site-wide common defaults
include $SITE_RTC
# get standard pcie parameters
include $PROJ_MODEL_RTC_DEFAULTS/pcie.rtc
# but for this test, we need these pcie overrides:
PcieTransLogTypes tlp dllp os
PcieUnknownPLValue 2
PcieHistoryPktSize 4096
# get standard usb parameters
include $PROJ_MODEL_RTC_DEFAULTS/usb.rtc
# but use the following usb values for this test
UsbBypassReset 0
InitialMemoryValue 0 model usb
UsbAutoDeviceEnumeration 0
# include project defaults for dd4sdram
include $PROJ_MODEL_RTC_DEFAULTS/dd4sdram.rtc
# include my test-specific dd4sdram parameters
include ./dd4sdram.rtc
# trace only this one instance:
Trace off # turn off by default
Trace on -instance testbench.i0.micron_mt18 # this is the only one I am interested in
# a few other things I want specific for this run:
HistoryDebug On
HistoryDebugLoad On
AssertionCoverageFile assert.stats
AssertionChecklistFile check.stats
原文鏈接:https://blog.csdn.net/Michael177/article/details/125710988
相關推薦
- 2022-12-05 C++?Boost?Heap使用實例詳解_C 語言
- 2022-03-30 Docker?鏡像分層及dockerfile?編寫技巧_docker
- 2022-12-21 C語言中continue的用法詳解_C 語言
- 2022-08-12 windows?bat批處理判斷電腦服務是否運行的問題_DOS/BAT
- 2023-05-09 Oracle中分割字符串的方法實例代碼_oracle
- 2022-12-05 Go?reflect?反射原理示例詳解_Golang
- 2022-10-12 pandas學習之df.fillna的具體使用_python
- 2022-06-10 基于PyQt5制作一個群發郵件工具_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支