- 论坛徽章:
- 0
|
10可用积分
class master_case
{
public:
//signal
//global signal
explicit master_case();
~master_case();
//common functons
void write_mreg32(uint32 addr,uint32 data){}
void read_mreg32(uint32 addr, uint32& data){}
void write_mreg64(uint32 addr,uint64 data){}
void read_mreg64(uint32 addr, uint64& data){}
//systemc function
sys_main(){gpio_test();mem_test();voc_test();write_mreg32(0x100,2000);}
sys_init(){gpio_init();mem_init();voc_init();write_mreg32(0x100,2000);}
//gpio test case
bool gpio_start;
bool gpio_stop;
bool gpio_init(){write_mreg32(0x100,2000);}
void gpio_test(){write_mreg32(0x100,2000);}
//memory test case
bool mem_start;
bool mem_stop;
bool mem_init(){write_mreg32(0x100,2000);}
void mem_test(){write_mreg32(0x100,2000);}
//voc test case
bool voc_start;
bool voc_stop;
bool voc_init(){write_mreg32(0x100,2000);}
void voc_test(){write_mreg32(0x100,2000);}
private:
};
但是我们想把模块的测试case 如果gpio,mem,voc,提取出来为
class test_case{
bool start;
bool stop;
void init();
void test();
};
然后根据需要在进行继承
class gpio_test:public test_case
{
};
class mem_test:public test_case
{
};
class voc_test:public test_case
{
};
那么我的主测试类就只需要为
class master_case_simple
{
explicit master_case_simple();
~master_case_simple();
//common functons
void write_mreg32(uint32 addr,uint32 data){}
void read_mreg32(uint32 addr, uint32& data){}
void write_mreg64(uint32 addr,uint64 data){}
void read_mreg64(uint32 addr, uint64& data){}
//systemc function
sys_main(){gpio_test();mem_test();voc_test();write_mreg32(0x100,2000);}
sys_init(){gpio_init();mem_init();voc_init();write_mreg32(0x100,2000);}
gpio_test * gpioTest;
mem_test * memTest;
voc_test * vocTest;
};
关键是我的test_case这个类中的init() and test(), 需要调用master_case_simple中的write_mreg32,read_mreg32等函数
而且sys_main(),sys_init()也需要调用的write_mreg32,read_mreg32等函数。所以不知道该怎么组织。
请大家帮俺们想想,该如何组织这个类
谢谢啦 |
最佳答案
查看完整内容
class CCommonFunctions{public: static void write_mreg32(uint32 addr,uint32 data){}; static void read_mreg32(uint32 addr, uint32& data){}; static void write_mreg64(uint32 addr,uint64 data){}; static void read_mreg64(uint32 addr, uint64& data){};};class CTestCase{public: virtual bool init(); virtual void test();protected: bool m_Start; bool m_Stop;};class CgpioTestCase :public CTestCase{ //¿& ...
|