【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命令用来设置相应的工作温度
Pin type definitions
Pin type定义每一个pin的电气特性,包括数字、模拟和其他一些常见的attributes。对于默认的configure.tcl文件,里面有一个名为default的pintype。用户可以根据需求自行额外定义不同的pintype。这里需要强调的一点是,pintype模块有继承性,即后面的pintype block可以继承之前的pintype block。
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参数的设置对table的value影响很大,因此把这一块单独拿出来介绍一下。设置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_rise和driver_pwl_fall,分别定义rise和fall的形状。这里需要注意的是,电压值需要归一化,介于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支持Hspice,Finesim,Hspice_embedded,Finesim_embedded等仿真器。simulator_cmd指定启动仿真器的命令行。关于以上参数的解释和用法,可以参照user guide。
再提两个参数 –
archive_condition_on_success
archive_condition_on_failure
这两个参数控制Spice仿真结果的存档方式,尤其在debug阶段经常会用到。有三个值,分别是yes ,no,compress。举个栗子,set archive_condition_on_success compress,将成功的仿真结果存档并压缩;yes,只存档但不压缩;no,只保存sof文件(供model步骤使用)不存档仿真结果。archive_condition_on_failure也是一样的,只不过针对的是出错的仿真结果的存档方式。
To be continued...
长按二维码关注我们