来个System C的专业问题,呼唤高手
时间:10-02
整理:3721RD
点击:
关于模块SC_MODULE,用sc_signal来连接,重C++的实现来看,sc_signal和sc_in,sc_out端口是如何实现的?
例如:
SC_MODULE(sub) {
sc_in sub_in;
}
SC_MODULE(top) {
subsub_i;
sc_signaldriven;
SC_CTOR(top) {
sub_i.sub_in(driven);
}
}
就如上例中,sub_i,sub_in 和driven 都是实例化的两个类。
在经过了sub_i.sub_in(driven)操作后,这两个类就统一成一个类了?
而()是sc_in类的一个重载函数?
例如:
SC_MODULE(sub) {
sc_in sub_in;
}
SC_MODULE(top) {
subsub_i;
sc_signaldriven;
SC_CTOR(top) {
sub_i.sub_in(driven);
}
}
就如上例中,sub_i,sub_in 和driven 都是实例化的两个类。
在经过了sub_i.sub_in(driven)操作后,这两个类就统一成一个类了?
而()是sc_in类的一个重载函数?
我靠,你是准备自己写,不调用库?
看下源代码就知道了.
sc_signal_ports.h,重载了operator(),比如sc_in这个类重载如下:
void operator () ( inout_port_type& parent_ )//连接sc_inout类型
{ sc_port_base::bind( parent_ ); }
void operator () ( in_port_type& parent_ ) //连接sc_in类型
{ sc_port_base::bind( parent_ ); }
多谢whxqq,看来要好好研究了下SC库了。
回aimar327,刚入手看SC,想建模一个AHB总线,最开始的想法是从,sc_in,sc_out扩展,所以想知道SC中如何建模连线的细节。看了sc_in的source code,发现以前想错了,建模AHB,要通过sc_port来进行,不知道思路是不是正确?
sc_signal是一个primitive channel。sc_in和sc_out都是port。sc_signal和sc_in(out)的interface是一致的,所以可以连接。
port知识module和外界通信的接口,它提供了一个IMC或者RPC的手段。
要建模AHB的话,首先要搞清楚你想建哪个层次的?cycle-accurate还是transaction-level的?如果是前者,要用pin level的sc_signal和sc_port等;如果是后者,要用更高层次的抽象,如interface,channel,tlm等。