GUIのdiffツール

tkdiff。引数がファイル一つだと、SVNの差分も見てくれます。

テーマ : Linux
ジャンル : コンピュータ

2011-03-29 : Work-Linux-Command/Editor : コメント : 0 : トラックバック : 0
Pagetop

BB生成スクリプト

Verilog RTLのBlackBox生成用スクリプトです。

例によって、VerilogPerlの某有名サイトを参考にしています。

出力が不定にならないように、固定値を出力しています。
Highが希望される信号は、個別に指定します。例えば以下の例ではPREADYですね。


#!/usr/bin/perl -w

use strict;
use warnings;
use Getopt::Std;
use Verilog::Netlist;

# -----------------------------------------------------------
# Gloval variable
my @portname = ();
my @portdirection = ();

# -----------------------------------------------------------
# Option Analysys

my %opt = ();
getopts("hb", \%opt);
if ($opt{h}) { &help(); }
if ($opt{b}) {
my @FileList = @ARGV,

my $NetList = new Verilog::Netlist;
ReadVerilogFiles($NetList, \@FileList);

PrintModule($NetList);
}

sub help()
{
print << "ENDLINE";
Usage: ${0} [Optin]
Option:
-h :help
-b rtl :making black box
ENDLINE
}

sub ReadVerilogFiles {
my ($netlist, $r_filelist) = @_;

foreach my $file (@{$r_filelist}) {
$netlist->read_file(filename=>$file);
}

$netlist->link(); # connection resolve
}

sub PrintModule {
my ($netlist) = @_;

foreach my $module ($netlist->modules_sorted) {
my @ports;
push(@ports, $module->ports_ordered);
if ($#ports == -1) { next; }

my $outfilename;

$outfilename = "./" . $module->name . ".v";
open (OUTFILE, ">$outfilename") || die "$outfilename: $!";

print OUTFILE "module " . $module->name;
print OUTFILE " (\n";

# 1.signal dicraration
for (my $index=0; $index < $#ports; $index++) {
print OUTFILE ' 'x4, $ports[$index]->name, ",\n";
}
print OUTFILE ' 'x4, $ports[$#ports]->name ",\n";

print OUTFILE ");\n";
print OUTFILE "\n";

# 2.signal dicraration
for (my $index=0; $index <= $#ports; $index++) {
# direction
print OUTFILE ' 'x4;
if ($ports[$index]->direction eq 'in') {
print OUTFILE "input ";
} elsif ($ports[$index]->direction eq 'out') {
print OUTFILE "output ";
} else {
print OUTFILE "inout ";
}
# msb/lsb
if (defined($ports[$index]->net->width) && $ports[$index]->net->width != 1){
print OUTFILE '[',$ports[$index]->net->msb;
print OUTFILE ':',$ports[$index]->net->lsb,'] ';
} else {
print OUTFILE ' 'x6;
}
# port name
print OUTFILE $ports[$index]->name,";\n";
}

print OUTFILE "\n";

# 3.output signal fix value
for (my $index=0; $index <= $#ports; $index++) {
# assign
if ($ports[$index]->direction eq 'out') {
# port name
print OUTFILE ' 'x4;
print OUTFILE "assign ";
my $signal = $ports[$index]->name;
print OUTFILE $signal;
print OUTFILE " = ";
my $sigwidth = $ports[$index]->net->width;
if ($sigwidth eq "") { $sigwidth = 1; }
print OUTFILE $sigwidth;
if ($signal =~ /PREADY/) { print OUTFILE "'d1;\n"; }
else { print OUTFILE "'d0;\n"; }
}
}

print OUTFILE "\nendmodule\n";

close (OUTFILE);

}
}


テーマ : プログラミング
ジャンル : コンピュータ

2011-03-11 : Work-Linux-Perl : コメント : 0 : トラックバック : 0
Pagetop

ファイルリストに環境変数が使える

シミュレーターに「-f」で読み込ませるファイルリストですが、環境変数が使える事を最近知りました。これでシミュレーター切り替え等でもかなり汎用性が出ます。

テーマ : プログラミング
ジャンル : コンピュータ

2011-03-06 : Work-Product-Verification : コメント : 0 : トラックバック : 0
Pagetop
ホーム

プロフィール

Author:zive
大阪在住、男

ブログ検索

月別アーカイブ

FC2カウンター