5.3 sc_module_name

目录

前言        

code

使用方法


前言        

        

        首先为什么要有这个类,module 的名字管理,为什么会专门有个类来管理,这个对于软件工程老师傅们来说不可理喻,但是别着急,越用到后面,你就会觉得越香。所以先好好学。

        spec 中解释,用于在模块阐述过程中建立模块层次结构中实例的层次名称。重要的是,他可以把sc_module和他自己类名关联起来起来。在c++ 中这个可能用不上,但是RTL中这点特别重要,两种debug方式天差地别,如果没有层级结构,sc中的module 中的wave 就无法使用。为此SC 2023 spec 中专门添加了SC_NAMED的宏,用来把实现变量名和类型初始化名统一起来。方便DEBUG。

code

namespace sc_core {
class sc_module_name
{
public:
sc_module_name( const char* );
sc_module_name( const sc_module_name& );

~sc_module_name(); operator const char*() const;
private:
// disable
sc_module_name();
sc_module_name& operator= ( const sc_module_name& );
};

}// 	namespace sc_core

使用方法

  1.         1.class sc_module_name 只能用作从class sc_module 派生的类的构造函数的参数类型。此外,每个此类构造函数都必须有一个类型为 sc_module_name 的参数,该参数不必是构造函数的第一个参数。
  2.         2.在直接或间接从class sc_module 派生的类 C 的构造函数被直接从类 C 派生的类 D 的构造函数调用的情况下,类 D 构造函数的 sc_module_name 类型的参数应作为参数直接传递给类 C 的构造函数。

        3.如果class C 直接派生自class sc_module,则class  C 的构造函数没有义务将 sc_module_name 传递给class sc_module 的构造函数class sc_module 默认构造函数可以显式或隐式地从类 C 的构造函数中调用

源码

class SC_API sc_module_name
   {
      friend class sc_module;
       friend class sc_object_manager;
    
  public:
    
       sc_module_name( const char* );
       sc_module_name( const sc_module_name& );
   
       ~sc_module_name();
    
       operator const char*() const;
  
  protected:
      inline void clear_module( sc_module* module_p );
       inline void set_module( sc_module* module_p );
   
  private:
    
          sc_module*      m_module_p;
        sc_module_name* m_next;
        sc_simcontext*  m_simc;
        bool            m_pushed;
    
  private:
    
        // disabled
        sc_module_name();
       sc_module_name& operator = ( const sc_module_name& ); 
};

  源码中的 clear_module 和set_module很有用,可以用来管理所有module。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值