When it comes time to determine which players are on the field, and there are either no active players in the depth chart or all the players are set to rest, it will start looking at players not in the depth chart or even players from other positions.
The logic for filling a spot will first try to pull a player from the respective depth chart, based on spot's position, skipping players that have reached their rest threshold. If there are no players in the depth chart that can fill that spot, it will then go through a sequence to fill it based on the spot's position. The first check it will do is try to pull player's for that position that are not in the depth chart (on the bench) and do not require rest. If it still has not found a player for the spot, it will start pulling players from the depth chart ignoring whether or not they need rest. If after all of that, it has still not found a player, it will start playing players out of position.
Following is the chart for the progression of looking for a player at each position to play out of position, broken down by each depth chart position and the progression of working through by player position. When a player is pulled by position, they are randomly pulled from your bench with no type of evaluation being made.
|QB||P - RB - WR - TE|
|RB||WR - TE - QB|
|FB||RB - TE - OL - WR - QB|
|WR1||'WR2' - RB - TE - DB - QB|
|WR2||'WR1' - RB - TE - DB - QB|
|TE||RB - OL - QB - WR - LB|
|OL||TE - DL - LB - RB - WR|
|DT||LB - OL - DB|
|DE||LB - OL - DB|
|ILB||DL - TE - DB|
|OLB||DB - TE|
|S||LB - TE|
|CB||LB - WR|
Note: The WR1 and WR2 will each look to the other depth chart first in trying to find a player.