UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 23484

8.1isp3 Bitgen: .rbt file generated on Japanese OS causes a problem when using "mcsgen.sh" provided with UC-II reference design.

Description

The .rbt file generated with Bitgen8.1isp3 on the Japanese OS can cause a problem when using the "mcsgen.sh" script provided with the UC-II reference design.

Solution

The "mcsgen.sh" script is provided with the UC-II reference design which calls the perl script "genmcs.pl." This perl script will perform pattern matching to get the bit size needed to generate a new rbt file. As there are no carriage returns when the Japanese OS is used to create rbt file, the perl script misses the pattern matching for "bits:" data, and will result in bit size mismatch error during promgen. 

 

To work around this problem, two courses are available: 

 

1. Manually edit the rbt file and insert carriage returns between the "Date:" and "Bits:" 

 

Under Japanese OS (Windows XP and 2000), the header gets written out as follows: 

 

------------------------------------------------------------- 

Design name: system_cache.ncd 

Architecture: virtex4 

Part: 4vfx12ff668 

Date: THU 1 JUN 12:42:20 2006Bits: 1491712 

------------------------------------------------------------- 

 

So, "return" should be inserted before "Bits: 1491712" to make it look as follows: 

 

------------------------------------------------------------- 

Design name: system_cache.ncd 

Architecture: virtex4 

Part: 4vfx12ff668 

Date: Thu Jun 01 12:14:13 2006 

Bits: 1491712 

------------------------------------------------------------- 

 

2. Modify the perl script (genmcs.pl) 

 

Under the section "Read in design.rbt file" in genmcs.pl, the related code is written as follows: 

 

------------------------------------------------------------- 

$rbtfile = $ncdname.".rbt"; 

print "Reading $rbtfile..."; 

open(INFILE, "$rbtfile") || die ("ERROR: $rbtfile cannot be opened\n"); 

while (<INFILE>) { 

chomp; 

if ($_ =~ /^Design name:\s+(\w+)$/) { $desname = $1; next; } 

if ($_ =~ /^Part:\s+(\w+)$/) { $filepart = $1; next; } 

if ($_ =~ /^Architecture:\s+(\w+)$/) { $filearch = $1; next; } 

if ($_ =~ /^Date:/) { next; } 

if ($_ =~ /^Bits:\s+(\w+)$/) { $bitcount1 = $1; next; } 

next if (! ($_ =~ /^[10]/)); 

push(@filelines, $_); 

close(INFILE); 

print "(parttype $filepart, architecture $filearch)\n"; 

------------------------------------------------------------- 

 

To work around the problem, please modify the code as follows: 

 

------------------------------------------------------------- 

$rbtfile = $ncdname.".rbt"; 

print "Reading $rbtfile..."; 

open(INFILE, "$rbtfile") || die ("ERROR: $rbtfile cannot be opened\n"); 

while (<INFILE>) { 

chomp; 

if ($_ =~ /^Design name:\s+(\w+)$/) { $desname = $1; next; } 

if ($_ =~ /^Part:\s+(\w+)$/) { $filepart = $1; next; } 

if ($_ =~ /^Architecture:\s+(\w+)$/) { $filearch = $1; next; } 

if ($_ =~ /^.*Bits:\s+(.*)$/) { $bitcount1 = $1; next; } ## TI - modified for Japanese OS 

## if ($_ =~ /^Bits:\s+(\w+)$/) { $bitcount1 = $1; next; } 

next if (! ($_ =~ /^[10]/)); 

push(@filelines, $_); 

close(INFILE); 

print "(parttype $filepart, architecture $filearch)\n"; 

print "(bitcount $bitcount1)\n"; 

-------------------------------------------------------------

AR# 23484
Date Created 09/04/2007
Last Updated 05/20/2014
Status Archive
Type General Article