个特定的事务处理类别并且允许创建和增加属性的对象,可以是包括设计信号和信息以及通用有效负载数据在内的任何对象。
下面的代码段 显示了如何利用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:便于操控句柄。
|