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

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

前篇文章介绍的configure.tcl文件用来设置全局参数,这些参数将应用到所有的cells中,是library level的设置。对于cell level的参数设置,定义在instance文件里。

2

Cell level设置 – instance file

Instance file (cellname.inst) 是基于Tcl的脚本,描述每一个cell的结构,逻辑行为,定义配置信息,告诉工具如何去做characterizationmodelingInstance一般会放在<charpoint>/control/路径下。一个完整的instance file主要包含这些信息

 

-    cell网表的存放路径

-    每个pin的方向和类型

-    Cellfunction

-    激励和测量控制

-    用来告诉工具如何做characterizationmodeling的其他配置信息

 

那么我们如何拿到这个instance文件呢?主要有四种途径:一是走rechar flowimport参考库的同时,工具会自动产生instance文件,import -liberty seed.lib;二是functional recognition flow(这个flow后面会详细介绍),import -netlist_dir data/netlists -extension .cir BUFX16,三是使用golden instance,针对像STD cell这样的标准单元,instance文件有时是可以重复使用的;最后一个是完全手写,这个对刚接触工具的同学可能不太友好。

 

既然Instance文件能自动产生,那是不是就不需要用户干预了?NO!下面几种情况还是需要我们手动编辑修改的:

 

-   Rechar flow,对于复杂的cellseed.libfunction信息不全,或者压根就没有。

-    FR (Functional Recognition) flow,一些复杂的cell工具认不出来或者认不对。

-    用户需要做一些自定义的arc

-    有些arc需要提供cell内部节点 (internal node)

-    有些cellpin的定义需要更新。

-    其他我没想到的。

 

Instance文件长什么样?基本就长成下面这个样子了。

 

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

 

下面分别看看instance文件里的内容:

 

  • Pin definitions

add_pin定义每个pin的电气特性,pin的名字,pintye(这个上篇文章做过介绍),pin的方向等。add_pin的语法在User Guide上有非常详细的说明,这里就不罗列了。需要提一下的是-internal,告诉工具这个pin定义成internal node,因此后面还需要跟上-spice_node指定在netlist里具体的net节点。这在retention cellmemory characterization的时候经常会碰到。

 

  • Cell function

Instance文件里另一个非常重要的部分就是cell function,描述cell的逻辑行为。有几种描述function的方式:

1.    add_function – 通过布尔表达式来描述,这是最简单的描述逻辑行为的方式之一,对于一些比较简单的function可以用它来描述。

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

 

2.    add_table – 通过真值表或者状态表的形式描述cell的行为。这种表格的形式可以描述add_function难以描述的cell行为。对一些复杂的cell,如memory,一般都是采用这种方式。

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

3.    add_flopadd_latch – 描述时序逻辑寄存器和锁存器的行为。

4.    define_differential_receiverset_output_differential – 有些cell有差分输入或者差分输出,输出function不是由单一的输入信号决定的,通过定义差分输入和输出告诉工具注意处理差分信号。

5.    对于非常复杂的cell,上面的任何一种定义方式都不足以描述它的function,这时就需要组合使用以上多种定义方式。如果组合使用还是不足以描述,那就要上AUS/AUA了。关于AUS/AUA,后面再详细介绍。

 

这里简单举几个栗子:

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

  • add_function的栗子

add_function output_pin expression [-hi_z expression] [-illegalexpression]

add_function Z A -hi_z !EN – 三态缓冲器,当EN为高输出使能,EN为低输出为三态。

  • add_table的栗子

比如一个NAND,真值表如下,跟定义add_function Z { (!A) | (!B) }是等价的。

add_table {

            A          B          :           Z

            0          0          :           1

            0          1          :           1

            1          0/1       :           1/0

}

 

  • add_tableadd_function组合使用的栗子

add_table {

    EN    SE    CK    :    IQ    :    IQ

    -        -        1     :    -      :    n

    0       0        0     :    -      :    0

    1       0        0     :    -      :    1

    1       1        0     :    -      :    1

}

add_function Q { IQ&CK }

 

  • add_flop的栗子

add_flop IQ IQN !CK { D&SEL | IQN&!SEL } -clear !RB -preset S-preset_clear {1 0}

add_function Q IQ

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

To be continued…

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

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

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

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

长按二维码关注我们

点一下"在看"再走吧

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

相关文章:

  • 2021-12-23
  • 2021-11-23
  • 2021-05-16
  • 2021-04-22
  • 2021-11-13
  • 2021-12-15
  • 2021-09-02
  • 2021-12-20
猜你喜欢
  • 2021-05-05
  • 2021-04-04
  • 2021-09-23
  • 2022-01-06
  • 2021-11-05
  • 2022-12-23
  • 2022-02-22
相关资源
相似解决方案