From: Christos Zoulas Date: Tue, 19 Nov 2013 23:15:13 +0000 (+0000) Subject: PR/290: Rewrite xilinx to use pascal strings instead of hard-coded constants. X-Git-Tag: FILE5_16~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72b5e6c5d4f1e6479d9a84a9b19fceb11b4eeb66;p=file PR/290: Rewrite xilinx to use pascal strings instead of hard-coded constants. --- diff --git a/magic/Magdir/xilinx b/magic/Magdir/xilinx index 4e215776..6abb769b 100644 --- a/magic/Magdir/xilinx +++ b/magic/Magdir/xilinx @@ -5,34 +5,36 @@ # Xilinx-Magic@RevRagnarok.com # Got the info from FPGA-FAQ 0026 # +# Rewritten to use pstring/H instead of hardcoded lengths by O. Freyermuth, +# fixes at least reading of bitfiles from Spartan 2, 3, 6. +# http://www.fpga-faq.com/FAQ_Pages/0026_Tell_me_about_bit_files.htm +# # First there is the sync header and its length 0 beshort 0x0009 >2 belong =0x0ff00ff0 >>&0 belong =0x0ff00ff0 ->>>&0 beshort =0x0000 ->>>>&0 pstring a Xilinx BIT data +>>>&0 byte =0x00 +>>>&1 beshort =0x0001 +>>>&3 string a Xilinx BIT data # Next is a Pascal-style string with the NCD name. We want to capture that. ->>>>0x0F pstring x - from %s -# It is followed by a NUL ->>>>>&1 byte 0x00 +>>>>&0 pstring/H x - from %s # And then 'b' ->>>>>&2 string b -# With the part number: -#>>>>>&5 string 4v (Virtex4) -#>>>>>&5 string 2v (Virtex II -#>>>>>>&0 string !p \b) -#>>>>>>&0 string p Pro) ->>>>>&4 pstring x - for %s -# And then NUL / 'c' / Build Data / NUL / 'd' / Date / NUL / 'e' / Data Length ->>>>>>&1 byte 0x00 ->>>>>>&2 string c ->>>>>>&4 pstring x - built %s ->>>>>>>&1 byte 0x00 ->>>>>>>&2 string d ->>>>>>>&4 pstring x \b(%s) ->>>>>>>>&1 byte 0x00 ->>>>>>>>&2 string e ->>>>>>>>&4 belong x - data length 0x%lx +>>>>>&1 string b +# Then the model / part number: +>>>>>>&0 pstring/H x - for %s +# Then 'c' +>>>>>>>&1 string c +# Then the build-date +>>>>>>>>&0 pstring/H x - built %s +# Then 'd' +>>>>>>>>>&1 string d +# Then the build-time +>>>>>>>>>>&0 pstring/H x \b(%s) +# Then 'e' +>>>>>>>>>>>&1 string e +# And length of data +>>>>>>>>>>>>&0 belong x - data length 0x%lx + # Raw bitstream files -0 long 0xffffffff ->&0 belong 0xaa995566 Xilinx RAW bitstream (.BIN) +0 long 0xffffffff +>&0 belong 0xaa995566 Xilinx RAW bitstream (.BIN)