Bitstream generation is different for the two modes. At the end of a Standard DFX configuration run (parent and each child), a call to generate bitstream or generate device image produces multiple bitstreams: a full device .bit or .pdi file containing static and reconfigurable logic in that configuration, as well as one partial .bit or .pdi file for each reconfigurable module present in that run.
At the end of the parent run for an abstract shell configuration, this is also true, as the full static design is present so both full and partial .bit or .pdi files can be generated. However, at the end of an abstract shell child run, only a single partial .bit or .pdi file for the target reconfigurable module implemented in that run might be created. A full device image cannot be generated for an abstract shell child run simply because the entire static design is not present in that checkpoint.
If you require a full device bitstream that contains reconfigurable modules from child
abstract shell runs together with the full static design, an in-memory design must be
assembled by using add_files and link_design (or
open_checkpoint followed by read_checkpoint
-cell). These commands should be used to pull together routed design
checkpoints containing the static (from the parent run) and reconfigurable (from child
runs) results, then a call to write_bistream -no_partial_bitfile (UltraScale+) or write_device_image
-no_partial_pdifile (Versal) can be used to generate a full
device programming image.
Just as for the Standard DFX mode, pr_verify is automatically called for
any child run to validate the implemented result compared to the locked static image it
was built from – in this case it is the abstract shell checkpoint starting point for
child runs. Device image creation does not run if this check fails.