扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

基于Voltus工具的上下电时间分析

2025/11/07
2772
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

实际上要用的输入件是pwl PGV(PieceWise Linear power-grid view library),不过有时候可能无法直接得到memoeyr pwl PGV文件,需要使用memory Avm文件转换得到。

Mem Avm文件

集成电路设计和验证领域,Memory AVM 文件是一种与内存相关的配置文件,通常用于功率分析和验证工具(如 RedHawk)中。以下是关于 Memory AVM 文件的详细信息:

AVM 文件的用途:Memory AVM 文件是由 Memory Compiler 生成的,用于描述内存单元的电气特性。它类似于标准单元的 APL 文件,用于在功率分析工具中提供更准确的电流电容信息。AVM 文件通常包含内存单元的泄漏电流耦合电容等信息,这些信息对于准确模拟内存单元在不同工作条件下的功耗至关重要。

AVM 文件的生成:在使用 Memory Compiler生成内存单元时,会自动生成 AVM 文件。如果没有自动生成,可以通过配置文件(如 avm.conf)手动生成。例如,在 RedHawk 的配置文件中,可以指定 AVM 文件的路径和名称,工具会根据这些配置生成相应的 AVM 文件。

AVM 文件的格式和内容:AVM 文件的格式类似于 APL 文件,包含内存单元的电气参数,如泄漏电流、耦合电容等。这些参数对于功率分析工具(如 RedHawk)在进行动态功耗分析时非常重要。

AVM 文件在功率分析中的作用。在功率分析工具中,AVM 文件提供了内存单元在不同工作条件下的电流和电容信息,使得工具能够更准确地模拟内存单元的功耗。通过使用 AVM 文件,可以提高功率分析的准确性,尤其是在动态功耗分析中。

memory trigger.txt

在集成电路设计和验证领域,trigger.txt 文件通常用于定义触发器(Trigger)的配置信息,特别是在功率分析和验证工具中。这些触发器用于监控电路中的特定事件,如电流或电压的变化,以检测潜在的故障或异常行为。

trigger.txt 文件的用途。功耗分析:监控电路中的电流或电压变化,以检测异常功耗。故障检测:检测电路中的短路、漏电等故障。信号完整性分析:监控信号的完整性,确保信号在传输过程中没有失真或干扰。

trigger.txt 文件的内容。触发器的名称:每个触发器都有一个唯一的名称,用于标识和引用。触发条件:定义触发器触发的条件,如电流或电压的阈值。监控对象:指定触发器监控的电路节点或信号。动作:触发器触发后执行的动作,如记录日志、发出警报等。

以下是一个简单的 trigger.txt文件示例:

# Trigger configuration file

# Trigger name

trigger_name: current_monitor

# Trigger type (current or voltage)

trigger_type: current

# Node to monitor (e.g., power rail)

node: VDD

# Threshold value (e.g., 100 mA)

threshold: 100

# Action to take when trigger is activated

action: log

Memory PWL PGV

PWL(PieceWise Linear)文件是一种用于描述波形的文本文件,通常用于电路仿真工具(如 SPICE)中。PWL 文件可以定义任意波形,这些波形可以用于模拟各种信号,包括电源电压、时钟信号、数据信号等。

在内存仿真中,PWL 文件通常用于定义内存单元的电源电流或地电流波形。这些波形可以用于功率分析工具(如 Voltus IC Power Integrity Solution)中,以更准确地模拟内存单元在不同工作条件下的功耗。

PWL 文件的格式通常包括时间点和对应的电压或电流值。每个时间点和对应的值用逗号分隔,每行表示一个数据点。例如:

1.000000, 34.358040

2.000000, 34.338650

3.000000, 34.365350

4.000000, 34.380930

5.000000, 34.366310

在内存仿真中,PWL 文件可以包含电源电流或地电流的波形数据。例如,在 Voltus 中,PWL 文件可以用于定义内存单元的动态电流。

PWL 文件在内存仿真中的应用。在内存仿真中,PWL 文件可以用于以下场景。动态电流仿真:通过定义内存单元在不同工作条件下的电流波形,PWL 文件可以帮助功率分析工具更准确地模拟内存单元的动态功耗。信号完整性分析:PWL 文件可以用于定义信号的波形,帮助分析信号在传输过程中的完整性。

