微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何在SoC设计中使用事务处理(一)

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

时间:08-01 来源:互联网 点击:

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

下面的代码段 显示了如何利用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:便于操控句柄。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top