|
|
@ -830,6 +830,14 @@ sub decode_sdr_sdram($) |
|
|
|
(($bytes->[35] >> 7) ? -$temp : $temp) . " ns"); |
|
|
|
} |
|
|
|
|
|
|
|
sub as_ddr($$) |
|
|
|
{ |
|
|
|
my ($gen, $ctime) = @_; |
|
|
|
|
|
|
|
return " as DDR" . ($gen == 1 ? "" : $gen) . "-" . |
|
|
|
int(2000 / $ctime); |
|
|
|
} |
|
|
|
|
|
|
|
sub ddr_core_timings($$$$$) |
|
|
|
{ |
|
|
|
my ($cas, $ctime, $trcd, $trp, $tras) = @_; |
|
|
@ -931,7 +939,7 @@ sub decode_ddr_sdram($) |
|
|
|
|
|
|
|
if (exists $cas{$highestCAS}) { |
|
|
|
$core_timings = ddr_core_timings($highestCAS, $ctime, |
|
|
|
$trcd, $trp, $tras) . " as DDR-" . int(2000 / $ctime); |
|
|
|
$trcd, $trp, $tras) . as_ddr(1, $ctime); |
|
|
|
|
|
|
|
$cycle_time = "$ctime ns at CAS $highestCAS"; |
|
|
|
$access_time = (($bytes->[10] >> 4) * 0.1 + ($bytes->[10] & 0xf) * 0.01) |
|
|
@ -941,7 +949,7 @@ sub decode_ddr_sdram($) |
|
|
|
if (exists $cas{$highestCAS-0.5} && spd_written(@$bytes[23..24])) { |
|
|
|
$ctime1 = ($bytes->[23] >> 4) + ($bytes->[23] & 0xf) * 0.1; |
|
|
|
$core_timings .= "\n".ddr_core_timings($highestCAS-0.5, $ctime1, |
|
|
|
$trcd, $trp, $tras) . " as DDR-" . int(2000 / $ctime1); |
|
|
|
$trcd, $trp, $tras) . as_ddr(1, $ctime1); |
|
|
|
|
|
|
|
$cycle_time .= "\n$ctime1 ns at CAS ".($highestCAS-0.5); |
|
|
|
$access_time .= "\n".(($bytes->[24] >> 4) * 0.1 + ($bytes->[24] & 0xf) * 0.01) |
|
|
@ -951,7 +959,7 @@ sub decode_ddr_sdram($) |
|
|
|
if (exists $cas{$highestCAS-1} && spd_written(@$bytes[25..26])) { |
|
|
|
$ctime2 = ($bytes->[25] >> 4) + ($bytes->[25] & 0xf) * 0.1, |
|
|
|
$core_timings .= "\n".ddr_core_timings($highestCAS-1, $ctime2, |
|
|
|
$trcd, $trp, $tras) . " as DDR-" . int(2000 / $ctime2); |
|
|
|
$trcd, $trp, $tras) . as_ddr(1, $ctime2); |
|
|
|
|
|
|
|
$cycle_time .= "\n$ctime2 ns at CAS ".($highestCAS-1); |
|
|
|
$access_time .= "\n".(($bytes->[26] >> 4) * 0.1 + ($bytes->[26] & 0xf) * 0.01) |
|
|
@ -984,7 +992,7 @@ sub decode_ddr_sdram($) |
|
|
|
} |
|
|
|
|
|
|
|
printl_cond($ctime >= $ctime_min && ($ctime_max < 1 || $ctime <= $ctime_max), |
|
|
|
"tCL-tRCD-tRP-tRAS as DDR-".int(2000 / $ctime), |
|
|
|
"tCL-tRCD-tRP-tRAS" . as_ddr(1, $ctime), |
|
|
|
ddr_core_timings($best_cas, $ctime, |
|
|
|
$trcd, $trp, $tras)); |
|
|
|
} |
|
|
@ -1182,7 +1190,7 @@ sub decode_ddr2_sdram($) |
|
|
|
|
|
|
|
if (exists $cas{$highestCAS}) { |
|
|
|
$core_timings = ddr_core_timings($highestCAS, $ctime, |
|
|
|
$trcd, $trp, $tras) . " as DDR2-" . int(2000 / $ctime); |
|
|
|
$trcd, $trp, $tras) . as_ddr(2, $ctime); |
|
|
|
|
|
|
|
$cycle_time = tns($ctime) . " at CAS $highestCAS (tCK min)"; |
|
|
|
$access_time = tns(ddr2_sdram_atime($bytes->[10])) |
|
|
@ -1192,7 +1200,7 @@ sub decode_ddr2_sdram($) |
|
|
|
if (exists $cas{$highestCAS-1} && spd_written(@$bytes[23..24])) { |
|
|
|
$ctime1 = ddr2_sdram_ctime($bytes->[23]); |
|
|
|
$core_timings .= "\n".ddr_core_timings($highestCAS-1, $ctime1, |
|
|
|
$trcd, $trp, $tras) . " as DDR2-" . int(2000 / $ctime1); |
|
|
|
$trcd, $trp, $tras) . as_ddr(2, $ctime1); |
|
|
|
|
|
|
|
$cycle_time .= "\n".tns($ctime1) |
|
|
|
. " at CAS ".($highestCAS-1); |
|
|
@ -1203,7 +1211,7 @@ sub decode_ddr2_sdram($) |
|
|
|
if (exists $cas{$highestCAS-2} && spd_written(@$bytes[25..26])) { |
|
|
|
$ctime2 = ddr2_sdram_ctime($bytes->[25]); |
|
|
|
$core_timings .= "\n".ddr_core_timings($highestCAS-2, $ctime2, |
|
|
|
$trcd, $trp, $tras) . " as DDR2-" . int(2000 / $ctime2); |
|
|
|
$trcd, $trp, $tras) . as_ddr(2, $ctime2); |
|
|
|
|
|
|
|
$cycle_time .= "\n".tns($ctime2) |
|
|
|
. " at CAS ".($highestCAS-2); |
|
|
@ -1236,7 +1244,7 @@ sub decode_ddr2_sdram($) |
|
|
|
} |
|
|
|
|
|
|
|
printl_cond($ctime >= $ctime_min && $ctime <= $ctime_max, |
|
|
|
"tCL-tRCD-tRP-tRAS as DDR2-".int(2000 / $ctime), |
|
|
|
"tCL-tRCD-tRP-tRAS" . as_ddr(2,$ctime), |
|
|
|
ddr_core_timings($best_cas, $ctime, |
|
|
|
$trcd, $trp, $tras)); |
|
|
|
} |
|
|
|