以下是一个在 Voltus 中使用 PWL 文件的示例:

#Memory cell name

CELL

Name of the memory cell

 

#Mode and conditional details for trigger

MODE_NAME CONDITIONAL_INPUT

CONDITIONAL_PIN (rise|fall|both)

CONDITIONAL_STIMULUS_FILE

USER_PWL_FILE

在这个示例中,USER_PWL_FILE 指定了一个 PWL 文件,该文件包含了内存单元的电流波形数据。这些数据用于模拟内存单元在特定工作条件下的动态电流。

总结来说,PWL 文件是一种强大的工具,可以用于定义任意波形,广泛应用于电路仿真中,包括内存仿真。通过使用 PWL 文件,可以更准确地模拟内存单元的动态功耗,从而提高功率分析的准确性。

Memory Decap File

在集成电路设计和验证领域,Decap File(去耦电容文件)通常用于描述去耦电容(Decoupling Capacitors)的配置和布局信息。去耦电容用于减少电源线上的电压波动,确保电路的稳定工作。

Decap File 的用途。电源完整性分析:Decap File 用于描述去耦电容的配置,帮助电源完整性分析工具(如 RedHawk)更准确地模拟电源网络的动态行为。优化电源网络:通过合理配置去耦电容,可以减少电源线上的电压降和噪声,提高电路的性能和可靠性。

Decap File 通常包含以下内容。去耦电容的实例名称**:每个去耦电容的唯一标识。电容值:去耦电容的电容值,通常以皮法拉(pF)为单位。布局位置:去耦电容在电路中的布局位置。连接信息:去耦电容连接的电源和地线信息。

Decap File 的格式通常由特定的工具(如 RedHawk)定义。以下是一个简单的 Decap File 示例:

# Format:

 

decap1 100pF (100, 200) VDD-GND

decap2 200pF (300, 400) VDD-GND

通过memory  AVM文件生成memory trigger.txt

脚本flow片段如下。

