ETM 抽取,应该知道的一些细节

2020-11-13 14:59:30 浏览数 (2)

《点论 | 多mode ETM lib》曾经写过一点ETM, 最近在跟某兄解某问题时,突觉对ETM 的胴体竟然一无所知,比如,在抽ETM 时:

  • input port 的transition 是如何来的?output 的load 是如何来的?
  • in2reg path 被抽成setup/ hold check 时,其计算公式是什么?
  • reg2out path 被抽成sequential path 时,其计算公式是什么?
  • in2out path 被抽成combinational path 时,其计算公式是什么?
  • min period 跟pulse width 的计算公式是什么?
  • 是GPA 还是PBA?
  • SDC 中的相关命令如何处理?
  • 多clock 怎么处理?
  • 常值跟未约束的path 怎么处理?
  • PG pin 怎么抽取?
  • SI 怎么建模?
  • AOCV, SOCV 怎么度量?

有多少人会像老驴一样想脱口而出:WTF!!! 老驴打算就着这些问题捋一捋,今天先捋前四个。

抽取ETM 时context 的处理


ETM 不应该依赖于该设计当前的工作环境,也就是说在抽timing model 时不能用其当前的input transition 跟output load 为前提抽取,因为ETM 是要用于更上一层做timing 分析的,而在抽当前层时,是无法得知更上一层使用该model 时具体的transition 跟load 是多少,这其实跟std cell 类似,因为无法预知std cell 将要工作的外部环境,所以在K 库时,需要对input transition 跟outpu load 设定一个范围。那么问题来了,在抽ETM 时,这个范围从何而来?就这个问题,老驴请教了一些老专家,似乎各家工具处理时并不完全相同,在innovus 跟Tempus 中按如下方式处理:

可以在抽ETM 时指定input transition 跟output load:

如果在抽取ETM 时没有指定input transition 跟output load, 则按照如下规则:

  • check timing arc: 对于setup/ hold 这样的 "check timing arc" 是用reference pin 跟data pin 的transition 来查表的,其中reference pin 的transition index 用该clock pin 在该block 内部驱动的第一个cell 的transition index; data pin 的transition index 用该data pin 在该block 内部驱动的第一个cell 的transition index;
  • sequential timing arc: sequential timing arc 跟寄存器CK->Q 的timing arc 一样,用clock pin transition 跟output pin 的load 查表,其中clock pin 的transition index 用该clock pin 在该block 内部驱动的第一个cell 的transition index; output pin 的load 用该block 内部驱动该output pin 的最后一个cell 的load index.
  • combinational timing arc: 这类arc 用input pin 的transition 跟output pin 的load 查表,其中input pin 的transition index 用该input pin 在该block 内部驱动的第一个cell 的transition index; output pin 的load 用该block 内部驱动该output pin 的最后一个cell 的load index.

举个栗子,假设在block 内部有如下三条path:

  • check timing arc, clk->in, 其中clk pin 的transition index 取clk_buf 在原始lib 中的transition index, 即:cell ( CLK_BUF ) 的index_1; in pin 的transition index 取buf 在原始lib 中的transition index, 即:cell ( BUF ) 的index_1;
  • sequential timing arc 跟combinational timing arc, input pin 的transtion index 选取同check timing arc 类似,out pin 的load 取buf 在原始lib 中的load index, 即:cell ( BUF ) 的index_2;

抽取ETM 时各类型arc 的计算


从timing path 的角度,任何一个电路都可以简化成四类:

  • in2reg, 抽取ETM 时会将这类path 模拟成check timing arc, 其计算公式为:
  • reg2out, 抽取ETM 时会将这类path 模拟成sequential timing arc, 其计算公式为:
  • in2out, 抽取ETM 时会将这类path 模拟成combinational timing arc, 其计算公式为:
  • reg2reg, 抽取ETM 时不考虑这类path.

0 人点赞