General Description: Why is the file size of a 4.1 SVF file created with iMPACT smaller than an SVF file created with 3.1 JTAG Programmer?
The file size will differ because iMPACT takes advantage of certain global padding instructions. 4.1i SVF files use the TDR (Trailer Data Register), TIR (Trailer Instruction Register), HDR (Header Data Register), and HIR (Header Instruction Register) instructions.
When a device is performing an operation, all other devices in the chain must be put into bypass. These global commands specify the number of bits to pad the beginning and end of an instruction; this cuts down on the overhead needed to put the other devices in bypass, because the padding does not need to be specified for each SIR or SDR instruction. As the number of devices in the chain increases, the advantage of using these global commands is much more significant.
For example, the "get device ID" of Device-1 for JTAG Programmer would be:
// Loading device 'simple(Device2)' with 'bypass' instruction. SIR 13 TDI (1fff) SMASK (1fff) TDO (0101) MASK (03e3) ; // Loading device 'simple(Device1)' with 'idcode' instruction. SIR 13 TDI (09ff) SMASK (1fff) ; SDR 33 TDI (01fffffffe) SMASK (01ffffffff) TDO (0000c38126) MASK (001ffffffe) ; // Loading device 'simple(Device1)' with 'bypass' instruction. SIR 13 TDI (1fff) SMASK (1fff) ;
whereas, with iMPACT, it would look like:
TIR 0 ; HIR 8 TDI (ff) SMASK (ff) ; HDR 1 TDI (00) SMASK (01) ; TDR 0 ; //Loading device with 'idcode' instruction. SIR 5 TDI (09) SMASK (1f) ;