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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.74/] [tools/] [tcl/] [rw11util/] [regmap.tcl] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 34 wfjm
# $Id: regmap.tcl 720 2015-12-28 14:52:45Z mueller $
2
#
3
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
#
5
# This program is free software; you may redistribute and/or modify it under
6
# the terms of the GNU General Public License as published by the Free
7
# Software Foundation, either version 2, or at your option any later version.
8
#
9
# This program is distributed in the hope that it will be useful, but
10
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
# for complete details.
13
#
14
#  Revision History:
15
# Date         Rev Version  Comment
16
# 2015-12-28   720   1.0    Initial version
17
# 2015-12-26   719   0.1    First draft
18
#
19
 
20
package provide rw11util 1.0
21
 
22
package require rlink
23
package require rwxxtpp
24
 
25
namespace eval rw11util {
26
 
27
  variable regmap
28
  array set regmap {}
29
  variable regmap_loaded 0
30
 
31
  #
32
  # regmap_add: add a register definition
33
  # 
34
  proc regmap_add {pack name amlist} {
35
    variable regmap
36
    if {[info exists regmap($name)]} {
37
      error "E-regmap_add: register '$name' already defined"
38
    }
39
 
40
    set regmap($name) [list $pack $amlist]
41
    return ""
42
  }
43
 
44
  #
45
  # regmap_get: get a register definition
46
  # 
47
  proc regmap_get {name am} {
48
    variable regmap
49
    variable regmap_loaded
50
 
51
    if {!$regmap_loaded} {regmap_load}
52
 
53
    foreach key [array names regmap] {
54
      if {[string match $key $name]} {
55
        set dsc    $regmap($key)
56
        set pack   [lindex $dsc 0]
57
        set amlist [lindex $dsc 1]
58
        foreach {amp reg} $amlist {
59
          if {[string match $amp $am]} {
60
            package require $pack
61
            return "${pack}::${reg}"
62
          }
63
        }
64
      }
65
    }
66
    return ""
67
  }
68
 
69
  #
70
  # regmap_txt: get text representation of a register
71
  # 
72
  proc regmap_txt {name am val} {
73
    set rdsc [regmap_get $name $am]
74
    if {$rdsc eq ""} return ""
75
    return [regtxt $rdsc $val]
76
  }
77
 
78
  #
79
  # regmap_load: load all rw11 register definitions
80
  # 
81
  proc regmap_load {} {
82
    variable regmap_loaded
83
    package require rw11
84
    package require ibd_dl11
85
    package require ibd_ibmon
86
    package require ibd_lp11
87
    package require ibd_pc11
88
    package require ibd_rhrp
89
    package require ibd_rk11
90
    package require ibd_rl11
91
    package require ibd_tm11
92
    set regmap_loaded 1
93
    return ""
94
  }
95
 
96
 
97
}

powered by: WebSVN 2.1.0

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