新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何在SoC设计中使用事务处理(一)

如何在SoC设计中使用事务处理(一)

作者:时间:2012-08-01来源:网络收藏

scv_tr_stream: 流建模对象。流是一种抽象通讯方法,包括重叠在内的可以发生流中,例如一个带有读/写事务处理的存储流。因此一个流可以被认为是一个抽象信号,在这个信号中事务处理是可以被信号的抽象值,例如一个数据传送总线的地址或数据流。

scv_tr_generator: 围绕一个特定的事务处理类别并且允许创建和增加属性的对象,可以是包括信号和信息以及通用有效负载数据在内的任何对象。

下面的代码段 显示了利用SCV以一种相对比较直接的方式创建事务处理。每一个代码段前的注释均指出其后语句的目的。事务处理可以以一种无缝的方式(不需要用户的直 接干预)被记录进数据库中。为了实现这一点,工具供应商可以通过在上述三个类中提供的注册机制来注册回叫,从而实现记录功能。用户只需要增加一些初始化调 用即可。

// Inside sc_main() or some other context

// SCV startup

scv_startup();

// Initialization

API_vendor_initialization(); // set SCV callbacks here

scv_tr_db db(my_db);

scv_tr_db::set_default_db(db);

// Define a stream and a generator

scv_tr_stream mem_stream(memory, transactor);

scv_tr_generator read_gen(read, mem_stream, mem);

scv_tr_handle tr_handle;

// Modeling code here

// Transaction begin with a tr_data attribute

tr_data.addr= addr_signal;

tr_data.data=data_signal;

tr_handle=write_gen.begin_transaction(tr_data);

// Transaction end

tr_handle.end_transaction();

// Other modeling code here

SCV也有许多其它的类,例如,在不同的事务处理之间建立关系的scv_tr_relation。在确定诸如前续-后继之类的因果关系、如父-子之类的层次关系以及成分分析集合体时,关系在分析以及调试方面都相当有用。

由于OpenVera(www.open-vera.org)是一种面向对象的建模语言,它可以轻而易举地容纳事务处理级建模的封装概念。该语言目前不具备与SCV类似的内置事务处理类。但可有可能为了这一目的而创建类,例如下面的极小集:trans_db:用于数据库;

trans_stream:事务处理流建模对象;

trans_type:创建事务处理以及事务处理的属性;

trans_handle:便于操控句柄。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