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
