1.用$shm_open系统任务打开一个SHM database。
$shm_open的语法如下所示:
= $shm_open("db_name",is_sequence_time,db_size,is_compression);
4个arguments是可选的。
"db_name"——指定仿真database的文件名。如果你不指定database name,一个名为wave.shm的database在当前目录被打开。
is_sequence_time——Dumps(转储)所有的值变化到database。默认在正探测一个SHM database时,仿真器丢弃一个 目标在一个仿真时刻的多个值变化,并只转储仿真时间结束时的最后值。如果你想转储一个值到SHM database,指定1给is_sequence_time。你可以使用SimVision波形查看器展开仿真时间的瞬间去展示发生在那时的一系列变化。
db_size—指定转换文件(.tm file)的最大值(以byte为单位)。仿真器为了转储新的值,通过丢弃更早记录的值维持转换文件的大小,以致database总是包含每个探测目标的最新值。当大小限制被超出时,波形窗口显示一个“unknown”值给每一个目标从仿真开始时到第一个非丢弃值的时刻。即使你指定了更低的限制,SHM database还会使用近似2.5Mb的磁盘空间。然而看,如果限制大于2.5Mb,database大小将不能超出。
is_compression——压缩SHM database去减小它的大小。默认设置为0.指定1区压缩database文件。
2.$shm_probe允许你指定想在SHM database中记录值变化的编号,并允许你指定被记录值变化的nodes。
$shm_probe的语法如下所示:
$shm_probe[(scop1,"node_specifier1",scope2,"node_specifier2",...)];
$shm_probe的arguments是可选择的。如果你不指定arguments,$shm_probe writes the value changes that occur at all inputs , outputs,and inouts in the current scope to your SHM database.
Node specifiers:
"A"=All nodes.
"C"=input/output/input,include nodes in library cells.
"M"=Probe changes to memory.
"T"=Probe tasks.
"F"=Probe functions.
"S"=input/output/input,exclude noodes in library cells.