Line 178... |
Line 178... |
if ($a =~ /^( *)(type)( *)(=)( *)(ro|wo|rw)(;?)($*)/) {
|
if ($a =~ /^( *)(type)( *)(=)( *)(ro|wo|rw)(;?)($*)/) {
|
$master[$masters]{"$2"}=$6; };
|
$master[$masters]{"$2"}=$6; };
|
# priority for crossbarswitch
|
# priority for crossbarswitch
|
if ($a =~ /^( *)(priority)(_)([0-9a-zA-Z_]*)( *)(=)( *)([0-9]*)(;?)($*)/) {
|
if ($a =~ /^( *)(priority)(_)([0-9a-zA-Z_]*)( *)(=)( *)([0-9]*)(;?)($*)/) {
|
$master[$masters]{("priority_"."$4")}=$8; };
|
$master[$masters]{("priority_"."$4")}=$8; };
|
|
# priority for shared bus
|
|
if ($a =~ /^( *)(priority)( *)(=)( *)([0-9]*)(;?)($*)/) {
|
|
$priority += $6; };
|
$a = <FILE>;
|
$a = <FILE>;
|
};
|
};
|
};
|
};
|
|
|
# slave port setup
|
# slave port setup
|
Line 1227... |
Line 1230... |
printf OUTFILE "\nidle <= '1' when %s_bg_q='0'",$master[1]{"wbm"};
|
printf OUTFILE "\nidle <= '1' when %s_bg_q='0'",$master[1]{"wbm"};
|
for ($i=2; $i le $masters; $i++) {
|
for ($i=2; $i le $masters; $i++) {
|
printf OUTFILE " and %s_bg_q='0'",$master[$i]{"wbm"}; };
|
printf OUTFILE " and %s_bg_q='0'",$master[$i]{"wbm"}; };
|
printf OUTFILE " else '0';\n";
|
printf OUTFILE " else '0';\n";
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_trafic_ctrl_limit='0' else '0';\n",$master[1]{"wbm"},$master[1]{"wbm"},$master[1]{"wbm"};
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_trafic_ctrl_limit='0' else '0';\n",$master[1]{"wbm"},$master[1]{"wbm"},$master[1]{"wbm"};
|
|
$depend = $master[1]{"wbm"}."_bg_1='0'";
|
for ($i=2; $i le $masters; $i++) {
|
for ($i=2; $i le $masters; $i++) {
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_trafic_ctrl_limit='0' and %s_bg_1='0' else '0';\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i-1]{"wbm"}; };
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_trafic_ctrl_limit='0' and (%s) else '0';\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$depend;
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and %s_bg_1='0' and %s_cyc_o='1' else '0';\n",$master[1]{"wbm"},$master[$masters]{"wbm"},$master[1]{"wbm"};
|
$depend = $depend." and ".$master[$i]{"wbm"}."_bg_1='0'";
|
|
};
|
|
|
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and (%s) and %s_cyc_o='1' else '0';\n",$master[1]{"wbm"},$depend,$master[1]{"wbm"};
|
|
$depend = $depend." and ".$master[1]{"wbm"}."_bg_2='0'";
|
for ($i=2; $i le $masters; $i++) {
|
for ($i=2; $i le $masters; $i++) {
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and %s_bg_2='0' and %s_cyc_o='1' else '0';\n",$master[$i]{"wbm"},$master[$i-1]{"wbm"},$master[$i]{"wbm"}; };
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and (%s) and %s_cyc_o='1' else '0';\n",$master[$i]{"wbm"},$depend,$master[$i]{"wbm"};
|
|
$depend = $depend." and ".$master[$i]{"wbm"}."_bg_2='0'";
|
|
};
|
for ($i=1; $i le $masters; $i++) {
|
for ($i=1; $i le $masters; $i++) {
|
printf OUTFILE "%s_bg <= %s_bg_q or %s_bg_2 or %s_bg_2;\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"}; };
|
printf OUTFILE "%s_bg <= %s_bg_q or %s_bg_1 or %s_bg_2;\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"}; };
|
# ce
|
# ce
|
printf OUTFILE "ce <= %s_cyc_o",$master[1]{"wbm"};
|
printf OUTFILE "ce <= %s_cyc_o",$master[1]{"wbm"};
|
for ($i=2; $i le $masters; $i++) {
|
for ($i=2; $i le $masters; $i++) {
|
printf OUTFILE " or %s_cyc_o",$master[$i]{"wbm"}; };
|
printf OUTFILE " or %s_cyc_o",$master[$i]{"wbm"}; };
|
printf OUTFILE " when idle='1' else '0';\n\n";
|
printf OUTFILE " when idle='1' else '0';\n\n";
|
Line 1301... |
Line 1311... |
printf OUTFILE " and (%s_%s_o=\"%s\" or %s_%s_o=\"%s\")",$master[$i]{"wbm"},$rename_tgc,$classic,$master[$i]{"wbm"},$rename_tgc,$endofburst; };
|
printf OUTFILE " and (%s_%s_o=\"%s\" or %s_%s_o=\"%s\")",$master[$i]{"wbm"},$rename_tgc,$classic,$master[$i]{"wbm"},$rename_tgc,$endofburst; };
|
printf OUTFILE " then\n %s_bg_q <= '0';\nend if;\nend if;\nend process;\n",$master[$i]{"wbm"};
|
printf OUTFILE " then\n %s_bg_q <= '0';\nend if;\nend if;\nend process;\n",$master[$i]{"wbm"};
|
};
|
};
|
}; # end for
|
}; # end for
|
# _bg
|
# _bg
|
|
$depend = "";
|
$tmp=1; until ($master[$tmp]{("priority_".($slave[$j]{"wbs"}))} ne 0) {$tmp++};
|
$tmp=1; until ($master[$tmp]{("priority_".($slave[$j]{"wbs"}))} ne 0) {$tmp++};
|
printf OUTFILE "\nidle <= '1' when %s_bg_q='0'",$master[$tmp]{"wbm"};
|
printf OUTFILE "\nidle <= '1' when %s_bg_q='0'",$master[$tmp]{"wbm"};
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
printf OUTFILE " and %s_bg_q='0'",$master[$i]{"wbm"};
|
printf OUTFILE " and %s_bg_q='0'",$master[$i]{"wbm"};
|
};
|
};
|
};
|
};
|
printf OUTFILE " else '0';\n";
|
printf OUTFILE " else '0';\n";
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_%s_ss='1' and %s_trafic_limit='0' else '0';\n",$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$slave[$j]{"wbs"},$master[$tmp]{"wbm"};
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_cyc_o='1' and %s_%s_ss='1' and %s_trafic_limit='0' else '0';\n",$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$slave[$j]{"wbs"},$master[$tmp]{"wbm"};
|
$tmp1 = $tmp;
|
$depend = $master[$tmp]{"wbm"}."_bg_1='0'",;
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and %s_bg_1='0' and %s_cyc_o='1' and %s_%s_ss='1' and %s_trafic_limit='0' else '0';\n",$master[$i]{"wbm"},$master[$tmp1]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$slave[$j]{"wbs"},$master[$i]{"wbm"};
|
printf OUTFILE "%s_bg_1 <= '1' when idle='1' and (%s) and %s_cyc_o='1' and %s_%s_ss='1' and %s_trafic_limit='0' else '0';\n",$master[$i]{"wbm"},$depend,$master[$i]{"wbm"},$master[$i]{"wbm"},$slave[$j]{"wbs"},$master[$i]{"wbm"},$slave[$j]{"wbs"},$master[$i]{"wbm"};;
|
$tmp1 = $i;
|
$depend = $depend." and ".$master[$i]{"wbm"}."_bg_1='0'";
|
};
|
};
|
};
|
};
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and %s_bg_1='0' and %s_cyc_o='1' and %s_%s_ss='1' else '0';\n",$master[$tmp]{"wbm"},$master[$tmp1]{"wbm"},$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$slave[$j]{"wbs"};
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and (%s) and %s_cyc_o='1' and %s_%s_ss='1' else '0';\n",$master[$tmp]{"wbm"},$depend,$master[$tmp]{"wbm"},$master[$tmp]{"wbm"},$slave[$j]{"wbs"};
|
|
$depend = $depend." and ".$master[$tmp]{"wbm"}."_bg_2='0'";
|
$tmp1 = $tmp;
|
$tmp1 = $tmp;
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
for ($i=$tmp+1; $i le $masters; $i++) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and %s_bg_2='0' and %s_cyc_o='1' and %s_%s_ss='1' else '0';\n",$master[$i]{"wbm"},$master[$tmp1]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$slave[$j]{"wbs"};
|
printf OUTFILE "%s_bg_2 <= '1' when idle='1' and (%s) and %s_cyc_o='1' and %s_%s_ss='1' else '0';\n",$master[$i]{"wbm"},$depend,$master[$i]{"wbm"},$master[$i]{"wbm"},$slave[$j]{"wbs"};
|
$tmp1 = $i;
|
$depend = $depend." and ".$master[$i]{"wbm"}."_bg_2='0'";
|
};
|
};
|
};
|
};
|
for ($i=1; $i le $masters; $i++) {
|
for ($i=1; $i le $masters; $i++) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
if ($master[$i]{("priority_".($slave[$j]{"wbs"}))} ne 0) {
|
printf OUTFILE "%s_bg <= %s_bg_q or %s_bg_1 or %s_bg_2;\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"};
|
printf OUTFILE "%s_bg <= %s_bg_q or %s_bg_1 or %s_bg_2;\n",$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"},$master[$i]{"wbm"};
|