foreach ram_lib      $ram_library(ff_0p125v)  {

set avm [lindex  [split $ram_lib .] 0].avm

exec grep -v "#" $avm > temp_avm

bash user_low_power/IR/sed_temp_avm.sh

set wf [open temp_avm r]

set wff [split [read $wf] n]

close $wf

set in_file user_low_power/IR/mem_trigger_txt/[lindex  [split [lindex  [split $ram_lib .] 0] /]   [expr [llength [split [lindex  [split $ram_lib .] 0] /]] - 1 ]]_trigger.txt

 

if {[regexp avm_read_desel $wff]} {

#MODE avm_read_desel

echo "CURRENT_CHARACTERIZATION_METHOD DATASHEET" >> $in_file

echo "CELL [lindex [lindex $wff 0] 0]" >> $in_file

echo "MODE READ_DESEL" >> $in_file

 

grep {state_boolean avm_read_desel} temp_avm > temp_avm1

bash user_low_power/IR/sed_temp_avm1.sh

set wf1 [open temp_avm1 r]

set wff1 [split [read $wf1] n]

close $wf1

echo "CONDITIONAL_INPUT = [lindex [split [lindex $wff1  ] " "] 4]" >> $in_file

 

echo "CONDITIONAL_PIN = CLK {rise}"  >> $in_file

 

grep {tsu avm_read_desel} temp_avm > temp_avm1

set wf1 [open temp_avm1 r]

set wff1 [split [read $wf1] n]

close $wf1

echo "CONDITIONAL_PIN_REFERENCE_TIME [lindex [lindex $wff1 0] 2]" >>  $in_file

grep {ck2q_delay avm_read_desel} temp_avm > temp_avm1

set wf1 [open temp_avm1 r]

set wff1 [split [read $wf1] n]

close $wf1

echo "DATASHEET_DELAY [lindex [lindex $wff1 0] 2]" >> $in_file

 

for {set i 0} {$i < [llength $wff]} {incr i} {

if {[regexp "Cpd avm_read_desel"  [lindex $wff $i]]} {

set p1 [lindex [lindex $wff [expr $i + 1]] 2]

set p3 [lindex [lindex $wff [expr $i + 2]] 2]

echo $i

}

 

if {[regexp "LEAKAGE_I"  [lindex $wff $i]]} {

set p2 [lindex [lindex $wff [expr $i + 1]] 2]

set p4 [lindex [lindex $wff [expr $i + 2]] 2]

echo $i

}

 

if {[regexp "PEAK_I avm_read_desel"  [lindex $wff $i]]} {

set p5 [lindex [lindex $wff [expr $i + 1]] 2]

set p6 [lindex [lindex $wff [expr $i + 2]] 2]

echo $i

}

}

echo "DATASHEET_PARAMETER {{ VDDCE $p1 $p2} { VDDPE $p3 $p4}}" >> $in_file

echo "PEAK_CURRENT { {VDDCE $p5} {VDDPE $p6} }" >> $in_file

 

echo "END_MODE" >> $in_file

生成memory decap file

参考脚本如下。

set data [exec date +%m%d%H]

source ../scripts/config.tcl

 

foreach ram_lib      $ram_library(ff_0p125v)  {

set avm [lindex  [split $ram_lib .] 0].avm

exec grep -v "#" $avm > temp_avm

bash user_low_power/IR/sed_temp_avm.sh

set wf [open temp_avm r]

set wff [split [read $wf] n]

close $wf

 

set in_file user_low_power/IR/mem_trigger_txt/[lindex  [split [lindex  [split $ram_lib .] 0] /]   [expr [llength [split [lindex  [split $ram_lib .] 0] /]] - 1 ]].decap_file

echo "CELL [lindex [lindex $wff 0] 0]" >> $in_file

grep {Cload} temp_avm > temp_avm1

set wf1 [open temp_avm1 r]

set wff1 [split [read $wf1] n]

close $wf1

set cap [lindex [lindex $wff1 0] 1]

echo "PIN VDDPE $cap" >> $in_file

echo "PIN VDDCE $cap" >> $in_file

echo "PIN VSSE $cap" >> $in_file

echo "" >> $in_file

}

 

由memory trigger.txt文件和memory decap file文件生成pwl PGV文件

参考脚本如下。

read_lib -lef ../data/lef/gsclib090_tech.lef

../data/lef/TS1024x86.lef

#Script used for generating macro power-grid library

set_pg_library_mode

-ground_pins VSS

-cell_list_file ../data/voltus/macro.list

-power_pins {VDD 0.9}

-celltype macros

-lef_layermap ../data/voltus/lefdef.layermap

-cell_decap_file ../data/pwl/TS1024x86.decap

-current_distribution "dynamic_simulation ../data/pwl/TS1024x86_trigger.txt"

-temperature 125

-extraction_tech_file ../data/qrc/gpdk090_9l.tch

set_advanced_pg_library_mode

-libgen_command_file ../tcl/libgen_mem_port.cmd

generate_pg_library -output macro_TS1024x86

 

libgen_mem_port.cmd文件参考内容如下。

setvar skip_switch_net_extraction true

setvar generate_port_dynamic_powerview true

setvar max_itfnode_dist 2

 

分析IR和上下电时间

核心命令如下。

set_rail_analysis_mode

-method                       dynamic

-accuracy                     hd

-power_grid_library           ${pgv_files}

-limit_number_of_steps        false

-ignore_shorts                true

-temperature                  125

-enable_scheduler             true

-enable_ntx_extraction        true

-extraction_tech_file       $qrc_tech_ff

-powering_up_rails            { VDD_OFF }

-unified_power_switch_flow            true

-enable_xp true

-temp_directory_name ./tmp_dynamic

-report_power_in_parallel true

 

set_advanced_rail_options -voltus_rail_include_file_begin user_low_power/IR/rail.inc

 

analyze_rail

-type domain

-results_directory ../vt_db/pu_domain_${date}

$deign

如何检查生成的mem avm是否正常

在Votuls中打开波形。

 

单口(sp)ram波形参考。

双口(2p)ram参考波形。

怎么看报告

浪涌电流和上下电时间关键字:

查看MTCMOS是否全部正常启动关键字:

单个MTCMOS的启动时间和peak current关键字:

参考资料和系列文档已上传至星球。加入星球,谈谈芯事

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录