smic memory生成,lib转db

1、smic的memory生成
执行sram_sp_hd_rvt_rvt出现配置单口sram的界面。
执行sram_dp_hd_rvt_rvt出现配置双口sram的界面。
执行rf_sp_hd_rvt_rvt出现配置单口regfile的界面。
在这里插入图片描述
Multiplexer Width影响sram的形状,偏向块状还是条形装
Word-Write Mask配置是否可按byte操作(即WEN是1比特还是多比特)
Top Metal Layer是金属层配置
VIEWS选择Synopsys Model可以修改默认的library名USERLIB为其它名字

2、lib转db
上一步生成的lib文件需要工具转换为db文件,以供design compiler综合。
这个转换工具就是Library Compiler,和dc_shell是在同一个目录bin文件夹下。
工具名是lc_shell。也可用lc_shell-t工具
(1)输入lc_shell后进入命令界面,在这里插入图片描述

(2)输入read_lib xxx.lib,读取lib文件,结果会显示
在这里插入图片描述
其中1表示成功,SRAM_4096X48_SP_nldm_ss_1p08v_1p08v_125c是library名,用于下一步
(3)输入write_lib library名 -format db -output xxx.db
这里的library名就是第2步回显的SRAM_4096X48_SP_nldm_ss_1p08v_1p08v_125c,跟read_lib xxx.lib的xxx值不一定一样。

另:模拟模型的lib文件格式可参考数字集成电路低功耗物理实现技术与UPF
附一个模板

library(ana_top) {

 /* unit attributes */
  time_unit : "1ns";
  voltage_unit : "1V";
  current_unit : "1uA";
  pulling_resistance_unit : "1kohm";
  leakage_power_unit : "1nW";
  capacitive_load_unit(1,pf);

    /* threshold definitions */
    slew_lower_threshold_pct_rise :  10 ;
    slew_upper_threshold_pct_rise :  90 ;
    slew_lower_threshold_pct_fall :  10 ;    
    slew_upper_threshold_pct_fall :  90 ;
    input_threshold_pct_fall      :  50 ;    
    input_threshold_pct_rise      :  50 ;
    output_threshold_pct_rise     :  50 ;
    output_threshold_pct_fall     :  50 ;
    slew_derate_from_library      :  0.5;
  

/********************************************************************/ 
    nom_process     : 1.000; 
    nom_temperature : 125.000;
    nom_voltage     : 1.08; 
    
    operating_conditions("ss_V1p08_125C"){
        process     : 1.0;
        temperature : 125;
        voltage     : 1.08;
        tree_type   : "balanced_tree" ;
    }
    default_operating_conditions  : ss_V1p08_125C; 

/********************************************************************/
    voltage_map(PAD_VSSA   , 0.0);
    voltage_map(PAD_VDDA   , 1.2);
    voltage_map(VDD_CORE ,1.2);

 type (bus_1_0) { 
   base_type : array ; 
   data_type : bit  
   bit_width : 2   
   bit_from : 1  
   bit_to : 0 ; 
   downto : true ; 
 } 
 type (bus_11_0) { 
   base_type : array ; 
   data_type : bit  
   bit_width : 12   
   bit_from : 11  
   bit_to : 0 ; 
   downto : true ; 
 } 



  cell(ana_top) {
    area : 10000;
    pg_pin (PAD_VSSA) { 
	voltage_name : PAD_VSSA ;
	pg_type : primary_ground; 
    } 
    pg_pin (PAD_VDDA) { 
	voltage_name : PAD_VDDA ;
	pg_type : primary_power; 
    } 
    pin(PAD_WAKEUP) { 
	direction : inout ;
	capacitance : 0.001; 
    } 
    pg_pin (VDD_CORE) { 
	voltage_name : VDD_CORE ;
	pg_type : primary_power; 
    } 
    pin(adc_in0) { 
	direction : inout ;
	capacitance : 0.001; 
    } 
    pin(adc_in1) { 
	direction : inout ;
	capacitance : 0.001; 
    } 
    pin(adc_in2) { 
	direction : inout ;
	capacitance : 0.001; 
    } 
    pin(adc_in3) { 
	direction : inout ;
	capacitance : 0.001; 
    } 
    pin(pll_force_lock) { 
	direction : input ;
	max_transition : 2.5;
	capacitance : 0.001; 
    } 
    pin(pll_enable) { 
	direction : input ;
	max_transition : 2.5;
	capacitance : 0.001; 
    } 
    pin(adc_enable) { 
	direction : input ;
	max_transition : 2.5;
	capacitance : 0.001; 
    } 
    pin(adc_clk) { 
	direction : input ;
	max_transition : 2.5;
	capacitance : 0.001; 
    } 
    pin(enable_irc) { 
	direction : input ;
	max_transition : 2.5;
	capacitance : 0.001; 
    } 
    pin(nrst_b) { 
	direction : output ;
	capacitance : 0.001; 
    } 
    pin(pll_clkout) { 
	direction : output ;
	capacitance : 0.001; 
    clock : true;
    } 
    pin(pll_locked) { 
	direction : output ;
	capacitance : 0.001; 
    } 
    pin(adc_valid) { 
	direction : output ;
	capacitance : 0.001; 
    } 
    pin(irc_clkout) { 
	direction : output ;
	capacitance : 0.001; 
    clock : true;
    } 
    pin(por) { 
	direction : output ;
	capacitance : 0.001; 
    } 
    bus(adc_sel) { 
	bus_type : bus_1_0 ;
	direction : input ;
	max_transition : 2.5;
	pin(adc_sel[0]) { 
		capacitance : 0.001; 
	} 
	pin(adc_sel[1]) { 
		capacitance : 0.001; 
	} 
    } 
    bus(adc_dout) { 
	bus_type : bus_11_0 ;
	direction : output ;
	pin(adc_dout[0]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[1]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[2]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[3]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[4]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[5]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[6]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[7]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[8]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[9]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[10]) { 
		capacitance : 0.001; 
	} 
	pin(adc_dout[11]) { 
		capacitance : 0.001; 
	} 
    } 
  } 
} 

说明一点voltage_name的名字用的是前面voltage_map定义了的名字

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值