OpenCores
URL https://opencores.org/ocsvn/wb_builder/wb_builder/trunk

Subversion Repositories wb_builder

[/] [wb_builder/] [trunk/] [generator/] [wishbone.pl] - Diff between revs 6 and 7

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 6 Rev 7
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"};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.