ETM and Abstract model

ETM & Abstract model

由于目前的design越来越大,所以都倾向于hierarchy flow,走bottom-up的方式,也就是先从block开始做,然后再做sys level,最后做top level;

我们做完block level后,然后去做sys level时需要提供 block model,而block model可以分为两类:
1、ETM(Extracted timing model)
2、Abstract model
那么他们的区别是什么呢?
首先看下图
在这里插入图片描述

在ETM中,可以看出,这个model中只包含了input和output port和clock port之间的约束关系,没有具体描述block的内部信息;
而在abstract model中,描述了和input和ouput相关的interface logic的信息,包括
1、完整的clock network信息(A-Y)
2、input port到第一级flop的timing信息以及clock delay信息;
3、flop与output port之间的timing信息以及clock delay信息;
4、记录每个scenario下的上面的信息
两者使用的命令也不一致,分别是:
1、extract_model
2、create_abstract

那么什么时候用ETM,什么时候用abstract model呢?

Abstract benefits

使用abstract model的优点可以分几个部分:
1、Block Interface Timing Convergence
2、Clock
3、VCLP Convergence

Block Interface Timing Convergence

使用Abstract model的好处在于可以使用flat sdc,无需使用hierarchy sdc,另外在处理top与block之间的timing关系时会更方便;
以下图为例
在这里插入图片描述
这里有一条top-to-block的timing path,由于我们使用的是Abstract mode,这个model中记录了capture register的timing信息,包括data path和clock啦path的delay信息,这是ETM无法提供的;

Clock

在做full chip的CTS时,需要block的clock tree信息,这是ETM无法提供的,而Abstract model可以提供,如下图
在这里插入图片描述
同时,我们可以对block做优化,例如上图中,我们可以调整clock port的location,使其更加合理,另外,还可以调整macro的位置,获得更好的timing;

VCLP Convergence

Abstract model中记录了连接到port的leaf logic的相关供电信息,这样我们可以很早发现VCLP的问题,例如
1、缺少iso或者level shifter可以更早发现,因为port连接的leaf cell信息也记录在abstract model中了;
2、Buffering was correct by construct from power domain perspective;

Timing Budgeting

在我们做timing budgeting时,也会使用到abstract model;

Timing Budget Flow

Timing Budget Flow如下图所示
在这里插入图片描述
做timing budget前,我们要先准备好chip level的SDC和UPF,并将其split成top level和block level的SDC和UPF;
当我们做top level的timing时,需要的是top SDC和block的abstract model;block level则使用block sdc即可;

Split Constraints Flow

Top level SDC主要包含以下几部分:
1、top level UPF
2、top level timing constraint
3、top-to-block boundary timing

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用BERT-ETM模型进行问答的代码示例: 1. 导入所需的库和模型 ```python import torch from transformers import BertTokenizer, BertForQuestionAnswering from etm.etm import ETM from etm.utils import get_device device = get_device() tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") bert_model = BertForQuestionAnswering.from_pretrained("bert-base-uncased").to(device) etm_model = ETM(num_topics=50, num_embeddings=10000, hidden_size=512, num_layers=2).to(device) etm_model.load_state_dict(torch.load("path/to/etm/model.pth")) ``` 2. 定义问答函数 ```python def answer_question(question, context): # 对上下文和问题进行编码 encoded_dict = tokenizer.encode_plus(question, context, add_special_tokens=True, max_length=256, return_tensors='pt') input_ids = encoded_dict['input_ids'].to(device) attention_mask = encoded_dict['attention_mask'].to(device) # 使用BERT模型预测答案的起始和结束位置 start_scores, end_scores = bert_model(input_ids, attention_mask=attention_mask) start_index = torch.argmax(start_scores) end_index = torch.argmax(end_scores) # 根据预测的起始和结束位置提取答案 tokens = tokenizer.convert_ids_to_tokens(input_ids[0]) answer_tokens = tokens[start_index:end_index+1] answer = tokenizer.convert_tokens_to_string(answer_tokens) # 使用ETM模型对答案进行主题建模 with torch.no_grad(): embedding = etm_model.get_embedding_for_words([answer]).to(device) topic_weights = etm_model.get_topic_weights(embedding) topic_index = torch.argmax(topic_weights) # 返回答案和主题 return answer, topic_index ``` 3. 使用问答函数 ```python context = "The PyTorch library is used for building deep neural networks. It is one of the most popular open-source libraries for deep learning. PyTorch was developed by Facebook and is written in Python. It has a dynamic computational graph, which makes it easier to debug and optimize deep learning models." question = "Who developed PyTorch?" answer, topic = answer_question(question, context) print(f"Answer: {answer}") print(f"Topic index: {topic}") ``` 输出结果: ``` Answer: Facebook Topic index: 23 ``` 其中,主题索引23表示答案与主题模型中的第23个主题最相关。可以根据需要进行进一步的主题分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值