origen_doc_helpers 0.3.0 → 0.4.0
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.
- checksums.yaml +4 -4
- data/config/boot.rb +19 -0
- data/config/version.rb +1 -1
- data/lib/origen_doc_helpers.rb +21 -1
- data/lib/origen_doc_helpers/flow_page_generator.rb +110 -0
- data/lib/{helpers.rb → origen_doc_helpers/helpers.rb} +0 -0
- data/lib/origen_doc_helpers/model_page_generator.rb +151 -0
- data/templates/flow_index.md.erb +19 -0
- data/templates/flow_page.md.erb +4 -0
- data/templates/model_index.md.erb +24 -0
- data/templates/model_page.md.erb +125 -0
- data/templates/shared/_register.html.erb +51 -7
- data/templates/shared/_searchable.html.erb +1 -1
- data/templates/shared/test/_flow.md.erb +3 -230
- data/templates/web/helpers.md.erb +25 -0
- data/templates/web/{examples → helpers}/disqus.md.erb +3 -3
- data/templates/web/helpers/flow.md.erb +113 -0
- data/templates/web/helpers/model.md.erb +81 -0
- data/templates/web/{examples → helpers}/register.md.erb +5 -5
- data/templates/web/{examples → helpers}/searchable/intro.md.erb +4 -4
- data/templates/web/{examples → helpers}/searchable/page2.md.erb +0 -0
- data/templates/web/{examples → helpers}/searchable/topic1/item1.md.erb +0 -0
- data/templates/web/{examples → helpers}/searchable/topic1/item2.html.erb +0 -0
- data/templates/web/{examples → helpers}/spec.md.erb_NOT_WORKING +2 -2
- data/templates/web/{examples → helpers}/yammer.md.erb +1 -1
- data/templates/web/index.md.erb +1 -1
- data/templates/web/layouts/_doc.html.erb +2 -2
- data/templates/web/layouts/{_examples.html.erb → _helpers.html.erb} +1 -1
- data/templates/web/partials/_navbar.html.erb +1 -1
- metadata +27 -26
- data/config/development.rb +0 -16
- data/config/environment.rb +0 -32
- data/lib/origen_doc_helpers/doc_interface.rb +0 -74
- data/program/_func.rb +0 -12
- data/program/_hvst.rb +0 -12
- data/program/_para.rb +0 -26
- data/program/probe_1.rb +0 -7
- data/templates/web/examples.md.erb +0 -20
- data/templates/web/examples/test/flow.md.erb +0 -35
@@ -0,0 +1,81 @@
|
|
1
|
+
% render "../layouts/helpers.html" do
|
2
|
+
|
3
|
+
# Model Documentation
|
4
|
+
|
5
|
+
This helper will build a collection of web pages that document a model's attributes,
|
6
|
+
currently this includes its sub-blocks and registers.
|
7
|
+
|
8
|
+
[Here is an example](http://origen-sdk.org/link_demo/models/linkdemo_toplevel/).
|
9
|
+
|
10
|
+
Multiple models can be supplied and an [index page like this](http://origen-sdk.org/link_demo/models)
|
11
|
+
is generated to help locate the documentation for a given model.
|
12
|
+
|
13
|
+
The collection of pages associated with a particular model is also fully searchable via
|
14
|
+
the provided search box.
|
15
|
+
|
16
|
+
## How To Use
|
17
|
+
|
18
|
+
Call the helper from an <code>after_web_site_compile</code> callback handler in your
|
19
|
+
application's <code>config/application.rb</code> like this:
|
20
|
+
|
21
|
+
~~~ruby
|
22
|
+
def after_web_site_compile(options)
|
23
|
+
# Build the model documentation
|
24
|
+
OrigenDocHelpers.generate_model_docs layout: "#{Origen.root}/templates/web/layouts/_basic.html.erb", tab: :model do |d|
|
25
|
+
d.page model: $dut
|
26
|
+
end
|
27
|
+
end
|
28
|
+
~~~
|
29
|
+
|
30
|
+
To generate documentation for more than one model, call the page method multiple times like this:
|
31
|
+
|
32
|
+
~~~ruby
|
33
|
+
def after_web_site_compile(options)
|
34
|
+
# Build the model documentation
|
35
|
+
OrigenDocHelpers.generate_model_docs layout: "#{Origen.root}/templates/web/layouts/_basic.html.erb", tab: :model do |d|
|
36
|
+
d.page model: MyApp::ModelA.new
|
37
|
+
d.page model: MyApp::ModelB.new
|
38
|
+
d.page model: MyApp::ModelC.new
|
39
|
+
end
|
40
|
+
end
|
41
|
+
~~~
|
42
|
+
|
43
|
+
If the different models are all top-level instances (i.e. they include <code>Origen::TopLevel</code> and are
|
44
|
+
what is commonly referred to as <code>$dut</code>), then a target loop should be used like this:
|
45
|
+
|
46
|
+
~~~ruby
|
47
|
+
def after_web_site_compile(options)
|
48
|
+
# Build the model documentation
|
49
|
+
OrigenDocHelpers.generate_model_docs layout: "#{Origen.root}/templates/web/layouts/_basic.html.erb", tab: :model do |d|
|
50
|
+
Origen.target.loop targets: ["target_a", "target_b", "target_c"] do
|
51
|
+
d.page model: $dut
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
~~~
|
56
|
+
|
57
|
+
## Options
|
58
|
+
|
59
|
+
<code>OrigenDocHelpers.generate_model_docs</code>
|
60
|
+
|
61
|
+
* <code>:layout</code> - **Required**, supply a full path to your application's layout file
|
62
|
+
* Any other options will be passed to your layout file unmodified, e.g. to set the tab in the generated
|
63
|
+
pages in the above example
|
64
|
+
|
65
|
+
<code>page</code>
|
66
|
+
|
67
|
+
* <code>:model</code> - **Required**, supply an instance of the model
|
68
|
+
* <code>:group</code> - Optional, a heading to group similar models under on the index page, e.g. "Production", "In Development"
|
69
|
+
|
70
|
+
## Website Integration
|
71
|
+
|
72
|
+
The model index page will be generated at path <code>/models</code> within your application, and it is common
|
73
|
+
to create a "Model(s)" tab in your website's navigation bar to link to this.
|
74
|
+
|
75
|
+
If your application only has one model, then the navbar link should be setup to point directly to
|
76
|
+
that model's page.
|
77
|
+
|
78
|
+
The location of the pages for the individual models are based on the model name and will be unique to each application,
|
79
|
+
you can find them initially via the index page.
|
80
|
+
|
81
|
+
% end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
% render "../layouts/
|
1
|
+
% render "../layouts/helpers.html" do
|
2
2
|
|
3
3
|
# Register Helpers
|
4
4
|
|
@@ -56,8 +56,6 @@ end
|
|
56
56
|
|
57
57
|
### Basic Register Diagram
|
58
58
|
|
59
|
-
<%= render "templates/shared/register", :reg => $dut.reg(:mclkdiv) %>
|
60
|
-
|
61
59
|
Here is an example of how to insert a basic register diagram in
|
62
60
|
a document:
|
63
61
|
|
@@ -71,9 +69,9 @@ a document:
|
|
71
69
|
<%= "%" %> end
|
72
70
|
~~~
|
73
71
|
|
74
|
-
|
72
|
+
<%= render "templates/shared/register", :reg => $dut.reg(:mclkdiv) %>
|
75
73
|
|
76
|
-
|
74
|
+
### Register Diagram with Descriptions
|
77
75
|
|
78
76
|
Set the <code>:descriptions</code> switch to true to include the register and
|
79
77
|
bit descriptions:
|
@@ -88,6 +86,8 @@ bit descriptions:
|
|
88
86
|
<%= "%" %> end
|
89
87
|
~~~
|
90
88
|
|
89
|
+
<%= render "templates/shared/register", :reg => $dut.reg(:mclkdiv), :descriptions => true %>
|
90
|
+
|
91
91
|
### Additional Test Cases
|
92
92
|
|
93
93
|
<%= render "templates/shared/register", :reg => $dut.reg(:proth) %>
|
@@ -72,7 +72,7 @@ As an example here is the actual layout that has been used to generate this page
|
|
72
72
|
---
|
73
73
|
title: <%= options[:title] || Origen.config.name %>
|
74
74
|
---
|
75
|
-
<%= "<" + "%= render \"partials/navbar.html\", tab: :
|
75
|
+
<%= "<" + "%= render \"partials/navbar.html\", tab: :helpers %" + ">" %>
|
76
76
|
|
77
77
|
<%= "%" %> index = {}
|
78
78
|
<%= "%" %> index[nil] = {
|
@@ -84,8 +84,8 @@ title: <%= options[:title] || Origen.config.name %>
|
|
84
84
|
<%= "%" %> topic1_item2: "Second Item",
|
85
85
|
<%= "%" %> }
|
86
86
|
|
87
|
-
%#<%= "%" %> opts = options.merge(index: index, root: "
|
88
|
-
<%= "%" %> opts = options.merge(index: index, root: "
|
87
|
+
%#<%= "%" %> opts = options.merge(index: index, root: "helpers/searchable", pdf_title: "Doc Helpers Searchable Guide")
|
88
|
+
<%= "%" %> opts = options.merge(index: index, root: "helpers/searchable")
|
89
89
|
<%= "%" %> render "doc_helpers/searchable.html", options.merge(opts) do
|
90
90
|
|
91
91
|
<%= "<" + "%= yield %" + ">" %>
|
@@ -114,7 +114,7 @@ The top-level header size in your document should be <code>h3</code> or <code>##
|
|
114
114
|
|
115
115
|
<code>.html.erb</code> files will also work if you want to use them.
|
116
116
|
|
117
|
-
Here is the actual code used behind the [Topic 1 - First Item](<%= path "
|
117
|
+
Here is the actual code used behind the [Topic 1 - First Item](<%= path "helpers/searchable/topic1/item1" %>)
|
118
118
|
page (where the layout being rendered is the one above):
|
119
119
|
|
120
120
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
|
-
% render "../layouts/
|
1
|
+
% render "../layouts/helpers.html" do
|
2
2
|
|
3
3
|
# Specification Helpers
|
4
4
|
|
5
5
|
Use the [Origen specification API](http://origen.freescale.net/origen/latest/guides/models/specs)
|
6
6
|
to define specifications in the normal way,
|
7
|
-
all of the
|
7
|
+
all of the helpers shown here are based on this specification definition:
|
8
8
|
|
9
9
|
~~~ruby
|
10
10
|
spec :soc_vdd do
|
data/templates/web/index.md.erb
CHANGED
@@ -28,7 +28,7 @@ spec.add_development_dependency "origen_doc_helpers", ">= <%= Origen.app.version
|
|
28
28
|
|
29
29
|
### How To Use
|
30
30
|
|
31
|
-
See the [
|
31
|
+
See the [Available Helpers](<%= path "helpers" %>) page to see the current list of helpers
|
32
32
|
and how to use them.
|
33
33
|
|
34
34
|
### How To Setup a Development Environment
|
@@ -2,7 +2,7 @@
|
|
2
2
|
title: <%= options[:title] || Origen.config.name %>
|
3
3
|
analytics: UA-64455560-1
|
4
4
|
---
|
5
|
-
<%= render "partials/navbar.html", :tab => :
|
5
|
+
<%= render "partials/navbar.html", :tab => :helpers %>
|
6
6
|
|
7
7
|
%# Add/edit sections here, the code below will expand this with the correct markup,
|
8
8
|
%# pass in the topic you want selected via the :tab option.
|
@@ -16,7 +16,7 @@ analytics: UA-64455560-1
|
|
16
16
|
% :topic1_item2 => "Second Item",
|
17
17
|
% }
|
18
18
|
|
19
|
-
% render "templates/shared/searchable.html", options.merge(:index => s, :root => "
|
19
|
+
% render "templates/shared/searchable.html", options.merge(:index => s, :root => "helpers/searchable") do
|
20
20
|
|
21
21
|
<%= yield %>
|
22
22
|
|
@@ -11,7 +11,7 @@
|
|
11
11
|
</div>
|
12
12
|
<div id="navbar" class="collapse navbar-collapse">
|
13
13
|
<ul class="nav navbar-nav">
|
14
|
-
<li class="<%= options[:tab] == :
|
14
|
+
<li class="<%= options[:tab] == :helpers ? 'active' : '' %>"><a href="<%= path "/helpers" %>">Helpers</a></li>
|
15
15
|
<li class="<%= options[:tab] == :release ? 'active' : '' %>"><a href="<%= path "/release_notes" %>">Release Notes</a></li>
|
16
16
|
<li><a href="https://github.com/Origen-SDK/origen_doc_helpers">Github</a></li>
|
17
17
|
</ul>
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_doc_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.7.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.7.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: origen_testers
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,41 +46,42 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- config/application.rb
|
49
|
+
- config/boot.rb
|
49
50
|
- config/commands.rb
|
50
|
-
- config/development.rb
|
51
|
-
- config/environment.rb
|
52
51
|
- config/users.rb
|
53
52
|
- config/version.rb
|
54
|
-
- lib/helpers.rb
|
55
53
|
- lib/origen_doc_helpers.rb
|
56
|
-
- lib/origen_doc_helpers/doc_interface.rb
|
57
54
|
- lib/origen_doc_helpers/dut.rb
|
55
|
+
- lib/origen_doc_helpers/flow_page_generator.rb
|
56
|
+
- lib/origen_doc_helpers/helpers.rb
|
58
57
|
- lib/origen_doc_helpers/html_flow_formatter.rb
|
59
58
|
- lib/origen_doc_helpers/list_flow_formatter.rb
|
59
|
+
- lib/origen_doc_helpers/model_page_generator.rb
|
60
60
|
- lib/origen_doc_helpers/pdf.rb
|
61
|
-
-
|
62
|
-
-
|
63
|
-
-
|
64
|
-
-
|
61
|
+
- templates/flow_index.md.erb
|
62
|
+
- templates/flow_page.md.erb
|
63
|
+
- templates/model_index.md.erb
|
64
|
+
- templates/model_page.md.erb
|
65
65
|
- templates/pdf/topic_wrapper.html
|
66
66
|
- templates/shared/_register.html.erb
|
67
67
|
- templates/shared/_searchable.html.erb
|
68
68
|
- templates/shared/_spec.html.erb
|
69
69
|
- templates/shared/test/_flow.md.erb
|
70
|
-
- templates/web/
|
71
|
-
- templates/web/
|
72
|
-
- templates/web/
|
73
|
-
- templates/web/
|
74
|
-
- templates/web/
|
75
|
-
- templates/web/
|
76
|
-
- templates/web/
|
77
|
-
- templates/web/
|
78
|
-
- templates/web/
|
79
|
-
- templates/web/
|
70
|
+
- templates/web/helpers.md.erb
|
71
|
+
- templates/web/helpers/disqus.md.erb
|
72
|
+
- templates/web/helpers/flow.md.erb
|
73
|
+
- templates/web/helpers/model.md.erb
|
74
|
+
- templates/web/helpers/register.md.erb
|
75
|
+
- templates/web/helpers/searchable/intro.md.erb
|
76
|
+
- templates/web/helpers/searchable/page2.md.erb
|
77
|
+
- templates/web/helpers/searchable/topic1/item1.md.erb
|
78
|
+
- templates/web/helpers/searchable/topic1/item2.html.erb
|
79
|
+
- templates/web/helpers/spec.md.erb_NOT_WORKING
|
80
|
+
- templates/web/helpers/yammer.md.erb
|
80
81
|
- templates/web/index.md.erb
|
81
82
|
- templates/web/layouts/_basic.html.erb
|
82
83
|
- templates/web/layouts/_doc.html.erb
|
83
|
-
- templates/web/layouts/
|
84
|
+
- templates/web/layouts/_helpers.html.erb
|
84
85
|
- templates/web/partials/_navbar.html.erb
|
85
86
|
- templates/web/release_notes.md.erb
|
86
87
|
homepage: http://origen-sdk.org/doc_helpers
|
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
104
|
version: 1.8.11
|
104
105
|
requirements: []
|
105
106
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.6.2
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: Snippets and helpers for creating Origen web documents
|
data/config/development.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# This file is similar to environment.rb and will be loaded
|
2
|
-
# automatically at the start of each invocation of Origen.
|
3
|
-
#
|
4
|
-
# However the major difference is that it will not be loaded
|
5
|
-
# if the application is imported by a 3rd party app - in that
|
6
|
-
# case only environment.rb is loaded.
|
7
|
-
#
|
8
|
-
# Therefore this file should be used to load anything you need
|
9
|
-
# to setup a development environment for this app, normally
|
10
|
-
# this would be used to load some dummy classes to instantiate
|
11
|
-
# your objects so that they can be tested and/or interacted with
|
12
|
-
# in the console.
|
13
|
-
module OrigenDocHelpers
|
14
|
-
autoload :DUT, "origen_doc_helpers/dut"
|
15
|
-
end
|
16
|
-
require "origen_doc_helpers/doc_interface"
|
data/config/environment.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# This file will be required by Origen before your target is loaded, you
|
2
|
-
# can use this to require all of your files, which is the easiest way
|
3
|
-
# to get started. As your experience grows you may wish to require only the
|
4
|
-
# minimum files required to allow the target to be initialized and let
|
5
|
-
# each class require its own dependencies.
|
6
|
-
#
|
7
|
-
# It is recommended that you keep all of your application logic in lib/
|
8
|
-
# The lib directory has already been added to the search path and so any files
|
9
|
-
# in there can be referenced from here with a relative path.
|
10
|
-
#
|
11
|
-
# Note that pattern files do not need to be referenced from here and these
|
12
|
-
# will be located automatically by origen.
|
13
|
-
|
14
|
-
# This says load the file "lib/pioneer.rb" the first time anyone makes a
|
15
|
-
# reference to the class name 'Pioneer'.
|
16
|
-
#autoload :Pioneer, "pioneer"
|
17
|
-
# This is generally preferable to using require which will load the file
|
18
|
-
# regardless of whether it is needed by the current target or not:
|
19
|
-
#require "pioneer"
|
20
|
-
# Sometimes you have to use require however:-
|
21
|
-
# 1. When defining a test program interface:
|
22
|
-
#require "interfaces/j750"
|
23
|
-
# 2. If you want to extend a class defined by an imported application, in
|
24
|
-
# this case your must use required and supply a full path (to distinguish
|
25
|
-
# it from the one in the parent application):
|
26
|
-
#require "#{Origen.root}/c90_top_level/p2"
|
27
|
-
module OrigenDocHelpers
|
28
|
-
autoload :PDF, "origen_doc_helpers/pdf"
|
29
|
-
autoload :HtmlFlowFormatter, "origen_doc_helpers/html_flow_formatter"
|
30
|
-
autoload :ListFlowFormatter, "origen_doc_helpers/list_flow_formatter"
|
31
|
-
end
|
32
|
-
require "helpers"
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module OrigenDocHelpers
|
2
|
-
class DocInterface
|
3
|
-
include OrigenTesters::Doc::Generator
|
4
|
-
|
5
|
-
def initialize(_options = {})
|
6
|
-
end
|
7
|
-
|
8
|
-
def log(_msg)
|
9
|
-
end
|
10
|
-
|
11
|
-
def instance_name(name, options = {})
|
12
|
-
name = pattern_name(name)
|
13
|
-
if options[:vdd] || options[:vdd] != :nom
|
14
|
-
name += "_#{options[:vdd]}"
|
15
|
-
end
|
16
|
-
name
|
17
|
-
end
|
18
|
-
|
19
|
-
def pattern_name(name, _options = {})
|
20
|
-
name.to_s
|
21
|
-
end
|
22
|
-
|
23
|
-
def vdd_loop(options)
|
24
|
-
[options[:vdd]].flatten.each do |vdd|
|
25
|
-
yield options.merge(vdd: vdd)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def func(name, options = {})
|
30
|
-
options = {
|
31
|
-
vdd: [:min, :max],
|
32
|
-
type: :functional
|
33
|
-
}.merge(options)
|
34
|
-
vdd_loop(options) do |options|
|
35
|
-
test = add_test name, options
|
36
|
-
add_flow_entry(test, options)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def para(name, options = {})
|
41
|
-
options = {
|
42
|
-
vdd: [:min, :max],
|
43
|
-
type: :parametric
|
44
|
-
}.merge(options)
|
45
|
-
vdd_loop(options) do |options|
|
46
|
-
test = add_test name, options
|
47
|
-
add_flow_entry(test, options)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def add_pattern(name, options = {})
|
52
|
-
options[:pattern] = pattern_name(name, options)
|
53
|
-
options
|
54
|
-
end
|
55
|
-
|
56
|
-
def add_test(name, options)
|
57
|
-
options = {
|
58
|
-
}.merge(options)
|
59
|
-
# Delete any keys that we don't want to assign to the instance, this keeps
|
60
|
-
# the attributes efficient, flow control keys will be screened by Origen
|
61
|
-
[:bin, :tnum, :tname, :continue
|
62
|
-
].each { |k| options.delete(k) }
|
63
|
-
tests.add(instance_name(name, options), add_pattern(name, options))
|
64
|
-
end
|
65
|
-
|
66
|
-
def add_flow_entry(test, options)
|
67
|
-
options = {
|
68
|
-
number: options[:bin] * 1000,
|
69
|
-
soft_bin: options[:bin]
|
70
|
-
}.merge(options)
|
71
|
-
flow.test test, options
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|