Hello,

The Xilinx unisims and simprim folder hierarchy has changed. Now, The armadeus 
wiki scripts do not work.

I modified scripts to comply with the new folder structure but there is some 
problems with the simprim vital files.

I get VITAL multiple errors such as:
simprim_vcomp_chop/X_RAM64M.vhd:104:7: VITAL scalar timing type expected
simprim_vcomp_chop/X_RAM64M.
vhd:105:7: VITAL scalar timing type expected
simprim_vcomp_chop/X_RAM64M.vhd:106:7: VITAL scalar timing type expected
simprim_vcomp_chop/X_RAM64M.vhd:107:7: VITAL scalar timing type expected

I compile the file using following options :
-a -fexplicit --ieee=synopsys --warn-no-vital-generic --work=simprim

The corresponding lines in the source file are :
tisd_ADDRA_WCLK : VitalDelayArrayType(5 downto 0) := (others => 0.000 ns);
tisd_ADDRB_WCLK : VitalDelayArrayType(5 downto 0) := (others => 0.000 ns);
tisd_ADDRC_WCLK : VitalDelayArrayType(5 downto 0) := (others => 0.000 ns);
tisd_ADDRD_WCLK : VitalDelayArrayType(5 downto 0) := (others => 0.000 ns);

Ghdl waits only for a scalar in the case of tisd. But i looked in the VITAL 
2000 standard and tisd could also be a vector as for tsetup, ...

So i would like to modify the ghdl source file "ieee-vital_timing.adb" to 
replace at line 1007 "Is_Scalar => True" by "Is_Scalar => false".
Is it enough? Is there no other changes to make?

Another way to use simprim is to use the compile flag --no-vital-checks but 
what exactly implies this flag ?

Christophe




PS : A new xilinx unisim compile script for IDS 11.1 :
#-------------------------------------------------------------------------------------------------------
#!/bin/sh
#
if [ -z "$XILINX" ]
then
echo "XILINX not defined"
exit 1
fi
#
cd $XILINX
echo "============================================================"
echo "* Build ghdl UNISIM libs for $XILINX"
echo "============================================================"
#
if [ ! -d ghdl ]
then
mkdir ghdl
fi
#
cd $XILINX/ghdl
if [ ! -d unisim ]
then
mkdir unisim
fi
#
cd $XILINX/ghdl/unisim
cp $XILINX/vhdl/src/unisims/unisim_VCOMP.vhd .
cp $XILINX/vhdl/src/unisims/unisim_VPKG.vhd .
#

rm -rf unisims_primitives
mkdir -p unisims_primitives
cd unisims_primitives
for pfile in $XILINX/vhdl/src/unisims/primitive/*.vhd
do
echo found $pfile
cp -f $pfile .
done
sed -i 's/variable Write_A_Write_B : memory_collision_type := 
Write_A_Write_B;//g' RAMB16BWE.vhd
sed -i 's/variable Write_A_Write_B : memory_collision_type := 
Write_A_Write_B;//g' RAMB16BWE.vhd
sed -i 's/variable Read_A_Write_B : memory_collision_type := 
Read_A_Write_B;//g' RAMB16BWE.vhd
sed -i 's/variable Write_A_Read_B : memory_collision_type := 
Write_A_Read_B;//g' RAMB16BWE.vhd
sed -i 's/variable Write_B_Write_A : memory_collision_type := 
Write_B_Write_A;//g' RAMB16BWE.vhd
sed -i 's/variable Read_B_Write_A : memory_collision_type := 
Read_B_Write_A;//g' RAMB16BWE.vhd
sed -i 's/variable Write_B_Read_A : memory_collision_type := 
Write_B_Read_A;//g' RAMB16BWE.vhd
sed -i 's/(\([a-zA-Z0-9_]*\) \/ 1 ps[ ]*) \* 
1.0/real(time'\''pos(\1))\/real(time'\''pos(1 ps))/g' DCM_CLKGEN.vhd
cd ..



echo "# ghdl ... unisim_VCOMP.vhd"
ghdl -a --std=93c --ieee=synopsys --work=unisim -fexplicit unisim_VCOMP.vhd
echo "# ghdl ... unisim_VPKG.vhd"
ghdl -a --std=93c --ieee=synopsys --work=unisim -fexplicit unisim_VPKG.vhd

for file in `find unisims_primitives -name "*.vhd"`
do
echo "# ghdl ... $file"
ghdl -a --std=93c --ieee=synopsys --warn-no-vital-generic --work=unisim 
-fexplicit 2>&1 $file | tee $file.ghdl.log
done

echo "--- scan for compilation errors:"
find unisim_vcomp_chop -name "*.ghdl.log" | xargs grep error




_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to