soc_maker 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/History.txt +4 -0
  4. data/LICENSE +678 -0
  5. data/README.rdoc +228 -0
  6. data/Rakefile +46 -0
  7. data/bin/soc_maker_cli +80 -0
  8. data/bin/soc_maker_parser +85 -0
  9. data/core_lib/cores/adv_debug_sys/01_adv_debug_sys.yaml +245 -0
  10. data/core_lib/cores/or1200_rel2/01_or1200.yaml +208 -0
  11. data/core_lib/cores/or1200_rel2/02_or1200_files.yaml +421 -0
  12. data/core_lib/cores/or1200_rel2/03_or1200_sparam.yaml +188 -0
  13. data/core_lib/cores/or1200_rel2/or1200_defines.v.in +1799 -0
  14. data/core_lib/cores/ram_wb/ram_wb.yaml +102 -0
  15. data/core_lib/cores/ram_wb/ram_wb_b3.v.in +259 -0
  16. data/core_lib/cores/uart16550/01_uart16550.yaml +99 -0
  17. data/core_lib/cores/uart16550/02_uart16550_files.yaml +70 -0
  18. data/core_lib/cores/wb_connect/minsoc_tc_top.v +1802 -0
  19. data/core_lib/cores/wb_connect/wb_connect.yaml +733 -0
  20. data/core_lib/inc.yaml +13 -0
  21. data/core_lib/interfaces/clk_rst/clk.yaml +9 -0
  22. data/core_lib/interfaces/clk_rst/rst.yaml +9 -0
  23. data/core_lib/interfaces/clk_rst/single.yaml +7 -0
  24. data/core_lib/interfaces/debug/debug.yaml +32 -0
  25. data/core_lib/interfaces/jtag/jtag.yaml +13 -0
  26. data/core_lib/interfaces/jtag/jtag_tap.yaml +22 -0
  27. data/core_lib/interfaces/power/or_power.yaml +25 -0
  28. data/core_lib/interfaces/uart/uart.yaml +21 -0
  29. data/core_lib/interfaces/wishbone/wishbone_ma_b3.yaml +54 -0
  30. data/core_lib/interfaces/wishbone/wishbone_sl_b3.yaml +51 -0
  31. data/doc/class_arch.uml +5113 -0
  32. data/doc/fig/hierarchical.svg +273 -0
  33. data/examples/or1200_test/or1200_test.cmd +78 -0
  34. data/examples/or1200_test/or1200_test.rb +136 -0
  35. data/examples/or1200_test/rtl/or1200_test_top.vhd +274 -0
  36. data/examples/or1200_test/rtl/s3astarter.ucf +10 -0
  37. data/examples/or1200_test/rtl/xilinx_internal_jtag.v +438 -0
  38. data/examples/or1200_test/rtl/xilinx_internal_jtag_options.v +12 -0
  39. data/examples/or1200_test/sw/README.txt +35 -0
  40. data/examples/or1200_test/sw/bin2vmem.c +159 -0
  41. data/examples/or1200_test/sw/board.h +24 -0
  42. data/examples/or1200_test/sw/compile.sh +18 -0
  43. data/examples/or1200_test/sw/except.S +152 -0
  44. data/examples/or1200_test/sw/int.c +79 -0
  45. data/examples/or1200_test/sw/int.h +14 -0
  46. data/examples/or1200_test/sw/interconnect.h +17 -0
  47. data/examples/or1200_test/sw/interrupts.c +14 -0
  48. data/examples/or1200_test/sw/main.c +16 -0
  49. data/examples/or1200_test/sw/or1200.h +454 -0
  50. data/examples/or1200_test/sw/orp.ld +60 -0
  51. data/examples/or1200_test/sw/reset.S +112 -0
  52. data/examples/or1200_test/sw/support.c +123 -0
  53. data/examples/or1200_test/sw/support.h +33 -0
  54. data/examples/or1200_test/sw/tick.c +30 -0
  55. data/examples/or1200_test/sw/tick.h +2 -0
  56. data/examples/or1200_test/sw/uart.c +136 -0
  57. data/examples/or1200_test/sw/uart.h +126 -0
  58. data/lib/soc_maker.rb +324 -0
  59. data/lib/soc_maker/cli.rb +544 -0
  60. data/lib/soc_maker/conf.rb +310 -0
  61. data/lib/soc_maker/core_def.rb +579 -0
  62. data/lib/soc_maker/core_inst.rb +305 -0
  63. data/lib/soc_maker/err.rb +211 -0
  64. data/lib/soc_maker/hdl_coder.rb +500 -0
  65. data/lib/soc_maker/hdl_file.rb +166 -0
  66. data/lib/soc_maker/hdl_parser.rb +431 -0
  67. data/lib/soc_maker/ifc_def.rb +193 -0
  68. data/lib/soc_maker/ifc_port.rb +133 -0
  69. data/lib/soc_maker/ifc_spc.rb +180 -0
  70. data/lib/soc_maker/lib.rb +289 -0
  71. data/lib/soc_maker/lib_inc.rb +109 -0
  72. data/lib/soc_maker/parameter.rb +149 -0
  73. data/lib/soc_maker/soc_def.rb +847 -0
  74. data/lib/soc_maker/sparameter.rb +289 -0
  75. data/lib/soc_maker/version.rb +8 -0
  76. data/lib/soc_maker/ypp.rb +130 -0
  77. data/soc_maker.gemspec +28 -0
  78. data/spec/cli_cmds1.txt +39 -0
  79. data/spec/cli_spec.rb +49 -0
  80. data/spec/conf_spec.rb +44 -0
  81. data/spec/core_def_spec.rb +503 -0
  82. data/spec/core_inst_spec.rb +169 -0
  83. data/spec/hdl_file_spec.rb +154 -0
  84. data/spec/hdl_parser_spec.rb +201 -0
  85. data/spec/ifc_def_spec.rb +121 -0
  86. data/spec/ifc_port_spec.rb +92 -0
  87. data/spec/ifc_spc_spec.rb +196 -0
  88. data/spec/lib_inc_spec.rb +99 -0
  89. data/spec/lib_spec.rb +209 -0
  90. data/spec/parameter_spec.rb +86 -0
  91. data/spec/soc_def_spec.rb +611 -0
  92. data/spec/soc_maker_spec.rb +7 -0
  93. data/spec/sparameter_spec.rb +182 -0
  94. data/spec/spec_helper.rb +78 -0
  95. data/spec/test_soc.yaml +105 -0
  96. data/spec/test_soc2.yaml +60 -0
  97. data/spec/test_soc_lib/cores/core_A_rel1/00_core_a.yaml +75 -0
  98. data/spec/test_soc_lib/cores/core_A_rel1/01_core_a.yaml +57 -0
  99. data/spec/test_soc_lib/cores/core_A_rel1/core_a.vhd +29 -0
  100. data/spec/test_soc_lib/cores/core_A_rel1/core_a_pkg.vhd.src +3 -0
  101. data/spec/test_soc_lib/cores/core_A_rel1/core_a_pkg2.vhd.src +4 -0
  102. data/spec/test_soc_lib/cores/core_A_rel1/core_a_pkg3.v.src +6 -0
  103. data/spec/test_soc_lib/cores/core_B_rel1/core_b.vhd +25 -0
  104. data/spec/test_soc_lib/cores/core_B_rel1/core_b.yaml +36 -0
  105. data/spec/test_soc_lib/cores/core_C_v1/core_C.vhd +57 -0
  106. data/spec/test_soc_lib/cores/core_C_v1/core_c.yaml +42 -0
  107. data/spec/test_soc_lib/cores/soc_A/soc_A.yaml +12 -0
  108. data/spec/test_soc_lib/cores/soc_maker_include.yaml +6 -0
  109. data/spec/test_soc_lib/ifcs/core_AB_ifc/bidir_ifc.yaml +19 -0
  110. data/spec/test_soc_lib/ifcs/core_AB_ifc/core_AB_ifc.yaml +15 -0
  111. data/spec/test_soc_lib/ifcs/core_AB_ifc/top_ifc.yaml +9 -0
  112. data/spec/test_soc_lib/soc_maker_include.yaml +4 -0
  113. data/spec/yaml_examples.rb +367 -0
  114. data/spec/ypp_spec.rb +156 -0
  115. data/test/test_soc_maker.rb +0 -0
  116. metadata +255 -0
