I may have found a way to sign the rom.
But I can't find the location of the straps + there is the problem of fixing the checksum.
I think you need to find and parse three tables in case of nvidia: 'memory type' table which lists memory types supported by bios, 'timings' table which lists all timings without memory clocks and memory type and 'map' table which maps memory clocks+memory type to 'timing' id.
'timings' table starts at offset 0x2e40a from bios start, 'timings' are
'0c1910048902312411040588ec180022328061d3e270b2a60b86000200bc34000039020a06000000a65514040a01f06c1333330300000000000000000a00008000000000'
'152d1c078cc2312411060788ac180022328061d3e270b2a60b86000100bc34000039050806000000a85514068a01f06c1333330300000000000000000a00008000000000'
'388a4c1293c2b42000071288ec280022328082d5e270b2a60f86000200bc340000390d1006000000a0441a90ca0491901444440300000000000000000a00008000000000'
'42a55a1595c2e52000081588ec300022320083d5e270b2a60f86000200bc340000390f1206000000a2441e93cf0491901444440300000000000000000a00008000000000'
'4ec16a1997c2162900091988ec380022328083d5e270b2a60f86000200bc34000039121506000000a5442496920591901444440300000000000000000a00008000000000'
'58dc781c99822729000a1c88ec400023320084d5e270b2a60f86000200bc34000039141706000000a7442899540691901444440300000000000000000a00008000000000'
'122d16078802222411040788aa180022328061d3d270b2a60b86000100bc34000039020a06000000444414054a01f06c1333330300000000000000000a00008000000000'
'338a401391c2e42800071488aa280022328082d5d270b2a60f86000100bc34000039050a060000004444140d4a0391901444440300000000000000000a00008000000000'
'3da54c1794c2252900081888aa300022320083d5d270b2a60f86000100bc34000039060a060000004444140fca0391901444440300000000000000000a00008000000000'
'47c1581b96c2662900091c88aa380022328083d5d270b2a60f86000100bc34000039070a06000000444414128a0491901444440300000000000000000a00008000000000'
'50dc641e97828729000b2088aa400023320084d5d270b2a60f86000100bc34000039080a06000000444414140a0591901444440300000000000000000a00008000000000'
'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00008000000000'
'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00008000000000'
'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00008000000000'
'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00008000000000'
'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00008000000000'
'0c1910048902312411040588ec180022328061d3d270b2a60b86000200bc34000039020a06000000a65514040a01f06c1333330300000000000000000a00008000000000'
Clock ranges (not sure which multiplier should be used) used are: 0-540, 541-1299, 1300-2800, 2801-3300, 3301-3700, 3701-4500.
Timing ids for different memoty types are (ordered by clock): type0 - 0,1,2,3,4,5, type1 - 16,6,7,8,9,10, type2/3 - 0,1,1,2,3,none.
Type 0 is Samsung GDDR5, type 1,2,3 is Micron GDDR5.