ecic 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +6 -6
- data/config/locales/help.en.yaml +36 -4
- data/lib/ecic.rb +3 -0
- data/lib/ecic/cli.rb +34 -19
- data/lib/ecic/completion.rb +2 -2
- data/lib/ecic/generate.rb +30 -17
- data/lib/ecic/help.rb +7 -7
- data/lib/ecic/library_generator.rb +3 -4
- data/lib/ecic/project.rb +20 -0
- data/lib/ecic/project_generator.rb +10 -14
- data/lib/ecic/version.rb +1 -1
- data/templates/project/Gemfile.tt +3 -0
- data/templates/project/config/ecic.rb +13 -0
- metadata +6 -13
- data/bin/ecic +0 -6
- data/lib/ecic/help/completion.md +0 -22
- data/lib/ecic/help/completion_script.md +0 -3
- data/lib/ecic/help/generate/library.md +0 -4
- data/lib/ecic/help/generate/library_short.md +0 -1
- data/lib/ecic/help/generate/testbench.md +0 -4
- data/lib/ecic/help/generate/testbench_short.md +0 -1
- data/lib/ecic/help/new.md +0 -3
- data/lib/ecic/help/new_short.md +0 -1
- data/templates/project/Gemfile +0 -3
- data/templates/project/src/packages/README.txt +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67af83d0923633a5e2f2397d80a6b1d0afbeefeffef35ae45a769372cc86f58a
|
4
|
+
data.tar.gz: bbc000b8facc774ccb3ab29f4d43afec136bcff984cc473a91c029535b10cdba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fa51e7d5d0eca77f46671e5132a4fd2f702d52060b9b4cf297d855e92f1b98c557763901ff77e55aa30b5b7484e3b934579241d1c49374acd20594302b03819
|
7
|
+
data.tar.gz: d82d6f3b344dc308528786951e13be92fb2a42cf7431808c81b9f54cfbe9534a447a3c2f3b9d2ed1d5ce33eaed565464f4c25219c16716ad437d225b27777183
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ecic (0.
|
4
|
+
ecic (0.2.0)
|
5
5
|
activesupport
|
6
6
|
colorize
|
7
7
|
rake
|
@@ -10,9 +10,9 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
activesupport (5.1
|
13
|
+
activesupport (5.2.1)
|
14
14
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
-
i18n (
|
15
|
+
i18n (>= 0.7, < 2)
|
16
16
|
minitest (~> 5.1)
|
17
17
|
tzinfo (~> 1.1)
|
18
18
|
byebug (10.0.0)
|
@@ -22,11 +22,11 @@ GEM
|
|
22
22
|
concurrent-ruby (1.0.5)
|
23
23
|
diff-lcs (1.3)
|
24
24
|
docile (1.1.5)
|
25
|
-
i18n (
|
25
|
+
i18n (1.1.0)
|
26
26
|
concurrent-ruby (~> 1.0)
|
27
27
|
json (2.1.0)
|
28
28
|
minitest (5.11.3)
|
29
|
-
rake (12.3.
|
29
|
+
rake (12.3.1)
|
30
30
|
rspec (3.7.0)
|
31
31
|
rspec-core (~> 3.7.0)
|
32
32
|
rspec-expectations (~> 3.7.0)
|
@@ -61,4 +61,4 @@ DEPENDENCIES
|
|
61
61
|
rspec
|
62
62
|
|
63
63
|
BUNDLED WITH
|
64
|
-
1.16.
|
64
|
+
1.16.6
|
data/config/locales/help.en.yaml
CHANGED
@@ -1,15 +1,47 @@
|
|
1
1
|
help:
|
2
2
|
new:
|
3
|
-
short: Generate a new project
|
3
|
+
short: Generate a new project in PATH
|
4
4
|
long: |
|
5
|
-
Creates a new chip project
|
5
|
+
Creates a new chip project in PATH.
|
6
6
|
|
7
7
|
Example: ecic new my_project
|
8
8
|
|
9
|
-
This creates a new project
|
9
|
+
This creates a new ECIC project in ./my_project
|
10
|
+
completion:
|
11
|
+
short: Print words for auto-completion
|
12
|
+
long: |
|
13
|
+
Example:
|
14
|
+
|
15
|
+
ecic completion
|
16
|
+
|
17
|
+
Prints words for TAB auto-completion.
|
18
|
+
|
19
|
+
Examples:
|
20
|
+
|
21
|
+
ecic completion
|
22
|
+
ecic completion generate
|
23
|
+
ecic completion generate design
|
24
|
+
|
25
|
+
To enable TAB auto-completion, add the following to your profile:
|
26
|
+
|
27
|
+
eval $(ecic completion script)
|
28
|
+
|
29
|
+
Auto-completion example usage:
|
30
|
+
|
31
|
+
ecic [TAB]
|
32
|
+
ecic generate [TAB]
|
33
|
+
ecic generate design [TAB]
|
34
|
+
ecic generate design --[TAB]
|
35
|
+
|
36
|
+
script:
|
37
|
+
short: Generate script that can be eval to setup auto-completion
|
38
|
+
long: |
|
39
|
+
To use, add the following to your ~/.bashrc or ~/.profile
|
40
|
+
|
41
|
+
eval $(ecic completion script)
|
42
|
+
|
10
43
|
generate:
|
11
44
|
short: Generate new testbenches, RTL modules, tests etc.!
|
12
|
-
generators:
|
13
45
|
testbench:
|
14
46
|
short: Create a new testbench
|
15
47
|
long: |
|
data/lib/ecic.rb
CHANGED
@@ -23,4 +23,7 @@ module Ecic
|
|
23
23
|
autoload :Generate, "ecic/generate"
|
24
24
|
autoload :Completion, "ecic/completion"
|
25
25
|
autoload :Completer, "ecic/completer"
|
26
|
+
autoload :ProjectGenerator, "ecic/project_generator"
|
27
|
+
autoload :LibraryGenerator, "ecic/library_generator"
|
28
|
+
autoload :Project, "ecic/project"
|
26
29
|
end
|
data/lib/ecic/cli.rb
CHANGED
@@ -8,6 +8,11 @@ module Ecic
|
|
8
8
|
super
|
9
9
|
shell.say "To get more help on a specific command, try 'ecic help [COMMAND]'"
|
10
10
|
end
|
11
|
+
|
12
|
+
#TBA: Make a function that returns the root folder for the project
|
13
|
+
def root
|
14
|
+
File.expand_path("./tfj2")
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
check_unknown_options!
|
@@ -17,47 +22,57 @@ module Ecic
|
|
17
22
|
true
|
18
23
|
end
|
19
24
|
|
20
|
-
#TBA: Make a function that returns the root folder for the project
|
21
|
-
def self.root
|
22
|
-
File.expand_path("./tfj2")
|
23
|
-
end
|
24
|
-
|
25
|
-
# class_option :verbose, type: :boolean
|
26
|
-
# class_option :noop, type: :boolean
|
27
|
-
|
28
25
|
#--------------------------------------------------------------------------
|
29
26
|
# NEW command:
|
30
27
|
#--------------------------------------------------------------------------
|
31
|
-
|
32
|
-
|
28
|
+
desc "new PATH", Help.text('new')['short']
|
29
|
+
long_desc Help.text('new')['long']
|
33
30
|
option :verbose, :type => :boolean
|
34
31
|
def new(path)
|
35
32
|
path = File.expand_path(path)
|
36
|
-
|
33
|
+
shell.say "Generating a new project in #{path}"
|
37
34
|
generator = ProjectGenerator.new
|
38
35
|
generator.destination_root = path
|
39
36
|
generator.invoke_all
|
40
|
-
|
37
|
+
|
38
|
+
shell.say "\nTo install the required packages in your project, please run:\n cd #{path}; bundle install\n", Thor::Shell::Color::BOLD
|
39
|
+
#TBA: invoke installation by eg. calling 'bundler install' from within the generated project folder
|
40
|
+
# Bundler.with_clean_env do
|
41
|
+
# Dir.chdir(path) do
|
42
|
+
# `bundle install`
|
43
|
+
# end
|
44
|
+
# end
|
41
45
|
end
|
42
46
|
|
43
|
-
|
44
|
-
|
47
|
+
#--------------------------------------------------------------------------
|
48
|
+
# GENERATE command:
|
49
|
+
#--------------------------------------------------------------------------
|
50
|
+
desc "generate SUBCOMMAND ...ARGS", Help.text('generate')['short']
|
51
|
+
long_desc Help.text('generate')['long']
|
45
52
|
subcommand "generate", Generate
|
46
53
|
|
47
|
-
|
48
|
-
|
54
|
+
#--------------------------------------------------------------------------
|
55
|
+
# COMPLETION command:
|
56
|
+
#--------------------------------------------------------------------------
|
57
|
+
desc "completion *PARAMS", Help.text('completion')['short'], hide: true
|
58
|
+
long_desc Help.text('completion')['long']
|
49
59
|
def completion(*params)
|
50
60
|
Completer.new(CLI, *params).run
|
51
61
|
end
|
52
62
|
|
53
|
-
|
54
|
-
|
63
|
+
#--------------------------------------------------------------------------
|
64
|
+
# COMPLETION_SCRIPT command:
|
65
|
+
#--------------------------------------------------------------------------
|
66
|
+
desc "completion_script", Help.text('completion')['script']['short'], hide: true
|
67
|
+
long_desc Help.text('completion')['script']['long']
|
55
68
|
def completion_script
|
56
69
|
Completer::Script.generate
|
57
70
|
end
|
58
71
|
|
72
|
+
#--------------------------------------------------------------------------
|
73
|
+
# VERSION command:
|
74
|
+
#--------------------------------------------------------------------------
|
59
75
|
desc 'version', 'Display version'
|
60
|
-
map %w[-v --version] => :version
|
61
76
|
def version
|
62
77
|
say "#{VERSION}"
|
63
78
|
end
|
data/lib/ecic/completion.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module Ecic
|
2
2
|
class Completion < Command
|
3
3
|
desc "script", "generates script that can be eval to setup auto-completion"
|
4
|
-
long_desc Help.text(
|
4
|
+
long_desc Help.text('completion')['script']['long']
|
5
5
|
def script
|
6
6
|
Completer::Script.generate
|
7
7
|
end
|
8
8
|
|
9
9
|
desc "completions *PARAMS", "prints words for auto-completion"
|
10
|
-
long_desc Help.text(
|
10
|
+
long_desc Help.text('completion')['list']['long']
|
11
11
|
def list(*params)
|
12
12
|
Completer.new(*params).run
|
13
13
|
end
|
data/lib/ecic/generate.rb
CHANGED
@@ -4,27 +4,40 @@ module Ecic
|
|
4
4
|
#--------------------------------------------------------------------------
|
5
5
|
# TESTBENCH generator:
|
6
6
|
#--------------------------------------------------------------------------
|
7
|
-
class_option :verbose, :type => :boolean
|
7
|
+
#### class_option :verbose, :type => :boolean
|
8
|
+
#### desc "testbench NAME", Help.text('generate')['testbench']['short']
|
9
|
+
#### long_desc Help.text('generate')['testbench']['long']
|
10
|
+
#### option :type, :banner => 'vhdl|sv|uvm', :required => true, :desc => 'Speficy the testbench type (VHDL, SystemVerilog or UVM)'
|
11
|
+
#### option :just_print, :type => :boolean, :aliases => '-n', :desc => "Don't actually run any commands; just print them."
|
12
|
+
#### def testbench(name)
|
13
|
+
#### puts "Implement a generator for creating a new testbench"
|
14
|
+
#### end
|
8
15
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "library NAME...", Help.short_text("generate:library")
|
18
|
-
long_desc Help.text("generate:library")
|
16
|
+
#--------------------------------------------------------------------------
|
17
|
+
# library generator:
|
18
|
+
#--------------------------------------------------------------------------
|
19
|
+
desc "library NAME...", Help.text('generate')['library']['short']
|
20
|
+
long_desc Help.text('generate')['library']['long']
|
21
|
+
|
19
22
|
option :just_print, :type => :boolean, :aliases => '-n', :desc => "Don't actually run any commands; just print them."
|
20
23
|
# def library(names)
|
21
24
|
def library(lib_name)
|
22
|
-
|
23
|
-
|
24
|
-
#
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
project_root_path = Ecic::Project::root
|
26
|
+
#project_root_path = Dir.pwd
|
27
|
+
#if false
|
28
|
+
if project_root_path.nil?
|
29
|
+
shell.error "You must be within an ECIC project before calling this command"
|
30
|
+
exit(1)
|
31
|
+
else
|
32
|
+
shell.say "Generating a new library in #{project_root_path}"
|
33
|
+
generator = LibraryGenerator.new
|
34
|
+
generator.destination_root = project_root_path
|
35
|
+
# names.each do |lib_name|
|
36
|
+
generator.library_name = lib_name
|
37
|
+
generator.invoke_all
|
38
|
+
# end
|
39
|
+
end
|
40
|
+
|
28
41
|
end
|
29
42
|
end
|
30
43
|
end
|
data/lib/ecic/help.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
module Ecic::Help
|
2
|
+
require 'YAML'
|
2
3
|
class << self
|
3
4
|
def text(namespaced_command)
|
4
|
-
|
5
|
-
|
6
|
-
IO.read(path) if File.exist?(path)
|
5
|
+
hlp = YAML.load(File.read(File.expand_path("../../../config/locales/help.en.yaml", __FILE__)))['help'][namespaced_command]
|
6
|
+
# hlp['short']
|
7
7
|
end
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
def long(namespaced_command)
|
9
|
+
p namespaced_command
|
10
|
+
hlp = YAML.load(File.read(File.expand_path("../../../config/locales/help.en.yaml", __FILE__)))['help'][namespaced_command]
|
11
|
+
# hlp['long']
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -10,12 +10,11 @@ module Ecic
|
|
10
10
|
File.dirname(__FILE__) + '/../../templates'
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
def create_library_directory
|
14
|
+
copy_file 'project/src/design/lib/sources.rb', "src/design/#{@library_name}/sources.rb"
|
15
|
+
end
|
16
16
|
|
17
17
|
def update_library_list
|
18
|
-
#TBA 'src/config' creation is only temporary fix!
|
19
18
|
libraries_file = File.expand_path("#{destination_root}/src/config/libraries.rb")
|
20
19
|
empty_directory 'src/config' unless File.exist?(File.dirname(libraries_file))
|
21
20
|
create_file libraries_file unless File.exist?(libraries_file)
|
data/lib/ecic/project.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Ecic
|
2
|
+
|
3
|
+
class Project
|
4
|
+
|
5
|
+
require 'pathname'
|
6
|
+
|
7
|
+
SCRIPT_ECIC = File.join('config', 'ecic.rb')
|
8
|
+
|
9
|
+
#Function that returns the root directory of a ECIC project
|
10
|
+
def self.root(path = Pathname.new(Dir.pwd))
|
11
|
+
if File.exists?(File.join(path, SCRIPT_ECIC))
|
12
|
+
return path
|
13
|
+
elsif path.root?
|
14
|
+
return nil
|
15
|
+
end
|
16
|
+
return root(path.parent)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -12,24 +12,20 @@ module Ecic
|
|
12
12
|
copy_file 'gitignore', '.gitignore'
|
13
13
|
copy_file 'config/project.rb', 'src/config/project.rb'
|
14
14
|
copy_file 'config/libraries.rb', 'src/config/libraries.rb'
|
15
|
-
copy_file '
|
15
|
+
copy_file 'config/ecic.rb', 'src/config/ecic.rb'
|
16
|
+
@ruby_version = '2.4.4'
|
17
|
+
template("Gemfile.tt","Gemfile")
|
16
18
|
end
|
17
19
|
|
18
20
|
def create_output_directories
|
19
|
-
|
20
|
-
|
21
|
-
empty_directory 'src/
|
22
|
-
|
23
|
-
|
24
|
-
create_file 'src/
|
21
|
+
empty_directory 'src/design'
|
22
|
+
create_file 'src/design/.gitkeep' if Dir.empty?("#{destination_root}/src/design")
|
23
|
+
empty_directory 'src/testbench'
|
24
|
+
create_file 'src/testbench/.gitkeep' if Dir.empty?("#{destination_root}/src/testbench")
|
25
|
+
empty_directory 'src/verification'
|
26
|
+
create_file 'src/verification/.gitkeep' if Dir.empty?("#{destination_root}/src/verification")
|
25
27
|
empty_directory 'src/external_packages'
|
26
|
-
|
27
|
-
|
28
|
-
#Replace this function with a call to a 'VHDLComponentGenerator' class
|
29
|
-
def create_top_entity
|
30
|
-
create_file 'src/design/chip/sources.yaml.erb'
|
31
|
-
create_file 'src/design/chip/chip-rtl_arc.vhd'
|
32
|
-
create_file 'src/design/chip/chip-ent.vhd'
|
28
|
+
create_file 'src/external_packages/.gitkeep' if Dir.empty?("#{destination_root}/src/external_packages")
|
33
29
|
end
|
34
30
|
|
35
31
|
def git_init
|
data/lib/ecic/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
Ecic.project.configure do
|
2
|
+
|
3
|
+
#Select the default type of RTL files you wish to generate:
|
4
|
+
#VHDL or SystemVerilog:
|
5
|
+
config.generator.library.type.default = 'vhdl'
|
6
|
+
# config.generator.library.type.default = 'sv'
|
7
|
+
|
8
|
+
config.generator.design.vhdl.combine = ''
|
9
|
+
# config.generator.design.vhdl.combine = 'entity + architecture'
|
10
|
+
# config.generator.design.vhdl.combine = 'entity + component'
|
11
|
+
# config.generator.design.vhdl.combine = 'entity + architecture + component'
|
12
|
+
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Torben Fox Jacobsen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -118,6 +118,7 @@ executables:
|
|
118
118
|
extensions: []
|
119
119
|
extra_rdoc_files: []
|
120
120
|
files:
|
121
|
+
- ".gitignore"
|
121
122
|
- CHANGELOG.md
|
122
123
|
- Gemfile
|
123
124
|
- Gemfile.lock
|
@@ -126,7 +127,6 @@ files:
|
|
126
127
|
- README.md
|
127
128
|
- Rakefile
|
128
129
|
- bin/console
|
129
|
-
- bin/ecic
|
130
130
|
- bin/setup
|
131
131
|
- config/ecic.yaml
|
132
132
|
- config/locales/help.en.yaml
|
@@ -142,26 +142,19 @@ files:
|
|
142
142
|
- lib/ecic/completion.rb
|
143
143
|
- lib/ecic/generate.rb
|
144
144
|
- lib/ecic/help.rb
|
145
|
-
- lib/ecic/help/completion.md
|
146
|
-
- lib/ecic/help/completion_script.md
|
147
|
-
- lib/ecic/help/generate/library.md
|
148
|
-
- lib/ecic/help/generate/library_short.md
|
149
|
-
- lib/ecic/help/generate/testbench.md
|
150
|
-
- lib/ecic/help/generate/testbench_short.md
|
151
|
-
- lib/ecic/help/new.md
|
152
|
-
- lib/ecic/help/new_short.md
|
153
145
|
- lib/ecic/library_generator.rb
|
146
|
+
- lib/ecic/project.rb
|
154
147
|
- lib/ecic/project_generator.rb
|
155
148
|
- lib/ecic/version.rb
|
156
149
|
- notes.txt
|
157
150
|
- spec/lib/cli_spec.rb
|
158
151
|
- spec/spec_helper.rb
|
159
|
-
- templates/project/Gemfile
|
152
|
+
- templates/project/Gemfile.tt
|
153
|
+
- templates/project/config/ecic.rb
|
160
154
|
- templates/project/config/libraries.rb
|
161
155
|
- templates/project/config/project.rb
|
162
156
|
- templates/project/gitignore
|
163
157
|
- templates/project/src/design/lib/sources.rb
|
164
|
-
- templates/project/src/packages/README.txt
|
165
158
|
homepage: https://github.com/ic-factory/ecic
|
166
159
|
licenses:
|
167
160
|
- LGPL-3.0
|
data/bin/ecic
DELETED
data/lib/ecic/help/completion.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Example:
|
2
|
-
|
3
|
-
ecic completion
|
4
|
-
|
5
|
-
Prints words for TAB auto-completion.
|
6
|
-
|
7
|
-
Examples:
|
8
|
-
|
9
|
-
ecic completion
|
10
|
-
ecic completion hello
|
11
|
-
ecic completion hello name
|
12
|
-
|
13
|
-
To enable TAB auto-completion, add the following to your profile:
|
14
|
-
|
15
|
-
eval $(ecic completion script)
|
16
|
-
|
17
|
-
Auto-completion example usage:
|
18
|
-
|
19
|
-
ecic [TAB]
|
20
|
-
ecic generate [TAB]
|
21
|
-
ecic generate design [TAB]
|
22
|
-
ecic generate design --[TAB]
|
@@ -1 +0,0 @@
|
|
1
|
-
Generate new library
|
@@ -1 +0,0 @@
|
|
1
|
-
Generate new testbench
|
data/lib/ecic/help/new.md
DELETED
data/lib/ecic/help/new_short.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Create new project
|
data/templates/project/Gemfile
DELETED
File without changes
|