我是靠谱客的博主 冷静机器猫,最近开发中收集的这篇文章主要介绍sc_port / sc_interface / sc_export (part 3)sc_exportsc_interface,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

sc_export

sc_export的一个主要作用是,在层次化的绑定过程中,给submodule内的interface提供了一个可以对外与sc_port绑定的方法。

Class sc_export allows a module to provide an interface to its parent module. An export forwards interface method calls to the channel to which the export is bound.

sc_export 也是模板类,但只有interface的参数(相比较与sc_port,没有了绑定数N和policy,也就是说只能绑定1个),bind的参数 可以是一个interface,也可以是一个sc_export。注意,如果参数是 一个sc_export,其实是先调用了 隐式类型转换函数 sc_export<IF>::operator IF&,将sc_export的参数转换为 interface,然后再 调用 virtual void bind( IF& );的bind函数。

The actual argument could be an export, in which case operator IF& would be called as an implicit conversion.

class sc_export_base
: public sc_object { implementation-defined };
template<class IF>
class sc_export
: public sc_export_base
void operator() ( IF& );
virtual void bind( IF& );

在 sc_port.bind(sc_export) 和  sc_export.bind(sc_export) 的时候,都会先调用 隐式类型转换函数 sc_export<IF>::operator IF&,在 src/sysc/communication/sc_export.h 中对应的代码如下。可以看到,在进行隐式类型转换的时候会 先判断当前sc_export是不是已经绑定了sc_interface (对应代码m_interface_p == 0)。尤其是,在 sc_export.bind(sc_export) 的时候,bind的方向不能搞反,否则就会在Simulation的时候报错。


operator IF& ()
{
if ( m_interface_p == 0 )
{
SC_REPORT_ERROR(SC_ID_SC_EXPORT_HAS_NO_INTERFACE_,name());
sc_abort(); // can't recover from here
}
return *m_interface_p;
}
operator const IF&() const
{ return *const_cast<this_type*>(this); }

仿真过程中如果出现这个错误  Error: (E120) sc_export instance has no interface:,xxxxx

In file: /usr/local/systemc-2.3.3/include/sysc/communication/sc_export.h:174

说明 export_1.bind (export_2) 的bind 方向错误。可以尝试 export_2.bind (export_1)。

sc_interface

sc_interface是一个抽象类,需要用户自己定义派生类,并添加相应的API实现,供sc_port 端调用。sc_interface 中以下两个抽象函数 的作用 还不太清楚。

class sc_interface
{
public:
virtual void register_port( sc_port_base& , const char* );
virtual const sc_event& default_event() const;

最后

以上就是冷静机器猫为你收集整理的sc_port / sc_interface / sc_export (part 3)sc_exportsc_interface的全部内容,希望文章能够帮你解决sc_port / sc_interface / sc_export (part 3)sc_exportsc_interface所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部