【SiliconSmart基础篇】了解基本文件及命令(上)

【SiliconSmart基础篇】了解基本文件及命令(上)

点击上面“蓝字”关注我们!

前面文章我们提到characterization所需的input文件包括:作为template的参考库(针对rechar flow)、netlist、相关工艺文件spice model等。除此之外,我们还需要一些必要的设置,这些设置主要体现在下面两种文件里:

 

configure.tcl文件主要针对library level的设置

 

<cell_name>.inst文件主要针对cell level的设置

 

SiliconSmart对这些参数都设有一个默认值,用户可以根据具体的应用场景灵活地调整参数。

  1

Global Settings – 全局设置

在特征化之前,用户必须先通过configure.tcl文件来设置工作环境,configure.tcl文件用来设置全局参数,这些参数将应用到所有的cells中。这个文件可以完全自行编辑,也可以拷贝一个template然后再修改。Template放在安装目录下-install_path/etc/configure.tcl,可以用create -legacy命令来自动拷贝到你的工作目录里。

 

configure.tcl主要定义了三块内容:

 

  • Operating conditions – 工作条件

 

  • Pin type definitions – pintype定义

 

  • Global configuration parameters – 全局配置参数

 

Operating conditions

 

Operating conditions就是我们熟知的PVT (工艺、工作电压、温度),我们可以定义任意多组,但是需要注意的是,每一组都必须独立开来(不一样的op_cond_name)。

 

create_operating_condition命令用来定义相应的PVT blocks –

 

set_opc_process命令用来指定相应的spice models

 

add_opc_supplies命令用来指定相应的工作电压

 

set_opc_temperature命令用来设置相应的工作温度

 

【SiliconSmart基础篇】了解基本文件及命令(上)

 

Pin type definitions

 

Pin type定义每一个pin的电气特性,包括数字、模拟和其他一些常见的attributes。对于默认的configure.tcl文件,里面有一个名为defaultpintype。用户可以根据需求自行额外定义不同的pintype。这里需要强调的一点是,pintype模块有继承性,即后面的pintype block可以继承之前的pintype block

 

【SiliconSmart基础篇】了解基本文件及命令(上)

【SiliconSmart基础篇】了解基本文件及命令(上)

 

 Pintype里的一些典型的options

 

  • Supply options

set logic_high_name VDD

set logic_low_name VSS

 

  • Delay/slew thresholds (trip points)

set logic_high_threshold 0.8

set logic_low_threshold 0.2

set prop_delay_level 0.5

set prop_delay_current 0.1

 

  • Active driver options

set driver_mode active

set driver BUFX16

set driver_rise_time 10e-12

set driver_fall_time 10e-12

 

  • Slew options

set numsteps_slew 5

set smallest_slew 10e-12

set default_slew 15e-12

set largest_slew 1.2e-9

set explicit_points_slew {0.1e-9 0.2e-9 0.3e-9 0.4e-9 0.5e-9}

 

  • Load options

set autorange_load pin

set numsteps_load 5

set smallest_load 10e-15

set default_load 40e-15

set largest_load 100e-15

set explicit_points_load {1e-15 3e-15 10e-15 25e-15 100e-15}

 

  • Constraints options

set constraints_numsteps_slew 3

set constraint_resolution 10e-12

 

library characterization过程中,diver参数的设置对tablevalue影响很大,因此把这一块单独拿出来介绍一下。设置driver的参数是driver_mode,使用的比较多的有以下几种driver类型:

 

  • pwl – 最简单的driver类型,就是一个简单的线性ramp斜坡。

set driver_mode pwl

 

  • emulated – 又叫ccs predriver,一种标准的非线性CCS timing波形。

set driver_mode emulated

 

  • active – 用一个driver cell(buffer或者inverter)驱动一个电容来产生实际的输入波形。注意,该类型的driver需要用import_driver命令把driver cell导入进来。

set driver_mode active

set driver “BUFX16”

 

  • active-waveform – active driver类似,不同的是,工具将记录driver的输出波形,后续的仿真将直接使用这个波形作为激励,因此,对driver的仿真只需要一次即可,避免了多次仿真。

set driver_mode active_waveform

set driver “BUFX16”

 

  • custom – pwl类似,用户可以自行定义波形的形状。配合这种driver使用的参数有driver_pwl_risedriver_pwl_fall,分别定义risefall的形状。这里需要注意的是,电压值需要归一化,介于0~1之间。

set driver_mode active_waveform

set driver_pwl_rise {0 0 0.1 0.05 0.2 0.1 0.35 0.25 0.55 0.8 0.7 0.98 1 1}

set driver_pwl_fall {0 1 0.1 0.98 0.2 0.8 0.35 0.6 0.55 0.4 0.7 0.3 1 0}

 

  • custom-perslew – custom类似,对每一个slew都可以设置不同的driver波形。

set driver_mode active_waveform

set driver_pwl_rise {{slew1} {t11 v1 t12 v2 ... t1n vn} ... {slewm} {tm1 v1 tm2 v2... tmn vn}}

set driver_pwl_fall {}

 

我们要根据自己的需求选择合适的driver_mode,确保characterization出来的table value准确。

列一下常见的需要修改的参数:

•      explicit_points_load

       explicit_points_slew

       initial_delay

       largest_load

       largest_slew

       logic_high_name

       logic_high_threshold

       logic_low_name

       logic_low_threshold

       numsteps_load

       numsteps_slew

       prop_delay_level

       smallest_slew

       smallest_load

       driver_mode

 

Globalconfiguration parameters

 

全局配置参数应用于整个library中所有cell中,在characterization之前必须定义这些参数的值(即使有default)。

       active_pvts

       job_scheduler

       normal_queue

       power_meas_supplies

       run_list_maxsize

       simulator

       simulator_cmd

       simulator_options

•       time_res_high

 

其中,simulator参数指定仿真器,SiliconSmart支持HspiceFinesimHspice_embeddedFinesim_embedded等仿真器。simulator_cmd指定启动仿真器的命令行。关于以上参数的解释和用法,可以参照user guide

 

再提两个参数

 

  •  archive_condition_on_success

  •  archive_condition_on_failure

这两个参数控制Spice仿真结果的存档方式,尤其在debug阶段经常会用到。有三个值,分别是yes nocompress。举个栗子,set archive_condition_on_success compress,将成功的仿真结果存档并压缩;yes,只存档但不压缩;no,只保存sof文件(供model步骤使用)不存档仿真结果。archive_condition_on_failure也是一样的,只不过针对的是出错的仿真结果的存档方式。

To be continued...

【SiliconSmart基础篇】了解基本文件及命令(上)

【SiliconSmart基础篇】了解基本文件及命令(上)

【SiliconSmart基础篇】了解基本文件及命令(上)

【SiliconSmart基础篇】了解基本文件及命令(上)

长按二维码关注我们