@@ -0,0 +1,228 @@
1
+ = System-on-Chip Maker (soc_maker)
2
+ ===========
3
+
4
+ The System-on-Chip (SoC) Maker is a tool to design and create SoCs
5
+ in a simple way, written in Ruby.
6
+
7
+ PLEASE NOTE: THIS SOFTWARE IS IN DEVELOPMENT AND HIGHLY EXPERIMENTAL!!
8
+
9
+
10
+
11
+ == Current Features
12
+
13
+ * All configuration files are YAML based
14
+ (see http://en.wikipedia.org/wiki/YAML)
15
+ * Hierarchical systems can be designed
16
+ * Usage of an IP core library
17
+ * A CLI for an easy interaction
18
+ (not completed, needs to be re-designed or removed, interaction is not that easy)
19
+ * Ruby interface to interact with the soc_maker on a lower level
20
+ * VHDL output
21
+ * parameterization of cores
22
+ * instance parameterization (vhdl-generics/verilog-parameters)
23
+ * global/static parameterization (vhdl-packages/verilog-includes)
24
+
25
+
26
+ == Install
27
+ * from git:
28
+
29
+ git clone https://github.com/feddischson/soc_maker.git
30
+ cd soc_maker
31
+ git checkout tags/v0.1.0 # please adapt version if necessary
32
+ # see https://github.com/feddischson/soc_maker/releases
33
+ gem build soc_maker.gemspec
34
+ gem install soc_maker-0.1.0.gem # requires ruby >= 2.0
35
+
36
+
37
+ == TODOs
38
+ * User-Guide
39
+ - YAML API documentation
40
+ * API version check
41
+
42
+ == Planed Features
43
+ * Graphical User Interface (GUI)
44
+ * Import wizzard: should scan IP core sources and suggest configuration
45
+ * Verilog output
46
+ * Plugin-interface
47
+ * Synthesis and Simulation support plugins
48
+ * More cores
49
+
50
+ == Status
51
+ A first "Hellow World" SOC has been created, simulated, synthesized and tested
52
+ on a Spartan-3AN starter kit board.
53
+ The system consists of an OpenRISC CPU, some on-chip memory and a UART core
54
+ (see ./examples/or1200_test).
55
+
56
+ Furthermore, some dummy cores have been assembled to a hierarchical system,
57
+ where a SOC contains a few cores and a sub-SOC.
58
+
59
+ The following cores are integrated into the SOC-Maker core library and can be used:
60
+ * the Advanced Debug System (http://opencores.org/project,adv_debug_sys)
61
+ * the OR1200 OpenRISC processor (http://opencores.org/or1k/Main_Page)
62
+ * the ram_wb from the openrisc project (http://opencores.org/ocsvn/openrisc/openrisc/trunk/orpsocv2/rtl/verilog/ram_wb)
63
+ * the UART16550 module (http://opencores.org/project,uart16550)
64
+ * a wishbone bus connection from the min-soc project (http://www.minsoc.com/)
65
+
66
+
67
+
68
+ == Motivation
69
+ The motivation of this project is the need of an open-source application
70
+ to create system-on-chips easily and fast on a higher level than vhdl or verilog.
71
+ By creating a generic application, it can support a wide range of
72
+ processors, cores, controllers and bus-topologies.
73
+ By using the SoC-Maker, it should be easy for a system-designer to assemble
74
+ multiple IP-cores together with a low effort and without low-level knowledges.
75
+ Furthermore, pre-defined SoCs can be published and extended. This makes it
76
+ interesting for IP-core developers. An existing SoC created with the
77
+ Soc-Maker can be easily extended by a custom IP core which is then tested
78
+ and used.
79
+ Not only memory-mapped systems are a target application, also signal-processing
80
+ systems are interesting, where signal-processing blocks are concatenated.
81
+
82
+ One useful example is an Open-RISC based SoC, where it would be nice, if
83
+ core and system-developers can easily create a SoC with an
84
+ Open-RISC CPU. The need of a detailed knowledge of the Open-RISC, the Wishbone
85
+ bus and so on is not needed anymore.
86
+
87
+ A second example is a any kind of wireless receiver, where signals are filtered, mixed,
88
+ decimated and further processed. All the signal processing can be put
89
+ together into a subsystem with
90
+ parameters (mixer-resolution, decimation-rate and son on). On a higher level, this
91
+ sub-system can then be used in a typical memory-mapped SoC together with other
92
+ IP-cores and sub-systems.
93
+
94
+
95
+
96
+
97
+
98
+ == The Goal
99
+
100
+ <b>The goal in one sentence</b>: the SoC-Maker should make it possible to parameterize and assemble
101
+ one or multiple IP-cores into one IP-core on a high level.
102
+
103
+
104
+ *IP-core*
105
+ IP stands for Intellectual Property and the definition can be found on wikipedia:
106
+ http://en.wikipedia.org/wiki/Semiconductor_intellectual_property_core
107
+
108
+
109
+ *Parameterization*
110
+ Parameterization of IP-cores says, that the user can configure and setup all
111
+ required parameters of an IP-core.
112
+
113
+
114
+ *Assembly*
115
+ Assembly in this context means, that the IP-cores are connected in a pre-defined
116
+ or user-defined way, that the final IP-core works as required by the
117
+ user.
118
+
119
+
120
+ <b>One or Multiple IP cores</b>
121
+ The minimum number of IP-cores, which are used in such a system is one. Of course,
122
+ the common case is that more than one IP-core is used to create one final
123
+ IP-core.
124
+
125
+
126
+ <b>Into one IP core</b>
127
+ The assembly into one IP-core can be seen in different ways: on the one hand,
128
+ this final IP-core can be seen as a System-on-Chip. On the other-hand, it can
129
+ be defined as a subsystem with additional parameters. This parameters are then
130
+ passed to the single IP-cores. The subsystem, which is one big IP-core, can then
131
+ be used in other systems or sub-systems.
132
+
133
+
134
+ <b>The High Level</b>
135
+ The high level says, that the user must not work on code or RTL level.
136
+ Furthermore, the high-level can can be different: one way could be
137
+ a graphical user interface. A second way might be an easy to read ASCII file
138
+ written for example in XML, YAML or JSON.
139
+
140
+
141
+
142
+
143
+
144
+ == Requirements
145
+
146
+ - The user is able to organize IP cores and interfaces in a library, which includes
147
+ * adding existing IP cores / interfaces
148
+ * removing IP cores / interfaces
149
+ * displaying IP cores (which are in the library)
150
+ * adding IP cores to the target-SOC
151
+
152
+ - There should be a library functionallity: the library should hold
153
+ * core definitions
154
+ * interface definitions
155
+
156
+
157
+ - There should exist a core definition for each core. The definition should define the following data
158
+ * all source files, which are required for synthesis only
159
+ * all source files, which are required for simulation only
160
+ * all source files, for synthesis and simulation
161
+ * top-level source file
162
+ * top-level port and parameters
163
+ * parameter configuration and validation
164
+ * an option to download/check out files from a repository (svn, git ...)
165
+
166
+
167
+ - There should exist an interface specification for each interface used in the library
168
+ * The interface specification defines, how the IP cores are connected
169
+ * Allow versioning
170
+ * Allow a wide range of topologies
171
+
172
+ - There should be a SOC definition
173
+ The SOC definition defines, which IP cores are used
174
+ by the target-SOC, how they are connected and how the IP cores
175
+ are parameterized.
176
+
177
+ - IP-core configuration
178
+ It must be possible to configure an IP core. The configurable parameters
179
+ are defined in the IP-core definition and set in the SOC definition.
180
+ The parameters are then used to instantiate the IP-core during the HDL generation
181
+
182
+ - Toplevel-Generation
183
+ The SoC maker should auto-generate a toplevel in VHDL or Verilog.
184
+ Both HDL languages should be supported for generation.
185
+
186
+ - Configuration Files
187
+ All configuration should be stored in YAML files, this includes
188
+ * SOC definition
189
+ * Core definition
190
+ * Interface specification
191
+ * SoC maker configuration
192
+
193
+ - User-Interaction
194
+ It should be possible to use the SOC-Maker on three levels:
195
+ * Script-level: this is the lowest level and uses the ruby API directly
196
+ * CLI-level: a commandline-interface can be used to interact with the API
197
+ * GUI-Level: this is the highest level: a graphical user interface should
198
+ make it possible to have a simple interaction with the API
199
+
200
+
201
+
202
+
203
+
204
+ == Author
205
+
206
+ <b>Christian Haettich</b>,
207
+ <tt>feddischson [ at ] opencores.org</tt>
208
+
209
+
210
+ == License
211
+
212
+
213
+ Copyright (C) 2014 Christian Haettich - feddischson [ at ] opencores.org
214
+
215
+ This program is free software: you can redistribute it and/or modify
216
+ it under the terms of the GNU General Public License as published by
217
+ the Free Software Foundation, either version 3 of the License, or
218
+ (at your option) any later version.
219
+
220
+ This program is distributed in the hope that it will be useful,
221
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
222
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
223
+ GNU General Public License for more details.
224
+
225
+ You should have received a copy of the GNU General Public License
226
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
227
+
228
+
@@ -0,0 +1,46 @@
1
+ require 'rspec/core/rake_task'
2
+ require 'rake/task'
3
+ require_relative 'lib/soc_maker'
4
+ begin
5
+ require 'bones'
6
+ rescue LoadError
7
+ abort '### Please install the "bones" gem ###'
8
+ end
9
+
10
+
11
+ task :default => :spec
12
+ task 'gem:release' => 'test:all'
13
+
14
+ task :build do
15
+ system "gem build soc_maker.gemspec"
16
+ end
17
+
18
+ task :release => :build do
19
+ system "gem push soc_maker-#{SOCMaker::VERSION}.gem"
20
+ end
21
+
22
+
23
+ Bones {
24
+ name 'soc_maker'
25
+ authors 'Christian Haettich'
26
+ email 'feddischson [ at ] opencores.org'
27
+ url 'https://github.com/feddischson/soc_maker'
28
+ }
29
+
30
+ RSpec::Core::RakeTask.new(:spec) do |c|
31
+ c.ruby_opts="-w"
32
+ end
33
+
34
+
35
+ desc 'generate API documentation to doc/rdocs/index.html'
36
+
37
+ Rake::RDocTask.new do |rd|
38
+ rd.rdoc_dir = 'doc/rdocs'
39
+ rd.main = 'README.rdoc'
40
+ rd.rdoc_files.include 'README.rdoc', 'LICENSE', "bin", "lib"
41
+ rd.title = "System-on-Chip Maker (soc_maker) Version #{SOCMaker::VERSION} API Documentation"
42
+ rd.options << '--line-numbers'
43
+ rd.options << '--all'
44
+ end
45
+
46
+
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root = File.expand_path('../..', __FILE__)
4
+ require File.join(root, %w[lib soc_maker])
5
+ require 'ostruct'
6
+
7
+
8
+ cmd_options = OpenStruct.new
9
+ cmd_options.lib_inc = []
10
+ cmd_options.log_out = "socmaker_log.txt"
11
+
12
+ ##
13
+ # create option-parser and manage
14
+ # options
15
+ #
16
+ OptionParser.new do |opts|
17
+
18
+ opts.banner = "Usage: soc_maker_cli [ options ]"
19
+
20
+ opts.on("-h", "--help", "Show this message") do
21
+ puts opts
22
+ exit
23
+ end
24
+
25
+ opts.on( "-l", "--library <p1,p2,p3...>", Array,
26
+ "Sets library include paths (overrides config value)" ) do |path|
27
+ cmd_options.lib_inc << path
28
+ end
29
+
30
+ opts.on( "-o", "--log-out <file>", String, "Sets the log output file" ) do |file|
31
+ cmd_options.log_out = file
32
+ end
33
+
34
+
35
+ opts.on( "-q", "--quiet", "Run quiet" ) do |q|
36
+ cmd_options.quiet = q
37
+ end
38
+
39
+
40
+ begin
41
+ opts.parse!( ARGV )
42
+ rescue OptionParser::ParseError => e
43
+ STDERR.puts e.message, "\n", opts
44
+ exit(-1)
45
+ end
46
+ end
47
+
48
+
49
+ # manage stdout value
50
+ cmd_options.log_out = STDOUT if cmd_options.log_out.upcase == "STDOUT"
51
+
52
+
53
+ # setup options for loading the SOCMaker core
54
+ options = {}
55
+ options[ :libpath ] = cmd_options.lib_inc.flatten if cmd_options.lib_inc.size > 0
56
+ options[ :logger_out ] = cmd_options.log_out
57
+
58
+ ##
59
+ # initialize SOCMaker core
60
+ # this sets up logging and parses all yaml files
61
+ # found in the configure path (see also soc_maker_conf.rb)
62
+ SOCMaker::load( options )
63
+
64
+ # Print license info
65
+
66
+ if not cmd_options.quiet
67
+ puts SOCMaker::conf[ :LIC ] + "\n\n"
68
+ end
69
+
70
+
71
+ cli = SOCMaker::Cli::instance
72
+ if ARGF.filename != '-'
73
+ ARGF.each do |line|
74
+ cli.process_cmd line
75
+ end
76
+ end
77
+ cli.run
78
+
79
+ # vim: noai:ts=2:sw=2
80
+
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root = File.expand_path('../..', __FILE__)
4
+ require File.join(root, %w[lib soc_maker])
5
+ require 'ostruct'
6
+
7
+ cmd_options = OpenStruct.new
8
+ cmd_options.toplevel = ""
9
+ cmd_options.log_out = "socmaker_log.txt"
10
+ cmd_options.files = []
11
+ cmd_options.out = ""
12
+ ##
13
+ # create option-parser and manage
14
+ # options
15
+ #
16
+ OptionParser.new do |opts|
17
+
18
+ opts.banner = "Usage: soc_maker_parser [ options ]"
19
+
20
+ opts.on("-h", "--help", "Show this message") do
21
+ puts opts
22
+ exit
23
+ end
24
+
25
+ opts.on( "-t", "--toplevel <toplevel-file>", String,
26
+ "The toplevel HDL file" ) do |path|
27
+ cmd_options.toplevel << path
28
+ end
29
+
30
+ opts.on( "-o", "--log-out <file>", String, "Sets the log output file" ) do |file|
31
+ cmd_options.log_out = file
32
+ end
33
+
34
+
35
+ opts.on( "-f", "--files <files1, files2, >", Array,
36
+ "Paths to identify the HDL files, for example \"./core_x/hdl/*.v\"" ) do |files|
37
+ cmd_options.files = files
38
+ end
39
+
40
+
41
+ opts.on( "-q", "--quiet", "Run quiet" ) do |q|
42
+ cmd_options.quiet = q
43
+ end
44
+
45
+
46
+ opts.on( "-c", "--core-out <file>", String, "Sets the core output file" ) do |file|
47
+ cmd_options.out = file
48
+ end
49
+
50
+
51
+
52
+ begin
53
+ opts.parse!( ARGV )
54
+ raise OptionParser::MissingArgument if cmd_options[ :toplevel ].size == 0
55
+ raise OptionParser::MissingArgument if cmd_options[ :files].size == 0
56
+ rescue OptionParser::ParseError => e
57
+ STDERR.puts e.message, "\n", opts
58
+ exit(-1)
59
+ end
60
+
61
+ options = {}
62
+ options[ :logger_out ] = cmd_options.log_out
63
+ options[ :skip_refresh ] = true
64
+
65
+ ##
66
+ # initialize SOCMaker core
67
+ # this sets up logging and parses all yaml files
68
+ # found in the configure path (see also soc_maker_conf.rb)
69
+ SOCMaker::load( options )
70
+
71
+ # Print license info
72
+ if not cmd_options.quiet
73
+ puts SOCMaker::conf[ :LIC ] + "\n\n"
74
+ end
75
+
76
+
77
+
78
+ result = SOCMaker::HDLParser.instance.parse_core( cmd_options[ :toplevel ], cmd_options[ :files ] )
79
+ if cmd_options[ :out ] and cmd_options[ :out ].size > 0
80
+ File.open( cmd_options[ :out ], "w") { |file| file.write( result ) }
81
+ else
82
+ puts result
83
+ end
84
+ end
85
+
@@ -0,0 +1,245 @@
1
+ SOCM_CORE
2
+ name: Advanced Debug System
3
+ description: Advanced Debug System
4
+ id: adv_debug_sys,ads_3
5
+ license: LGPL
6
+ licensefile:
7
+ author:
8
+ authormail:
9
+ vccmd: svn co http://opencores.org/ocsvn/adv_debug_sys/adv_debug_sys/tags/ADS_RELEASE_3_0_0/Hardware/adv_dbg_if/rtl rtl
10
+ toplevel: adbg_top
11
+
12
+ interfaces:
13
+
14
+
15
+
16
+ :jtag: SOCM_IFC
17
+ name: jtag_tap
18
+ dir: 1
19
+ id: jtag_tap,1
20
+ ports:
21
+ :tck_i: SOCM_PORT
22
+ len: 1
23
+ spc_ref: tck
24
+ :tdi_i: SOCM_PORT
25
+ len: 1
26
+ spc_ref: tdi
27
+ :tdo_o: SOCM_PORT
28
+ len: 1
29
+ spc_ref: tdo
30
+ :rst_i: SOCM_PORT
31
+ len: 1
32
+ spc_ref: rst
33
+
34
+ :shift_dr_i: SOCM_PORT
35
+ len: 1
36
+ spc_ref: shift
37
+ :pause_dr_i: SOCM_PORT
38
+ len: 1
39
+ spc_ref: pause
40
+ :update_dr_i: SOCM_PORT
41
+ len: 1
42
+ spc_ref: update
43
+ :capture_dr_i: SOCM_PORT
44
+ len: 1
45
+ spc_ref: capture
46
+ :debug_select_i: SOCM_PORT
47
+ len: 1
48
+ spc_ref: select
49
+
50
+
51
+
52
+
53
+ :wb_ifc: SOCM_IFC
54
+ name: wishbone_ma
55
+ dir: 1
56
+ id: wishbone_ma,b3
57
+ ports:
58
+ :wb_clk_i: SOCM_PORT
59
+ len: 1
60
+ spc_ref: clk
61
+ :wb_rst_i: SOCM_PORT
62
+ len: 1
63
+ spc_ref: rst
64
+ :wb_adr_o: SOCM_PORT
65
+ spc_ref: adr
66
+ len: 32
67
+ :wb_dat_o: SOCM_PORT
68
+ spc_ref: dat_i
69
+ len: 32
70
+ :wb_dat_i: SOCM_PORT
71
+ spc_ref: dat_o
72
+ len: 32
73
+ :wb_cyc_o: SOCM_PORT
74
+ spc_ref: cyc
75
+ len: 1
76
+ :wb_stb_o: SOCM_PORT
77
+ spc_ref: stb
78
+ len: 1
79
+ :wb_sel_o: SOCM_PORT
80
+ spc_ref: sel
81
+ len: 4
82
+ :wb_we_o: SOCM_PORT
83
+ spc_ref: we
84
+ len: 1
85
+ :wb_ack_i: SOCM_PORT
86
+ spc_ref: ack
87
+ len: 1
88
+ :wb_cab_o: SOCM_PORT
89
+ spc_ref: cab
90
+ len: 1
91
+ :wb_err_i: SOCM_PORT
92
+ spc_ref: err
93
+ len: 1
94
+ :wb_cti_o: SOCM_PORT
95
+ spc_ref: cti
96
+ len: 3
97
+ :wb_bte_o: SOCM_PORT
98
+ spc_ref: bte
99
+ len: 2
100
+
101
+ :cpu0_dbg_clk: SOCM_IFC
102
+ name: clk
103
+ dir: 1
104
+ id: clk,1
105
+ ports:
106
+ :cpu0_clk_i: SOCM_PORT
107
+ len: 1
108
+ spc_ref: clk
109
+
110
+ :cpu0_dbg_rst: SOCM_IFC
111
+ name: rst
112
+ dir: 0
113
+ id: rst,1
114
+ ports:
115
+ :cpu0_rst_o: SOCM_PORT
116
+ len: 1
117
+ spc_ref: rst
118
+
119
+ :cpu0_dbg: SOCM_IFC
120
+ name: debug
121
+ dir: 0
122
+ id: debug,1
123
+ ports:
124
+ :cpu0_addr_o: SOCM_PORT
125
+ len: 32
126
+ spc_ref: dbg_adr
127
+ :cpu0_data_o: SOCM_PORT
128
+ len: 32
129
+ spc_ref: dbg_dat_o
130
+ :cpu0_data_i: SOCM_PORT
131
+ len: 32
132
+ spc_ref: dbg_dat_i
133
+ :cpu0_bp_i: SOCM_PORT
134
+ len: 1
135
+ spc_ref: dbg_bpo
136
+ :cpu0_stall_o: SOCM_PORT
137
+ spc_ref: dbg_stall
138
+ len: 1
139
+ :cpu0_stb_o: SOCM_PORT
140
+ len: 1
141
+ spc_ref: dbg_stb
142
+ :cpu0_we_o: SOCM_PORT
143
+ len: 1
144
+ spc_ref: dbg_we
145
+ :cpu0_ack_i: SOCM_PORT
146
+ len: 1
147
+ spc_ref: dbg_ack
148
+
149
+ # :dbg_ewt_i: SOCM_PORT
150
+ # len: 1
151
+ # spc_ref: dbg_ewt
152
+ # :dbg_lss_o: SOCM_PORT
153
+ # len: 4
154
+ # spc_ref: dbg_lss
155
+ # :dbg_is_o: SOCM_PORT
156
+ # len: 2
157
+ # spc_ref: dbg_iso
158
+ # :dbg_wp_o: SOCM_PORT
159
+ # len: 11
160
+ # spc_ref: dbg_wpo
161
+
162
+
163
+ hdlfiles:
164
+ :adbg_top: SOCM_HDL_FILE
165
+ use_syn: true
166
+ use_sim: true
167
+ type: verilog
168
+ path: rtl/verilog/adbg_top.v
169
+
170
+ :adbg_crc32: SOCM_HDL_FILE
171
+ use_syn: true
172
+ use_sim: true
173
+ type: verilog
174
+ path: rtl/verilog/adbg_crc32.v
175
+ :adbg_defines: SOCM_HDL_FILE
176
+ use_syn: true
177
+ use_sim: true
178
+ type: verilog
179
+ path: rtl/verilog/adbg_defines.v
180
+ :adbg_jsp_biu: SOCM_HDL_FILE
181
+ use_syn: true
182
+ use_sim: true
183
+ type: verilog
184
+ path: rtl/verilog/adbg_jsp_biu.v
185
+ :adbg_jsp_module: SOCM_HDL_FILE
186
+ use_syn: true
187
+ use_sim: true
188
+ type: verilog
189
+ path: rtl/verilog/adbg_jsp_module.v
190
+ :adbg_or1k_biu: SOCM_HDL_FILE
191
+ use_syn: true
192
+ use_sim: true
193
+ type: verilog
194
+ path: rtl/verilog/adbg_or1k_biu.v
195
+ :adbg_or1k_defines: SOCM_HDL_FILE
196
+ use_syn: true
197
+ use_sim: true
198
+ type: verilog
199
+ path: rtl/verilog/adbg_or1k_defines.v
200
+ :adbg_or1k_module: SOCM_HDL_FILE
201
+ use_syn: true
202
+ use_sim: true
203
+ type: verilog
204
+ path: rtl/verilog/adbg_or1k_module.v
205
+ :adbg_or1k_status_reg: SOCM_HDL_FILE
206
+ use_syn: true
207
+ use_sim: true
208
+ type: verilog
209
+ path: rtl/verilog/adbg_or1k_status_reg.v
210
+ :adbg_top: SOCM_HDL_FILE
211
+ use_syn: true
212
+ use_sim: true
213
+ type: verilog
214
+ path: rtl/verilog/adbg_top.v
215
+ :adbg_wb_biu: SOCM_HDL_FILE
216
+ use_syn: true
217
+ use_sim: true
218
+ type: verilog
219
+ path: rtl/verilog/adbg_wb_biu.v
220
+ :adbg_wb_defines: SOCM_HDL_FILE
221
+ use_syn: true
222
+ use_sim: true
223
+ type: verilog
224
+ path: rtl/verilog/adbg_wb_defines.v
225
+ :adbg_wb_module: SOCM_HDL_FILE
226
+ use_syn: true
227
+ use_sim: true
228
+ type: verilog
229
+ path: rtl/verilog/adbg_wb_module.v
230
+ :bytefifo: SOCM_HDL_FILE
231
+ use_syn: true
232
+ use_sim: true
233
+ type: verilog
234
+ path: rtl/verilog/bytefifo.v
235
+ :syncflow: SOCM_HDL_FILE
236
+ use_syn: true
237
+ use_sim: true
238
+ type: verilog
239
+ path: rtl/verilog/syncflop.v
240
+ :syncreg: SOCM_HDL_FILE
241
+ use_syn: true
242
+ use_sim: true
243
+ type: verilog
244
+ path: rtl/verilog/syncreg.v
245
+