⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m1.pl

📁 ARM7系统IP核的VHDL语言源代码
💻 PL
字号:
#!/usr/bin/perl

sub log2  {
    my ($v) = @_;
    my $r = 0;
    my $c = 1;
    while ($v > $c) {
	$r++;
	$c *= 2;
    }
    return $r;
}

sub log_width  {
    my ($v) = @_;
    my $cover = $width;
    my $r = 0;
    my $c = 1;
    while ( align($v,$cover)/$cover > 1) {
	$cover *= $width;
	$r++;
    }
    $r++;
    return $r;
}

sub log2x  {
    $v = @_;
    my $r = log2($v);
    if ($r == 0) {
	$r = 1;
    }
    return $r;
}

sub border  {
    my($a,$b) = @_;
    return $stgnr{$a} != $stgnr{$b};
}

sub getlevelname  {
    my($stgnr,$postfix) = @_;
    return sprintf("L%.3i_$postfix",$stgnr);
}

sub getstagename  {
    my($stgnr,$postfix) = @_;
    return sprintf("S%.3i_$postfix",$stgnr);
}

sub replc  {
    my($l,$str,$repl) = @_;
    $l =~ s/$str/$repl/gi;
    return $l;
}

sub align {
    my($n,$a) = @_;
    $n = int($n);
    $a = int($a);
    return int(($n+($a-1))/$a) * $a;
}

sub alignright {
    my($n,$a) = @_;
    if ($n < 0) {
	$n = $n - 1;
    }
    return int(($n/$a)) * $a;
}

sub isglobalright {
    #$i is level real index
    my ($i,$level) = @_;
    my $cover = $width ** ($level+1);
    return ($i < $cover);
}

sub islocalright {
    my ($i,$level) = @_;
    my $cover = $width ** ($level+1);
    my $elem = $width ** ($level);
    return (alignright($i,$cover) == alignright($i,$elem));
}

sub goright {
    my ($i,$level) = @_;
    my $cover = $width ** ($level+1);
    my $elem = $width ** ($level);
    $i = alignright($i,$elem);
    $i = $i-$elem;
    return $i;
}

sub localoffset {
    my ($i,$level) = @_;
    my $cover = $width ** ($level+1);
    my $elem = $width ** ($level);
    my $off = alignright($i,$elem)-alignright($i,$cover);
    return int($off/$elem);
}

sub baseindex {
    my ($i,$j,$level) = @_;
    my $cover = $width ** ($level+1);
    my $elem = $width ** ($level);
    return ($i*$cover)+($j*$elem);
}

sub down {
    my ($i) = @_;
    return alignright($i,$width)*$width;
}

sub up {
    my ($i) = @_;
    return alignright($i,$width)/$width;
}

sub upoffset {
    my ($i) = @_;
    my $p = alignright($i,$width)/$width;
    return $i - ($p * $width);
}


sub l0_off {
    my ($i,$off) = @_;
    return ($i * $width) + $off
}

1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -