OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/tags/w11a_V0.61/tools/tcl/rbbram
    from Rev 25 to Rev 26
    Reverse comparison

Rev 25 → Rev 26

/perf.tcl
0,0 → 1,162
# $Id: perf.tcl 516 2013-05-05 21:24:52Z mueller $
#
# Copyright 2011-2013 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# This program is free software; you may redistribute and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 2, or at your option any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for complete details.
#
# Revision History:
# Date Rev Version Comment
# 2013-01-04 469 1.0.2 perf_blk: add optional 2nd arg: trace
# 2012-12-27 465 1.0.1 adopt format, cover small ms and large kb
# 2011-04-17 376 1.0 Initial version
#
 
package provide rbbram 1.0
 
namespace eval rbbram {
#
# perf_blk: determine wblk/rblk write performance
#
proc perf_blk {{tmax 1000} {trace 0}} {
if {$tmax < 1} { error "-E: perf_blk: tmax argument must be >= 1" }
 
set amax [regget rbbram::CNTL(addr) -1]
set rval \
"nblk 1 wblk | 2 wblk | 4 wblk | 1 rblk | 2 rblk | 4 rblk "
append rval \
"\n ms/r kB/s ms/r kB/s ms/r kB/s ms/r kB/s ms/r kB/s ms/r kB/s"
 
foreach nblk {1 2 4 8 16 32 64 128 256} {
set wbuf0 {}
set wbuf1 {}
set wbuf2 {}
set wbuf3 {}
for {set i 0} {$i < $nblk} {incr i} {
lappend wbuf0 $i
lappend wbuf1 [expr {0x1000 + $i}]
lappend wbuf2 [expr {0x2000 + $i}]
lappend wbuf3 [expr {0x3000 + $i}]
}
 
set pval {}
 
# single wblk
if {$trace} { puts "1 wblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-wblk br.data $wbuf0
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + $nblk ) & $amax}]
}
lappend pval 1 $i $trun
 
# double wblk
if {$trace} { puts "2 wblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-wblk br.data $wbuf0 \
-wblk br.data $wbuf1
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + 2 * $nblk ) & $amax}]
}
lappend pval 2 $i $trun
 
# quad wblk
if {$trace} { puts "4 wblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-wblk br.data $wbuf0 \
-wblk br.data $wbuf1 \
-wblk br.data $wbuf2 \
-wblk br.data $wbuf3
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + 4 * $nblk ) & $amax}]
}
lappend pval 4 $i $trun
 
# single rblk
if {$trace} { puts "1 rblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-rblk br.data $nblk rbuf0
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + $nblk ) & $amax}]
}
lappend pval 1 $i $trun
 
# double rblk
if {$trace} { puts "2 rblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-rblk br.data $nblk rbuf0 \
-rblk br.data $nblk rbuf1
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + 2 * $nblk ) & $amax}]
}
lappend pval 2 $i $trun
 
# quad rblk
if {$trace} { puts "4 rblk for $nblk" }
set tbeg [clock clicks -milliseconds]
set addr 0x0000
for {set i 1} {1} {incr i} {
rlc exec \
-wreg br.cntl $addr \
-rblk br.data $nblk rbuf0 \
-rblk br.data $nblk rbuf1 \
-rblk br.data $nblk rbuf2 \
-rblk br.data $nblk rbuf3
set trun [expr {[clock clicks -milliseconds] - $tbeg}]
if {$trun > $tmax} { break }
set addr [expr {( $addr + 4 * $nblk ) & $amax}]
}
lappend pval 4 $i $trun
 
set oline [format "\n%4d" $nblk]
foreach {nr i trun} $pval {
set ms [expr {double($trun) / double($nr*$i)}]
set kb [expr {double(2*$nr*$i*$nblk) / double($trun)}]
if { $ms < 9.94 } {
append oline [format " %5.2f" $ms]
} else {
append oline [format " %5.1f" $ms]
}
if { $kb > 999.9 } {
append oline [format " %5.0f" $kb]
} else {
append oline [format " %5.1f" $kb]
}
}
 
append rval $oline
}
return $rval
}
}
/util.tcl
0,0 → 1,39
# $Id: util.tcl 516 2013-05-05 21:24:52Z mueller $
#
# Copyright 2011-2013 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# This program is free software; you may redistribute and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 2, or at your option any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for complete details.
#
# Revision History:
# Date Rev Version Comment
# 2011-03-19 372 1.0 Initial version
#
 
package provide rbbram 1.0
 
namespace eval rbbram {
#
# setup register descriptions for rbd_bram
#
regdsc CNTL {nbusy 15 6} {addr 9 10}
#
# setup: amap definitions for rbd_bram
#
proc setup {{base 0x00f4}} {
rlc amap -insert br.cntl [expr {$base + 0x00}]
rlc amap -insert br.data [expr {$base + 0x01}]
}
#
# init: reset rbd_bram (clear cntl register)
#
proc init {} {
rlc exec -wreg br.cntl 0x0000
}
}
/.cvsignore
0,0 → 1,39
pkgIndex.tcl
/.
. Property changes : Added: svn:ignore ## -0,0 +1,34 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log +pkgIndex.tcl

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.