作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以将一个 SC 类定义为另一个 SC 类的派生类?
例如,一个简单的 D-Flipflop(锁存器)实现将具有 d
和 clk
输入以及 q
输出。我想在该类之上定义一个 Enabled-Latch,添加 en
输入并相应地更改采样方法。这可能吗?
最佳答案
是的,您可以,就像处理常规 C++ 类一样。
我没有使用宏 SC_MODULE 和 SC_CTOR 来说明 SC_MODULE 只是从 sc_module 派生的类
宏 SC_HAS_PROCESS 和 SC_METHOD 保留用于可读性目的。
struct dff : public sc_module
{
SC_HAS_PROCESS(dff);
sc_in_clk clk{ "clk" };
sc_in<bool> d{ "d" };
sc_out<bool> q{ "q" };
dff(const sc_module_name& name) : sc_module(name) {
SC_METHOD(update_method);
sensitive << clk.pos();
}
virtual void update_method() {
q = d;
}
};
struct dff_en : public dff
{
sc_in<bool> en{ "en" }; // enable signal
sc_in<bool> arst_n{ "arst_n" }; // asynchronous reset, active 0
dff_en(const sc_module_name& name) : dff(name) {
// adds to sentivity list of last process declared in base class
sensitive << arst_n;
}
void update_method() override {
if (!arst_n.read())
q = 0;
else if (en.read())
q = d;
}
};
关于oop - 如何从另一个 SystemC 类派生一个 SystemC 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127066/
我是一名优秀的程序员,十分优秀!