I am now developing a management unit that controls several IPs through corresponding control-fsm. These IPs are grouped in several group, and each group are controlled by one control-fsm. Thus I have a control_fsm_template and a ip_template, and in each control_fsm there is a parameter ip_list to record all IPs controlled by this FSM:
template control_fsm_template {
param ip_list : sequence (ip_template);
param ip_list default undefined;
method gm1() {
foreach ip in ip_list {
if (ip.p1) ip.m1();
}
}
}
template ip_template {
param p1;
param p2;
connect c1;
port c2;
method m1() {}
method m2() {}
}
group ip_1 is (ip_template);
group ip_2 is (ip_template);
group control_fsm1 is (control_fsm_template) {
param ip_list = [ip_1, ip_2];
}
group ip_3 is (ip_template);
group ip_4 is (ip_template);
group control_fsm2 is (control_fsm_template) {
param ip_list = [ip_3, ip_4];
}
DMLC reports error: error: not a value: [ip_1, ip_2]
And then I changed the code to:
template ip_group1_template is (ip_template);
template ip_group2_template is (ip_template);
group ip_1 is (ip_group1_tempalte);
group ip_2 is (ip_group1_template);
group control_fsm1 is (control_fsm_template) {
param ip_list = each ip_group1_template in (dev);
}
group ip_3 is (ip_group2_tempalte);
group ip_4 is (ip_group2_template);
group control_fsm2 is (control_fsm_template) {
param ip_list = each ip_group2_template in (dev);
}
Then DMLC reports error: error: wrong type in assignment got: list of trait ip_group1_template expect: list of trait ip_template