在转STIL/WGL/VCD pattern时,会遇到对signal处理的问题,常见的是需要实现如下功能:
- Pin重命名
- 只转部分pin
- 去掉一些pin
- 添加新的pin
在setup文件中添加以下参数均可实现:
1. Pin重命名
rename_signals={'STIL/WGL/VCD-signal-name ':'93k-pin-name',...} (STIL/WGL)
当STIL/WGL/VCD信号名称和93k信号名称不一致,在setup文件添加此参数,在转换过程中将STIL/WGL/VCD 信号名称重命名成93k信号名称。
例:rename_signals={'
STIL_Pin1':'93000_Pin1', 'STIL_Pin2':'93000_Pin2''}
# 在转pattern的时候,将‘STIL_Pin1/2’修改为‘93000_Pin1/2’
2. 只转部分pin
include_signals=['signal-name ',...] (STIL/WGL)
include_pins=['signal-name ',...] (VCD)
在setup文件添加此参数,则STIL/WGL/VCD文件中指定信号将转到93k pattern文件中。
例:include_signals=[' Pin1',‘Pin2’]
# 在转pattern的时候,只转‘Pin1’和‘Pin2'
3. 去掉指定的pin
exclude_signals=['signal-name ',...] (STIL/WGL)
exclude_pins=['signal-name ',...] (VCD)
在setup文件添加此参数,则STIL/WGL/VCD文件中指定信号将从93k pattern文件中排除,此参数和include_signals相反的,因此两个参数不能同时使用。
例:exclude_signals=[' Pin3']
# 在转pattern的时候,去掉‘Pin3’
4. 添加新的pin(使用命令行实现)
virtual_signals=[{'name':'signal-name ',['type':'signal-type ',]'opcode':'opcode ','args':arglist}, ...] (STIL/WGL)
在setup文件添加此参数,STIL/WGL/VCD 文件中不存在的信号添加到93k pattern文件中,就好像它们存在于STIL/WGL/VCD文件中一样。
# signal-name:需要添加的信号名称
# signal-type:信号类型,有三种类型供选择,分别为In、Out、InOut
# opcode:有三种类型供选择,分别为: Fixed、Copy、 Not
# Fixed:产生稳定(不变)的信号。 它需要两个参数,信号的状态(DUZLHXT 之一)和生成信号的时间长度。
# Copy:使信号成为另一个信号的副本。 它需要一个参数,即要复制的信号的名称。
# Not:使信号与另一个信号相反。 它需要一个参数,即要反转的信号的名称。
# arglist :参数列表。 每个参数必须是用引号括起来并用逗号分隔的字符串(如果需要两个参数); 整个列表用方括号括起来。 必须指定哪些参数取决于所选的运算符。
例: virtual_signals = [
{ 'name': 'Add_Pin1', 'type': 'InOut', 'opcode': 'Fixed', 'args': [ 'D', '20ns'] },
{ 'name': 'Add_Pin2', 'type': 'InOut', 'opcode': 'Copy', 'args': [ 'IO【1】'] },
]
# 添加pin:Add_Pin1;类型为:IO;指定drive沿:20ns;指定drive action:D
# 添加pin:Add_Pin2;类型为:IO;timing信息copy IO【1】这个pin
5. 添加新的pin(使用命令行实现)
default_definitions=['default_definitions.stil'] (STIL/WGL)
# default_definitions.stil:外部输入文件
文件里面包含用户在转pattern时需要添加的pins,文件格式和内容如下,其中:黑色加粗为语法部分,用户不可自定义;其余部分用户可自定义。具体请查阅附件:default_definitions.stil
----------------------------------------------------------------------------------------------------------STIL 1.0
#需要添加的Pin及Pin type
Signals {
"Add_Pin1" InOut;
"Add_Pin2" InOut;
}
#必须声明,即使为空
SignalGroups
{
}
#为添加的pin设定timing
Timing {
WaveformTable "const" {
Period '20ns';
Waveforms {
"Add_Pin1" { 0 {'0ns' D;} }
"Add_Pin2" { 1 {'0ns' U;} }
}
}
}
#为添加的pin设定waveform
MacroDefs
{
DefaultInit {
C { Add_Pin1 = 0; Add_Pin2 = 1; }
}
}
----------------------------------------------------------------------------------------------------------
备注:附件仅供参考,如有其他问题请联系我们。