origen_link 0.2.0.pre0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3d2af884ce3e644373c8823c0411d1822eef7a0
4
- data.tar.gz: a89e4bc1a123d78896fb60f7bb5acecd50b88752
3
+ metadata.gz: d1466528f6de1eb1b70731626991a685065ad6e0
4
+ data.tar.gz: 06d3028a38164e75078b9865ec5a2ff63fb0b422
5
5
  SHA512:
6
- metadata.gz: b1e98d576f6ccd3f59f2cc08b26cd4572b72bd458a7ef1449851d0cf4e2d143329c6381f608a7e15d5d2e29a39721f702feb0d5b2907e3c1b19dda4817dbd482
7
- data.tar.gz: 55aff1223d4ed62bf407c5fa6c68e5c51a4be44c315df30b39344aa9f5e94cd2abf00f39f895326cce1c005101a29f1becd0a5ff2aaa2462abccf11486eee5cb
6
+ metadata.gz: 30db744c9d97bd49fe11988415c69b39ef9a71f14d54fb485209df8ca89247b7a2f52b1a917c93d74da167426d11dcb7a2a1d2da419e544e9bf1b40c94d6bcc2
7
+ data.tar.gz: cb73f596dc2fdfd691b31722a232e67c9969b0346520e142aaf511cf289eabad94a65e3e029324d5cfad6ac510bdd8ce7c86ca09e1ff4013e7c09799583b5023
@@ -1,66 +1,66 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib'))
3
- require 'socket'
4
- require 'origen_link/server/sequencer'
5
-
6
- server = TCPServer.open('', 12_777)
7
- puts 'server started'
8
- pinsequencer = OrigenLink::Server::Sequencer.new
9
- remoteuser = ''
10
- remotehost = ''
11
- sessionactivity = Time.now
12
- sessionactive = false
13
-
14
- loop do
15
- client = server.accept
16
- thisuser = client.gets.chomp
17
- thisremotehost = client.peeraddr[3]
18
-
19
- # 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)
20
- if (Time.now - sessionactivity) > 1200
21
- sessionactive = false
22
- end
23
-
24
- change_in_user = false
25
-
26
- # if there is no active session running allow one to start
27
- unless sessionactive
28
- #flag any change in host machine or user for collision detection
29
- change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
30
- remoteuser = thisuser
31
- remotehost = thisremotehost
32
- end
33
-
34
- # always return whether or not the user has been changed (for collision detection)
35
- if change_in_user
36
- response = "user_change:user_change\n"
37
- else
38
- response = "\n"
39
- end
40
-
41
- # if this connection is from the active user\host machine, then process the information
42
- if (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
43
- while (message = client.gets) != "\n"
44
- # process the message
45
- # for now only pin_ messages are accepted
46
- if message =~ /session_end/
47
- sessionactive = false
48
- response = response + "session_end:session_end\n"
49
- else
50
- sessionactive = true
51
- response = response + pinsequencer.processmessage(message.chomp) + "\n"
52
- end
53
- end
54
- sessionactivity = Time.now
55
- else
56
- checkmessage = client.gets.chomp
57
- if checkmessage =~ /session_kill/
58
- sessionactive = false
59
- response = response + "Terminated: session from #{remoteuser} at IP address #{remotehost} inactive for #{Time.now - sessionactivity} seconds has been killed\n"
60
- else
61
- response = response + "Busy: server is in use by #{remoteuser} from IP address #{remotehost}\n"
62
- end
63
- end
64
- client.write(response)
65
- client.close
66
- end
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib'))
3
+ require 'socket'
4
+ require 'origen_link/server/sequencer'
5
+
6
+ server = TCPServer.open('', 12_777)
7
+ puts 'server started'
8
+ pinsequencer = OrigenLink::Server::Sequencer.new
9
+ remoteuser = ''
10
+ remotehost = ''
11
+ sessionactivity = Time.now
12
+ sessionactive = false
13
+
14
+ loop do
15
+ client = server.accept
16
+ thisuser = client.gets.chomp
17
+ thisremotehost = client.peeraddr[3]
18
+
19
+ # 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)
20
+ if (Time.now - sessionactivity) > 1200
21
+ sessionactive = false
22
+ end
23
+
24
+ change_in_user = false
25
+
26
+ # if there is no active session running allow one to start
27
+ unless sessionactive
28
+ #flag any change in host machine or user for collision detection
29
+ change_in_user = true unless (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
30
+ remoteuser = thisuser
31
+ remotehost = thisremotehost
32
+ end
33
+
34
+ # always return whether or not the user has been changed (for collision detection)
35
+ if change_in_user
36
+ response = "user_change:user_change\n"
37
+ else
38
+ response = "\n"
39
+ end
40
+
41
+ # if this connection is from the active user\host machine, then process the information
42
+ if (remoteuser.eql? thisuser) && (remotehost.eql? thisremotehost)
43
+ while (message = client.gets) != "\n"
44
+ # process the message
45
+ # for now only pin_ messages are accepted
46
+ if message =~ /session_end/
47
+ sessionactive = false
48
+ response = response + "session_end:session_end\n"
49
+ else
50
+ sessionactive = true
51
+ response = response + pinsequencer.processmessage(message.chomp) + "\n"
52
+ end
53
+ end
54
+ sessionactivity = Time.now
55
+ else
56
+ checkmessage = client.gets.chomp
57
+ if checkmessage =~ /session_kill/
58
+ sessionactive = false
59
+ response = response + "Terminated: session from #{remoteuser} at IP address #{remotehost} inactive for #{Time.now - sessionactivity} seconds has been killed\n"
60
+ else
61
+ response = response + "Busy: server is in use by #{remoteuser} from IP address #{remotehost}\n"
62
+ end
63
+ end
64
+ client.write(response)
65
+ client.close
66
+ end
@@ -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
@@ -1,74 +1,74 @@
1
- # This file should be used to extend the origen with application specific commands
2
-
3
- # Map any command aliases here, for example to allow 'origen ex' to refer to a
4
- # command called execute you would add a reference as shown below:
5
- aliases ={
6
- # "ex" => "execute",
7
- }
8
-
9
- # The requested command is passed in here as @command, this checks it against
10
- # the above alias table and should not be removed.
11
- @command = aliases[@command] || @command
12
-
13
- # Now branch to the specific task code
14
- case @command
15
-
16
- # Here is an example of how to implement a command, the logic can go straight
17
- # in here or you can require an external file if preferred.
18
- when "my_command"
19
- puts "Doing something..."
20
- #require "commands/my_command" # Would load file lib/commands/my_command.rb
21
- # You must always exit upon successfully capturing a command to prevent
22
- # control flowing back to Origen
23
- exit 0
24
-
25
- ## Example of how to make a command to run unit tests, this simply invokes RSpec on
26
- ## the spec directory
27
- #when "specs"
28
- # require "rspec"
29
- # exit RSpec::Core::Runner.run(['spec'])
30
-
31
- ## Example of how to make a command to run diff-based tests
32
- #when "examples", "test"
33
- # Origen.load_application
34
- # status = 0
35
- #
36
- # # Compiler tests
37
- # ARGV = %w(templates/example.txt.erb -t debug -r approved)
38
- # load "origen/commands/compile.rb"
39
- # # Pattern generator tests
40
- # #ARGV = %w(some_pattern -t debug -r approved)
41
- # #load "#{Origen.top}/lib/origen/commands/generate.rb"
42
- #
43
- # if Origen.app.stats.changed_files == 0 &&
44
- # Origen.app.stats.new_files == 0 &&
45
- # Origen.app.stats.changed_patterns == 0 &&
46
- # Origen.app.stats.new_patterns == 0
47
- #
48
- # Origen.app.stats.report_pass
49
- # else
50
- # Origen.app.stats.report_fail
51
- # status = 1
52
- # end
53
- # puts
54
- # if @command == "test"
55
- # Origen.app.unload_target!
56
- # require "rspec"
57
- # result = RSpec::Core::Runner.run(['spec'])
58
- # status = status == 1 ? 1 : result
59
- # end
60
- # exit status # Exit with a 1 on the event of a failure per std unix result codes
61
-
62
- # Always leave an else clause to allow control to fall back through to the
63
- # Origen command handler.
64
- else
65
- # You probably want to also add the your commands to the help shown via
66
- # origen -h, you can do this be assigning the required text to @application_commands
67
- # before handing control back to Origen. Un-comment the example below to get started.
68
- # @application_commands = <<-EOT
69
- # specs Run the specs (tests), -c will enable coverage
70
- # examples Run the examples (tests), -c will enable coverage
71
- # test Run both specs and examples, -c will enable coverage
72
- # EOT
73
-
74
- end
1
+ # This file should be used to extend the origen with application specific commands
2
+
3
+ # Map any command aliases here, for example to allow 'origen ex' to refer to a
4
+ # command called execute you would add a reference as shown below:
5
+ aliases ={
6
+ # "ex" => "execute",
7
+ }
8
+
9
+ # The requested command is passed in here as @command, this checks it against
10
+ # the above alias table and should not be removed.
11
+ @command = aliases[@command] || @command
12
+
13
+ # Now branch to the specific task code
14
+ case @command
15
+
16
+ # Here is an example of how to implement a command, the logic can go straight
17
+ # in here or you can require an external file if preferred.
18
+ when "my_command"
19
+ puts "Doing something..."
20
+ #require "commands/my_command" # Would load file lib/commands/my_command.rb
21
+ # You must always exit upon successfully capturing a command to prevent
22
+ # control flowing back to Origen
23
+ exit 0
24
+
25
+ ## Example of how to make a command to run unit tests, this simply invokes RSpec on
26
+ ## the spec directory
27
+ #when "specs"
28
+ # require "rspec"
29
+ # exit RSpec::Core::Runner.run(['spec'])
30
+
31
+ ## Example of how to make a command to run diff-based tests
32
+ #when "examples", "test"
33
+ # Origen.load_application
34
+ # status = 0
35
+ #
36
+ # # Compiler tests
37
+ # ARGV = %w(templates/example.txt.erb -t debug -r approved)
38
+ # load "origen/commands/compile.rb"
39
+ # # Pattern generator tests
40
+ # #ARGV = %w(some_pattern -t debug -r approved)
41
+ # #load "#{Origen.top}/lib/origen/commands/generate.rb"
42
+ #
43
+ # if Origen.app.stats.changed_files == 0 &&
44
+ # Origen.app.stats.new_files == 0 &&
45
+ # Origen.app.stats.changed_patterns == 0 &&
46
+ # Origen.app.stats.new_patterns == 0
47
+ #
48
+ # Origen.app.stats.report_pass
49
+ # else
50
+ # Origen.app.stats.report_fail
51
+ # status = 1
52
+ # end
53
+ # puts
54
+ # if @command == "test"
55
+ # Origen.app.unload_target!
56
+ # require "rspec"
57
+ # result = RSpec::Core::Runner.run(['spec'])
58
+ # status = status == 1 ? 1 : result
59
+ # end
60
+ # exit status # Exit with a 1 on the event of a failure per std unix result codes
61
+
62
+ # Always leave an else clause to allow control to fall back through to the
63
+ # Origen command handler.
64
+ else
65
+ # You probably want to also add the your commands to the help shown via
66
+ # origen -h, you can do this be assigning the required text to @application_commands
67
+ # before handing control back to Origen. Un-comment the example below to get started.
68
+ # @application_commands = <<-EOT
69
+ # specs Run the specs (tests), -c will enable coverage
70
+ # examples Run the examples (tests), -c will enable coverage
71
+ # test Run both specs and examples, -c will enable coverage
72
+ # EOT
73
+
74
+ end