Project

General

Profile

479 markw
#!/usr/bin/perl -w
use strict;

my $wanted_variant = shift @ARGV;

my $name="eclaireXL";

#Added like this to the generated qsf
#set_parameter -name TV 1

my %variants =
(
758 markw
"A2EBAv3rom" =>
619 markw
{
979 markw
"internal_ram" => 65536,
619 markw
"internal_rom" => 1,
"fpga" => "5CEBA2F23C8",
758 markw
"postfix" => "v3",
963 markw
"convert" => "v3a",
979 markw
"sid" => 0,
"enable_polyphasic_scaler" => 0,
"enable_area_scaler" => 1
619 markw
},
758 markw
"A4EBAv3rom" =>
{
"internal_ram" => 131072,
"internal_rom" => 1,
"fpga" => "5CEBA4F23C8",
"postfix" => "v3",
963 markw
"convert" => "v3b",
979 markw
"sid" => 1,
"enable_polyphasic_scaler" => 0,
"enable_area_scaler" => 1
758 markw
},
479 markw
"A2EBArom" =>
{
979 markw
"internal_ram" => 65536,
479 markw
"internal_rom" => 1,
"fpga" => "5CEBA2F23C8",
963 markw
"postfix" => "v1",
979 markw
"sid" => 0,
"enable_polyphasic_scaler" => 0,
"enable_area_scaler" => 1
479 markw
},
505 markw
"A4EBArom" =>
{
617 markw
"internal_ram" => 131072,
505 markw
"internal_rom" => 1,
"fpga" => "5CEBA4F23C8",
963 markw
"postfix" => "v2",
978 markw
"sid" => 1,
"enable_polyphasic_scaler" => 1,
"enable_area_scaler" => 1
505 markw
},
910 markw
# "A2EBAproto" =>
# {
# "internal_ram" => 0,
# "internal_rom" => 0,
# "fpga" => "5CEBA2F23C8",
# "postfix" => "proto"
# },
# "A2EBAproto_hdmiOnGPIO" =>
# {
# "internal_ram" => 0,
# "internal_rom" => 0,
# "fpga" => "5CEBA2F23C8",
# "postfix" => "proto",
# "hdmiOnGPIO" => 1
# },
# "A2EBA" =>
# {
# "internal_ram" => 65536,
# "internal_rom" => 0,
# "fpga" => "5CEBA2F23C8",
# "postfix" => "v1"
# },
# "A4EBA" =>
# {
# "internal_ram" => 131072,
# "internal_rom" => 0,
# "fpga" => "5CEBA4F23C8",
# "postfix" => "v2"
# },
# "A4EBAB" =>
# {
# "internal_ram" => 131072,
# "internal_rom" => 0,
# "fpga" => "5CEBA4F23C8",
# "postfix" => "v2"
# }
479 markw
);

if (not defined $wanted_variant or (not exists $variants{$wanted_variant} and $wanted_variant ne "ALL"))
{
die "Provide variant of ALL or ".join ",",sort keys %variants;
}

foreach my $variant (sort keys %variants)
{
next if ($wanted_variant ne $variant and $wanted_variant ne "ALL");
print "Building $variant of $name\n";

679 markw
my $postfix = $variants{$variant}->{"postfix"};
delete $variants{$variant}->{"postfix"};

758 markw
my $convertpostfix = $postfix;
if (exists $variants{$variant}->{"convert"})
{
$convertpostfix = $variants{$variant}->{"convert"};
delete $variants{$variant}->{"convert"};
}

679 markw
print `./makemif$postfix BUILD`;

479 markw
my $dir = "build_$variant";
`rm -rf $dir`;
mkdir $dir;
`cp -a *pll* $dir`;
`cp -a *fifo* $dir`;
`cp -a *zpu_rom* $dir`;
`cp -a *altddio* $dir`;
679 markw
`cp *.hex ./$dir/`;
479 markw
#`cp -a *serial_loader* $dir`;
`cp *.v $dir`;
`cp clkctrl* -r $dir`;
`cp ddioclkctrl* -r $dir`;
`cp *.vhd* $dir`;
`cp atari800core*.sdc $dir`;
`mkdir $dir/common`;
`mkdir $dir/common/a8core`;
963 markw
`mkdir $dir/common/a8core/sid8580`;
479 markw
`mkdir $dir/common/components`;
`mkdir $dir/common/zpu`;
`mkdir $dir/svideo`;
`mkdir $dir/hdmi`;
977 markw
`mkdir $dir/scaler`;
479 markw
mkdir "./$dir/common/components/usbhostslave";
`cp ../common/components/usbhostslave/trunk/RTL/*/*.v ./$dir/common/components/usbhostslave`;
`cp ../common/a8core/* ./$dir/common/a8core`;
963 markw
`cp ../common/a8core/sid8580/* ./$dir/common/a8core/sid8580/`;
839 markw
`cp -r ../common/components/* ./$dir/common/components`;
`mv ./$dir/common/components/*cycloneV/* ./$dir/common/components/`;
479 markw
`cp ../common/zpu/* ./$dir/common/zpu`;
`cp ./svideo/* ./$dir/svideo`;
`cp ./hdmi/* ./$dir/hdmi`;
977 markw
`cp ./scaler/* ./$dir/scaler`;
660 markw
`cp -r ./sfl/synthesis/* ./$dir/`;
697 markw
`cp zpu_rom$postfix.mif build_$variant/zpu_rom.mif`;
479 markw
chdir $dir;

my $fpga = $variants{$variant}->{"fpga"};

977 markw
`../makeqsf ../atari800core_eclaireXL$postfix.qsf ./hdmi ./scaler ./svideo ./common/a8core ./common/a8core/sid8580 ./common/components ./common/zpu ./common/components/usbhostslave`;
479 markw
`echo set_global_assignment -name DEVICE $fpga >> atari800core_eclaireXL$postfix.qsf`;

foreach my $key (sort keys %{$variants{$variant}})
{
my $val = $variants{$variant}->{$key};
`echo set_parameter -name $key $val >> atari800core_eclaireXL$postfix.qsf`;
}

`quartus_sh --flow compile atari800core_eclaireXL$postfix > build.log 2> build.err`;

758 markw
`quartus_cpf --convert ../convert$convertpostfix.cof`;
479 markw
chdir "..";
}