origen_link 0.4.2 → 0.4.3
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 +5 -5
- data/bin/start_link_server +116 -116
- data/config/application.rb +109 -109
- data/config/commands.rb +74 -74
- data/config/shared_commands.rb +40 -40
- data/config/version.rb +8 -8
- data/lib/origen_link.rb +5 -5
- data/lib/origen_link/callback_handlers.rb +13 -13
- data/lib/origen_link/capture_support.rb +94 -94
- data/lib/origen_link/configuration_commands.rb +236 -236
- data/lib/origen_link/listener.rb +78 -78
- data/lib/origen_link/server/jtag.rb +251 -251
- data/lib/origen_link/server/pin.rb +218 -218
- data/lib/origen_link/server/sequencer.rb +469 -469
- data/lib/origen_link/server_com.rb +154 -154
- data/lib/origen_link/test/top_level.rb +48 -48
- data/lib/origen_link/test/top_level_controller.rb +46 -46
- data/lib/origen_link/test/vector_based.rb +25 -25
- data/lib/origen_link/vector_based.rb +526 -524
- data/lib/tasks/origen_link.rake +6 -6
- data/pattern/example.rb +4 -4
- data/pattern/jtag_capture_id.rb +22 -22
- data/pattern/transaction_test.rb +18 -18
- data/templates/web/index.md.erb +470 -451
- data/templates/web/layouts/_basic.html.erb +13 -13
- data/templates/web/partials/_navbar.html.erb +20 -20
- data/templates/web/release_notes.md.erb +5 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cc00ce059d3335148b342e2e419a699602f0d31c5364714bc92bd123ade40f0b
|
4
|
+
data.tar.gz: 97c755ea65a9e0d0277975b06d880cfbd7505c21783524b8e2e6c20475771bbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39a7cb3947b427696167ee75fdf89ffdaa6041c5461a3c8d4058a51ff41aafff6e865bf11a92d960abfcc68e3e71d01e3b6ed554bb46aa0276bf958c908ea80b
|
7
|
+
data.tar.gz: 2cf6b49393b39d92e9c5c634754cbfcf1c158bad9766c0daaeebce7eec1ceb59ea82164ca7db1311fddb7554bde2abc1a4bfd7f2e0038736dd701ae9b5e42e89
|
data/bin/start_link_server
CHANGED
@@ -1,116 +1,116 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
$LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib'))
|
3
|
-
$LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'config'))
|
4
|
-
require 'socket'
|
5
|
-
require 'origen_link/server/sequencer'
|
6
|
-
require 'origen_link/server/jtag'
|
7
|
-
require 'version'
|
8
|
-
|
9
|
-
# method to handle the processing of a jtag message
|
10
|
-
def processjtagmessage(message)
|
11
|
-
reply = 'Error'
|
12
|
-
if message =~ /jtag_configure:/
|
13
|
-
# Allow the default io numbers to be overridden
|
14
|
-
newios = message.gsub(/\s+/, '').split(':')[1].split(',')
|
15
|
-
if newios.size = 4
|
16
|
-
$tdiio = newios[0]
|
17
|
-
$tdoio = newios[1]
|
18
|
-
$tmsio = newios[2]
|
19
|
-
$tckio = newios[3]
|
20
|
-
reply = "jtag_configure: tdi = #{$tdiio}, tdo = #{$tdoio}, tms = #{$tmsio}, tck = #{$tckio}"
|
21
|
-
else
|
22
|
-
reply = 'jtag_configure failed, need 4 io numbers, tdi, tdo, tms, tck - in that order'
|
23
|
-
end
|
24
|
-
elsif message =~ /jtag_reinit/
|
25
|
-
$jtag_interpreter.destroy unless $jtag_interpreter.nil?
|
26
|
-
$jtag_interpreter = OrigenLink::Server::Jtag.new($tdiio, $tdoio, $tmsio, $tckio)
|
27
|
-
reply = 'done'
|
28
|
-
else
|
29
|
-
$jtag_interpreter = OrigenLink::Server::Jtag.new($tdiio, $tdoio, $tmsio, $tckio) if $jtag_interpreter.nil?
|
30
|
-
reply = $jtag_interpreter.processmessage(message)
|
31
|
-
end
|
32
|
-
reply
|
33
|
-
end
|
34
|
-
|
35
|
-
# General initialization
|
36
|
-
server = TCPServer.open('', 12_777)
|
37
|
-
remoteuser = ''
|
38
|
-
remotehost = ''
|
39
|
-
sessionactivity = Time.now
|
40
|
-
sessionactive = false
|
41
|
-
|
42
|
-
# Initialize the pin sequencer object
|
43
|
-
pinsequencer = OrigenLink::Server::Sequencer.new
|
44
|
-
pinsequencer.version = OrigenLink::VERSION
|
45
|
-
puts "server version #{pinsequencer.version} started"
|
46
|
-
|
47
|
-
# Set default values for the Jtag object
|
48
|
-
$tdiio = 116
|
49
|
-
$tdoio = 124
|
50
|
-
$tmsio = 6
|
51
|
-
$tckio = 119
|
52
|
-
$jtag_interpreter = nil
|
53
|
-
|
54
|
-
# Wait for connection requests in an infinite loop
|
55
|
-
loop do
|
56
|
-
client = server.accept
|
57
|
-
thisuser = client.gets.chomp
|
58
|
-
thisremotehost = client.peeraddr[3]
|
59
|
-
|
60
|
-
# for now assume that any session lasting longer than 20 minutes has timed out (will happen if the origen side app is killed or stopped at a breakpoint with no activity)
|
61
|
-
if (Time.now - sessionactivity) > 1200
|
62
|
-
sessionactive = false
|
63
|
-
end
|
64
|
-
|
65
|
-
change_in_user = false
|
66
|
-
|
67
|
-
# if there is no active session running allow one to start
|
68
|
-
unless sessionactive
|
69
|
-
#flag any change in host machine or user for collision detection
|
70
|
-
change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
71
|
-
remoteuser = thisuser
|
72
|
-
remotehost = thisremotehost
|
73
|
-
end
|
74
|
-
|
75
|
-
# always return whether or not the user has been changed (for collision detection)
|
76
|
-
if change_in_user
|
77
|
-
response = "user_change:user_change\n"
|
78
|
-
else
|
79
|
-
response = "\n"
|
80
|
-
end
|
81
|
-
|
82
|
-
# Now we're ready to process the actual message
|
83
|
-
# if this connection is from the active user\host machine, then process the information
|
84
|
-
if (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
85
|
-
while (message = client.gets) != "\n"
|
86
|
-
# process the message
|
87
|
-
if message =~ /session_end/ || message =~ /session_kill/
|
88
|
-
sessionactive = false
|
89
|
-
response = response + "session_end:session_end\n"
|
90
|
-
elsif message[0,5] == 'jtag_'
|
91
|
-
# jtag messages get routed to the jtag message handler
|
92
|
-
sessionactive = true
|
93
|
-
response = response + processjtagmessage(message.chomp) + "\n"
|
94
|
-
else
|
95
|
-
# default is pin sequencer message handling
|
96
|
-
sessionactive = true
|
97
|
-
response = response + pinsequencer.processmessage(message.chomp) + "\n"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
sessionactivity = Time.now
|
101
|
-
else
|
102
|
-
# The connection didn't come from the active user. Only session_kill is allowed.
|
103
|
-
checkmessage = client.gets.chomp
|
104
|
-
if checkmessage =~ /session_kill/
|
105
|
-
sessionactive = false
|
106
|
-
response = response + "Terminated: session from #{remoteuser} at IP address #{remotehost} inactive for #{Time.now - sessionactivity} seconds has been killed\n"
|
107
|
-
change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
108
|
-
remoteuser = thisuser
|
109
|
-
remotehost = thisremotehost
|
110
|
-
else
|
111
|
-
response = response + "Busy: server is in use by #{remoteuser} from IP address #{remotehost}\n"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
client.write(response)
|
115
|
-
client.close
|
116
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib'))
|
3
|
+
$LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'config'))
|
4
|
+
require 'socket'
|
5
|
+
require 'origen_link/server/sequencer'
|
6
|
+
require 'origen_link/server/jtag'
|
7
|
+
require 'version'
|
8
|
+
|
9
|
+
# method to handle the processing of a jtag message
|
10
|
+
def processjtagmessage(message)
|
11
|
+
reply = 'Error'
|
12
|
+
if message =~ /jtag_configure:/
|
13
|
+
# Allow the default io numbers to be overridden
|
14
|
+
newios = message.gsub(/\s+/, '').split(':')[1].split(',')
|
15
|
+
if newios.size = 4
|
16
|
+
$tdiio = newios[0]
|
17
|
+
$tdoio = newios[1]
|
18
|
+
$tmsio = newios[2]
|
19
|
+
$tckio = newios[3]
|
20
|
+
reply = "jtag_configure: tdi = #{$tdiio}, tdo = #{$tdoio}, tms = #{$tmsio}, tck = #{$tckio}"
|
21
|
+
else
|
22
|
+
reply = 'jtag_configure failed, need 4 io numbers, tdi, tdo, tms, tck - in that order'
|
23
|
+
end
|
24
|
+
elsif message =~ /jtag_reinit/
|
25
|
+
$jtag_interpreter.destroy unless $jtag_interpreter.nil?
|
26
|
+
$jtag_interpreter = OrigenLink::Server::Jtag.new($tdiio, $tdoio, $tmsio, $tckio)
|
27
|
+
reply = 'done'
|
28
|
+
else
|
29
|
+
$jtag_interpreter = OrigenLink::Server::Jtag.new($tdiio, $tdoio, $tmsio, $tckio) if $jtag_interpreter.nil?
|
30
|
+
reply = $jtag_interpreter.processmessage(message)
|
31
|
+
end
|
32
|
+
reply
|
33
|
+
end
|
34
|
+
|
35
|
+
# General initialization
|
36
|
+
server = TCPServer.open('', 12_777)
|
37
|
+
remoteuser = ''
|
38
|
+
remotehost = ''
|
39
|
+
sessionactivity = Time.now
|
40
|
+
sessionactive = false
|
41
|
+
|
42
|
+
# Initialize the pin sequencer object
|
43
|
+
pinsequencer = OrigenLink::Server::Sequencer.new
|
44
|
+
pinsequencer.version = OrigenLink::VERSION
|
45
|
+
puts "server version #{pinsequencer.version} started"
|
46
|
+
|
47
|
+
# Set default values for the Jtag object
|
48
|
+
$tdiio = 116
|
49
|
+
$tdoio = 124
|
50
|
+
$tmsio = 6
|
51
|
+
$tckio = 119
|
52
|
+
$jtag_interpreter = nil
|
53
|
+
|
54
|
+
# Wait for connection requests in an infinite loop
|
55
|
+
loop do
|
56
|
+
client = server.accept
|
57
|
+
thisuser = client.gets.chomp
|
58
|
+
thisremotehost = client.peeraddr[3]
|
59
|
+
|
60
|
+
# for now assume that any session lasting longer than 20 minutes has timed out (will happen if the origen side app is killed or stopped at a breakpoint with no activity)
|
61
|
+
if (Time.now - sessionactivity) > 1200
|
62
|
+
sessionactive = false
|
63
|
+
end
|
64
|
+
|
65
|
+
change_in_user = false
|
66
|
+
|
67
|
+
# if there is no active session running allow one to start
|
68
|
+
unless sessionactive
|
69
|
+
#flag any change in host machine or user for collision detection
|
70
|
+
change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
71
|
+
remoteuser = thisuser
|
72
|
+
remotehost = thisremotehost
|
73
|
+
end
|
74
|
+
|
75
|
+
# always return whether or not the user has been changed (for collision detection)
|
76
|
+
if change_in_user
|
77
|
+
response = "user_change:user_change\n"
|
78
|
+
else
|
79
|
+
response = "\n"
|
80
|
+
end
|
81
|
+
|
82
|
+
# Now we're ready to process the actual message
|
83
|
+
# if this connection is from the active user\host machine, then process the information
|
84
|
+
if (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
85
|
+
while (message = client.gets) != "\n"
|
86
|
+
# process the message
|
87
|
+
if message =~ /session_end/ || message =~ /session_kill/
|
88
|
+
sessionactive = false
|
89
|
+
response = response + "session_end:session_end\n"
|
90
|
+
elsif message[0,5] == 'jtag_'
|
91
|
+
# jtag messages get routed to the jtag message handler
|
92
|
+
sessionactive = true
|
93
|
+
response = response + processjtagmessage(message.chomp) + "\n"
|
94
|
+
else
|
95
|
+
# default is pin sequencer message handling
|
96
|
+
sessionactive = true
|
97
|
+
response = response + pinsequencer.processmessage(message.chomp) + "\n"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
sessionactivity = Time.now
|
101
|
+
else
|
102
|
+
# The connection didn't come from the active user. Only session_kill is allowed.
|
103
|
+
checkmessage = client.gets.chomp
|
104
|
+
if checkmessage =~ /session_kill/
|
105
|
+
sessionactive = false
|
106
|
+
response = response + "Terminated: session from #{remoteuser} at IP address #{remotehost} inactive for #{Time.now - sessionactivity} seconds has been killed\n"
|
107
|
+
change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
|
108
|
+
remoteuser = thisuser
|
109
|
+
remotehost = thisremotehost
|
110
|
+
else
|
111
|
+
response = response + "Busy: server is in use by #{remoteuser} from IP address #{remotehost}\n"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
client.write(response)
|
115
|
+
client.close
|
116
|
+
end
|
data/config/application.rb
CHANGED
@@ -1,109 +1,109 @@
|
|
1
|
-
require 'origen'
|
2
|
-
class OrigenLinkApplication < Origen::Application
|
3
|
-
|
4
|
-
# See http://origen-sdk.org/origen/api/Origen/Application/Configuration.html
|
5
|
-
# for a full list of the configuration options available
|
6
|
-
|
7
|
-
# These attributes should never be changed, the duplication here will be resolved in future
|
8
|
-
# by condensing these attributes that do similar things
|
9
|
-
self.name = "origen_link"
|
10
|
-
self.namespace = "OrigenLink"
|
11
|
-
config.name = "origen_link"
|
12
|
-
config.initials = "OrigenLink"
|
13
|
-
# Change this to point to the revision control repository for this application
|
14
|
-
config.rc_url = "git@github.com:Origen-SDK/OrigenLink.git"
|
15
|
-
config.release_externally = true
|
16
|
-
|
17
|
-
# To enable deployment of your documentation to a web server (via the 'origen web'
|
18
|
-
# command) fill in these attributes.
|
19
|
-
#config.web_directory = "/path/to/server/origen_link"
|
20
|
-
#config.web_domain = "http://origen.mycompany.net/origen_link"
|
21
|
-
config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/OrigenLink"
|
22
|
-
config.web_domain = "http://origen-sdk.org/OrigenLink"
|
23
|
-
|
24
|
-
# When false Origen will be less strict about checking for some common coding errors,
|
25
|
-
# it is recommended that you leave this to true for better feedback and easier debug.
|
26
|
-
# This will be the default setting in Origen v3.
|
27
|
-
config.strict_errors = true
|
28
|
-
|
29
|
-
# See: http://origen-sdk.org/origen/latest/guides/utilities/lint/
|
30
|
-
config.lint_test = {
|
31
|
-
# Require the lint tests to pass before allowing a release to proceed
|
32
|
-
run_on_tag: true,
|
33
|
-
# Auto correct violations where possible whenever 'origen lint' is run
|
34
|
-
auto_correct: true,
|
35
|
-
# Limit the testing for large legacy applications
|
36
|
-
#level: :easy,
|
37
|
-
# Run on these directories/files by default
|
38
|
-
#files: ["lib", "config/application.rb"],
|
39
|
-
}
|
40
|
-
|
41
|
-
config.semantically_version = true
|
42
|
-
|
43
|
-
config.shared = {
|
44
|
-
command_launcher: 'config/shared_commands.rb'
|
45
|
-
}
|
46
|
-
|
47
|
-
# An example of how to set application specific LSF parameters
|
48
|
-
#config.lsf.project = "msg.te"
|
49
|
-
|
50
|
-
# An example of how to specify a prefix to add to all generated patterns
|
51
|
-
#config.pattern_prefix = "nvm"
|
52
|
-
|
53
|
-
# An example of how to add header comments to all generated patterns
|
54
|
-
#config.pattern_header do
|
55
|
-
# cc "This is a pattern created by the example origen application"
|
56
|
-
#end
|
57
|
-
|
58
|
-
# By default all generated output will end up in ./output.
|
59
|
-
# Here you can specify an alternative directory entirely, or make it dynamic such that
|
60
|
-
# the output ends up in a setup specific directory.
|
61
|
-
#config.output_directory do
|
62
|
-
# "#{Origen.root}/output/#{$dut.class}"
|
63
|
-
#end
|
64
|
-
|
65
|
-
# Similarly for the reference files, generally you want to setup the reference directory
|
66
|
-
# structure to mirror that of your output directory structure.
|
67
|
-
#config.reference_directory do
|
68
|
-
# "#{Origen.root}/.ref/#{$dut.class}"
|
69
|
-
#end
|
70
|
-
|
71
|
-
# This will automatically deploy your documentation after every tag
|
72
|
-
#def after_release_email(tag, note, type, selector, options)
|
73
|
-
# command = "origen web compile --remote --api"
|
74
|
-
# Dir.chdir Origen.root do
|
75
|
-
# system command
|
76
|
-
# end
|
77
|
-
#end
|
78
|
-
|
79
|
-
# Ensure that all tests pass before allowing a release to continue
|
80
|
-
#def validate_release
|
81
|
-
# if !system("origen specs") || !system("origen examples")
|
82
|
-
# puts "Sorry but you can't release with failing tests, please fix them and try again."
|
83
|
-
# exit 1
|
84
|
-
# else
|
85
|
-
# puts "All tests passing, proceeding with release process!"
|
86
|
-
# end
|
87
|
-
#end
|
88
|
-
|
89
|
-
# To enabled source-less pattern generation create a class (for example PatternDispatcher)
|
90
|
-
# to generate the pattern. This should return false if the requested pattern has been
|
91
|
-
# dispatched, otherwise Origen will proceed with looking up a pattern source as normal.
|
92
|
-
#def before_pattern_lookup(requested_pattern)
|
93
|
-
# PatternDispatcher.new.dispatch_or_return(requested_pattern)
|
94
|
-
#end
|
95
|
-
|
96
|
-
# If you use pattern iterators you may come across the case where you request a pattern
|
97
|
-
# like this:
|
98
|
-
# origen g example_pat_b0.atp
|
99
|
-
#
|
100
|
-
# However it cannot be found by Origen since the pattern name is actually example_pat_bx.atp
|
101
|
-
# In the case where the pattern cannot be found Origen will pass the name to this translator
|
102
|
-
# if it exists, and here you can make any substitutions to help Origen find the file you
|
103
|
-
# want. In this example any instances of _b\d, where \d means a number, are replaced by
|
104
|
-
# _bx.
|
105
|
-
#config.pattern_name_translator do |name|
|
106
|
-
# name.gsub(/_b\d/, "_bx")
|
107
|
-
#end
|
108
|
-
|
109
|
-
end
|
1
|
+
require 'origen'
|
2
|
+
class OrigenLinkApplication < Origen::Application
|
3
|
+
|
4
|
+
# See http://origen-sdk.org/origen/api/Origen/Application/Configuration.html
|
5
|
+
# for a full list of the configuration options available
|
6
|
+
|
7
|
+
# These attributes should never be changed, the duplication here will be resolved in future
|
8
|
+
# by condensing these attributes that do similar things
|
9
|
+
self.name = "origen_link"
|
10
|
+
self.namespace = "OrigenLink"
|
11
|
+
config.name = "origen_link"
|
12
|
+
config.initials = "OrigenLink"
|
13
|
+
# Change this to point to the revision control repository for this application
|
14
|
+
config.rc_url = "git@github.com:Origen-SDK/OrigenLink.git"
|
15
|
+
config.release_externally = true
|
16
|
+
|
17
|
+
# To enable deployment of your documentation to a web server (via the 'origen web'
|
18
|
+
# command) fill in these attributes.
|
19
|
+
#config.web_directory = "/path/to/server/origen_link"
|
20
|
+
#config.web_domain = "http://origen.mycompany.net/origen_link"
|
21
|
+
config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/OrigenLink"
|
22
|
+
config.web_domain = "http://origen-sdk.org/OrigenLink"
|
23
|
+
|
24
|
+
# When false Origen will be less strict about checking for some common coding errors,
|
25
|
+
# it is recommended that you leave this to true for better feedback and easier debug.
|
26
|
+
# This will be the default setting in Origen v3.
|
27
|
+
config.strict_errors = true
|
28
|
+
|
29
|
+
# See: http://origen-sdk.org/origen/latest/guides/utilities/lint/
|
30
|
+
config.lint_test = {
|
31
|
+
# Require the lint tests to pass before allowing a release to proceed
|
32
|
+
run_on_tag: true,
|
33
|
+
# Auto correct violations where possible whenever 'origen lint' is run
|
34
|
+
auto_correct: true,
|
35
|
+
# Limit the testing for large legacy applications
|
36
|
+
#level: :easy,
|
37
|
+
# Run on these directories/files by default
|
38
|
+
#files: ["lib", "config/application.rb"],
|
39
|
+
}
|
40
|
+
|
41
|
+
config.semantically_version = true
|
42
|
+
|
43
|
+
config.shared = {
|
44
|
+
command_launcher: 'config/shared_commands.rb'
|
45
|
+
}
|
46
|
+
|
47
|
+
# An example of how to set application specific LSF parameters
|
48
|
+
#config.lsf.project = "msg.te"
|
49
|
+
|
50
|
+
# An example of how to specify a prefix to add to all generated patterns
|
51
|
+
#config.pattern_prefix = "nvm"
|
52
|
+
|
53
|
+
# An example of how to add header comments to all generated patterns
|
54
|
+
#config.pattern_header do
|
55
|
+
# cc "This is a pattern created by the example origen application"
|
56
|
+
#end
|
57
|
+
|
58
|
+
# By default all generated output will end up in ./output.
|
59
|
+
# Here you can specify an alternative directory entirely, or make it dynamic such that
|
60
|
+
# the output ends up in a setup specific directory.
|
61
|
+
#config.output_directory do
|
62
|
+
# "#{Origen.root}/output/#{$dut.class}"
|
63
|
+
#end
|
64
|
+
|
65
|
+
# Similarly for the reference files, generally you want to setup the reference directory
|
66
|
+
# structure to mirror that of your output directory structure.
|
67
|
+
#config.reference_directory do
|
68
|
+
# "#{Origen.root}/.ref/#{$dut.class}"
|
69
|
+
#end
|
70
|
+
|
71
|
+
# This will automatically deploy your documentation after every tag
|
72
|
+
#def after_release_email(tag, note, type, selector, options)
|
73
|
+
# command = "origen web compile --remote --api"
|
74
|
+
# Dir.chdir Origen.root do
|
75
|
+
# system command
|
76
|
+
# end
|
77
|
+
#end
|
78
|
+
|
79
|
+
# Ensure that all tests pass before allowing a release to continue
|
80
|
+
#def validate_release
|
81
|
+
# if !system("origen specs") || !system("origen examples")
|
82
|
+
# puts "Sorry but you can't release with failing tests, please fix them and try again."
|
83
|
+
# exit 1
|
84
|
+
# else
|
85
|
+
# puts "All tests passing, proceeding with release process!"
|
86
|
+
# end
|
87
|
+
#end
|
88
|
+
|
89
|
+
# To enabled source-less pattern generation create a class (for example PatternDispatcher)
|
90
|
+
# to generate the pattern. This should return false if the requested pattern has been
|
91
|
+
# dispatched, otherwise Origen will proceed with looking up a pattern source as normal.
|
92
|
+
#def before_pattern_lookup(requested_pattern)
|
93
|
+
# PatternDispatcher.new.dispatch_or_return(requested_pattern)
|
94
|
+
#end
|
95
|
+
|
96
|
+
# If you use pattern iterators you may come across the case where you request a pattern
|
97
|
+
# like this:
|
98
|
+
# origen g example_pat_b0.atp
|
99
|
+
#
|
100
|
+
# However it cannot be found by Origen since the pattern name is actually example_pat_bx.atp
|
101
|
+
# In the case where the pattern cannot be found Origen will pass the name to this translator
|
102
|
+
# if it exists, and here you can make any substitutions to help Origen find the file you
|
103
|
+
# want. In this example any instances of _b\d, where \d means a number, are replaced by
|
104
|
+
# _bx.
|
105
|
+
#config.pattern_name_translator do |name|
|
106
|
+
# name.gsub(/_b\d/, "_bx")
|
107
|
+
#end
|
108
|
+
|
109
|
+
end
|