ecic 0.4.0 → 0.5.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
  SHA256:
3
- metadata.gz: d135593bf08ee2250db65bf5ec3f0703335537464e0fc44ba9f39c23a46c5dad
4
- data.tar.gz: ee954989cb0b2a52e55037f82b7db5002e8c00701a8bae0953aece5a75028798
3
+ metadata.gz: 5fe4c1aca4adfa0193f736c1ad55a32addf62978adf94d658b677805fa5efe2a
4
+ data.tar.gz: 7f01b0281fda482bb7007e8fbdcd592cb03cefb1c198dae0687f4ddb61b98956
5
5
  SHA512:
6
- metadata.gz: 4ae1a8190ffac083f9d1f7ce09a01d1ff29a1d2bb6ad9e952862aec8f0801dd3b9142f24ae2c1ea71f8a47a4c740db307881d2889544a6bbc90920444f169cd8
7
- data.tar.gz: 2f9ddd3385c0df5bd67efb405baf430bc467588cbc84472edfea35587088a1364e5417f1dc825ed624c2c726fb9d18d8c32a58db0c42aab5cc61d1ba7b1d3a51
6
+ metadata.gz: 9791e87cbb17451e0c5b45802a958b7ac0c4e06ce4eea40b9c6fdc850486b5c1310543afbc1ff31fba98e539bf5e09e073ed9aa40b0a054d48dd68cccf655b6f
7
+ data.tar.gz: 98bc6a7a59f5ab7267095dd6681eb240ccf5672ddf883ea0b23d331fe43945ce648c619dcce2d80c622957c0937cf0603729887a24c5b951fe660413e2001f90
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ecic (0.4.0)
4
+ ecic (0.5.0)
5
5
  activesupport (~> 5.2)
6
6
  colorize (~> 0.8)
7
7
  rake (~> 12.3)
data/README.md CHANGED
@@ -95,7 +95,7 @@ Should you still wish to combine eg. the entity and architecture files into one
95
95
 
96
96
  This would result in a file with a `-ent-arc_rtl.vhd` extention for the file containing both the entity and architecture.
97
97
 
98
- ##### Create multiple VHDL design for the same library
98
+ ##### Create multiple VHDL designs for the same library
99
99
 
100
100
  You can create multiple designs at the same time, and designs can be placed in subfolders within a library. For example, to create a new VHDL design called `my_design2` at the root of a library called `my_lib` and create another VHDL design called `my_design3` in a subfolder called `my_subblock`, run:
101
101
 
@@ -144,7 +144,7 @@ That will generate the files as:
144
144
 
145
145
  ./src/design/queue_system/statemachine-*.vhd #Path is relative to the project root folder
146
146
 
147
- Note that even though the current working directory in this example is `arbitor`, the generated files will be placed in the `queue_system` folder, since no hierarchy is included in the design name.
147
+ **Note:** Even though the current working directory in this example is `arbitor`, the generated files will be placed in the `queue_system` folder, since no hierarchy is included in the design name.
148
148
 
149
149
  ## Migrating an existing project to use ECIC
150
150
 
@@ -203,6 +203,6 @@ To install the ECIC framework onto your local machine, run `bundle exec rake ins
203
203
  4. Push to the branch (`git push origin my-new-feature`)
204
204
  5. Create new Pull Request
205
205
 
206
- Bug reports and pull requests are welcome on GitHub at https://github.com/ic-factory/ecic.
206
+ Bug reports and pull requests are most welcome on GitHub at https://github.com/ic-factory/ecic.
207
207
 
208
208
 
@@ -7,6 +7,16 @@ help:
7
7
  Example: ecic new my_project
8
8
 
9
9
  This creates a new ECIC project in ./my_project
10
+ libraries:
11
+ short: Display list of libraries in the project
12
+ long: |
13
+ Displays a list of the libraries in the project, optionally
14
+ along with a list of source files for each library.
15
+
16
+ Example: ecic libraries --include-source-files --format=json
17
+
18
+ Prints a JSON formatted list of all libraries, including the source files in each library.
19
+
10
20
  completion:
11
21
  short: Print words for auto-completion
12
22
  long: |
@@ -40,8 +50,23 @@ help:
40
50
 
41
51
  eval $(ecic completion script)
42
52
 
53
+ addfile:
54
+ short: Add existing design and testbench files to the project!
55
+ long: |
56
+ Add one or more existing design files to a given library in the project!
57
+
58
+ Example: ecic addfile my_lib ./foo/bar/some_design.sv ../toto/kuku.vhd
59
+
60
+ This adds the ./foo/bar/some_design.sv ../toto/kuku.vhd files to the library
61
+ called 'my_lib' by adding these to the <PROJECT_ROOT>/src/design/my_lib/sources.rb file.
62
+
63
+ Although all files that belong to a given library should be placed in the
64
+ folder for that library, you can specify files that are placed anywhere
65
+ in your file system.
66
+
43
67
  generate:
44
68
  short: Generate new testbenches, RTL modules, tests etc.!
69
+
45
70
  testbench:
46
71
  short: Create a new testbench
47
72
  long: |
data/lib/ecic/cli.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  module Ecic
2
2
  class CLI < Command
3
+
4
+ include Ecic::SourceFileAdder
3
5
 
4
6
  class << self
5
7
  def help(shell, subcommand = false)
@@ -48,9 +50,49 @@ module Ecic
48
50
  # GENERATE command:
49
51
  #--------------------------------------------------------------------------
50
52
  desc "generate SUBCOMMAND ...ARGS", Help.text('generate')['short']
51
- long_desc Help.text('generate')['long']
52
53
  subcommand "generate", Generate
53
54
 
55
+
56
+ #--------------------------------------------------------------------------
57
+ # design generator:
58
+ #--------------------------------------------------------------------------
59
+ desc "addfile LIBRARY_NAME FILENAME...", Help.text('addfile')['short']
60
+ long_desc Help.text('addfile')['long']
61
+
62
+ def addfile(lib_name, *file_names)
63
+ begin
64
+ root_dir = Project::root
65
+ if root_dir.nil?
66
+ shell.error "You must be within an ECIC project before calling this command"
67
+ exit(1)
68
+ end
69
+ project = Project.new(root_dir)
70
+ project.load_libraries
71
+
72
+ unless project.has_library?(lib_name)
73
+ if yes?("Library '#{lib_name}' does not exist. Create it? [y/n]:")
74
+ generator = LibraryGenerator.new
75
+ generator.destination_root = root_dir
76
+ generator.library_name = lib_name
77
+ generator.invoke_all
78
+ else
79
+ shell.error "Operation aborted!"
80
+ exit(2)
81
+ end
82
+ end
83
+ file_adder = FileAdder.new
84
+ file_adder.library_name = lib_name
85
+ file_adder.file_names = file_names
86
+ file_adder.invoke_all
87
+
88
+ rescue Exception => exc
89
+ shell.error exc.message
90
+ exit(3)
91
+ end
92
+
93
+ end
94
+
95
+
54
96
  #--------------------------------------------------------------------------
55
97
  # COMPLETION command:
56
98
  #--------------------------------------------------------------------------
@@ -80,8 +122,18 @@ module Ecic
80
122
  #--------------------------------------------------------------------------
81
123
  # LIBRARIES command:
82
124
  #--------------------------------------------------------------------------
83
- desc 'libraries', 'Display list of libraries in your project'
125
+ desc 'libraries', Help.text('libraries')['short']
126
+ long_desc Help.text('libraries')['long']
127
+ option :format, :type => :string, :banner => 'text|json', :desc => 'Specify the output format'
128
+ option :include_source_files, :type => :boolean, :aliases => '-s', :desc => "Include source files for each library"
84
129
  def libraries
130
+
131
+ defaults = {
132
+ "format" => "text",
133
+ "include_source_files" => false
134
+ }
135
+ opt = defaults.merge(options)
136
+
85
137
  root_dir = Project::root
86
138
  if root_dir.nil?
87
139
  shell.error "You must be within an ECIC project before calling this command"
@@ -89,9 +141,14 @@ module Ecic
89
141
  end
90
142
  project = Project.new(root_dir)
91
143
  project.load_libraries
92
- say project.libraries { |lib| "#{lib.to_s}" }.join("\n")
144
+ project.load_sources if opt['include_source_files']
145
+ if opt['format'] == 'json'
146
+ require 'json'
147
+ say project.libraries.map{ |lib| lib.to_json(:include_source_files => opt['include_source_files']) }.join(",")
148
+ else
149
+ say project.libraries.map{ |lib| lib.to_str(:include_source_files => opt['include_source_files']) }.join("\n")
150
+ end
93
151
  end
94
-
95
152
  end
96
153
  end
97
154
 
@@ -1,16 +1,16 @@
1
1
  module Ecic
2
2
 
3
3
  class DesignGenerator < Thor::Group
4
+ # require source_file_adder
4
5
  include Thor::Actions
5
- desc 'Generate a new RTL design'
6
+ include Ecic::SourceFileAdder
6
7
 
7
- attr_writer :library_name, :design_name
8
+ attr_writer :library_name, :design_name, :include_types_pkg
8
9
 
9
10
  def self.source_root
10
11
  File.dirname(__FILE__) + '/../../templates/project'
11
12
  end
12
13
 
13
-
14
14
  # def initialize(project_root_path, lib_name)
15
15
  # @destination_root = project_root_path
16
16
  # @library_name = lib_name
@@ -20,11 +20,27 @@ module Ecic
20
20
  # empty_directory "src/design/#{@library_name}/#{File.dirname(@design_name)}"
21
21
  # end
22
22
 
23
+ def copy_rtl_templates
24
+ base_name = "src/design/#{@library_name}/#{@design_name}"
25
+ @include_types_pkg ||= false
26
+ if @include_types_pkg
27
+ template("src/design/lib/pkg_types.vhd.tt", "#{base_name}-pkg_types.vhd")
28
+ end
29
+ template("src/design/lib/pkg_comp.vhd.tt", "#{base_name}-pkg_comp.vhd")
30
+ template("src/design/lib/ent.vhd.tt", "#{base_name}-ent.vhd")
31
+ template("src/design/lib/arc_rtl.vhd.tt", "#{base_name}-arc_rtl.vhd")
32
+ end
33
+
23
34
  def update_src_list
24
- template("src/design/lib/pkg_types.vhd.tt", "src/design/#{@library_name}/#{@design_name}-pkg_types.vhd")
25
- template("src/design/lib/pkg_comp.vhd.tt", "src/design/#{@library_name}/#{@design_name}-pkg_comp.vhd")
26
- template("src/design/lib/ent.vhd.tt", "src/design/#{@library_name}/#{@design_name}-ent.vhd")
27
- template("src/design/lib/arc_rtl.vhd.tt", "src/design/#{@library_name}/#{@design_name}-arc_rtl.vhd")
35
+ src_file = "src/design/#{@library_name}/sources.rb"
36
+ create_file src_file unless File.exists?(src_file)
37
+ @include_types_pkg ||= false
38
+ if @include_types_pkg
39
+ add_src_file("#{@design_name}-pkg_types.vhd")
40
+ end
41
+ add_src_file("#{@design_name}-pkg_comp.vhd")
42
+ add_src_file("#{@design_name}-ent.vhd")
43
+ add_src_file("#{@design_name}-arc_rtl.vhd")
28
44
  end
29
45
 
30
46
  end
@@ -0,0 +1,21 @@
1
+ module Ecic
2
+
3
+ class FileAdder < Thor::Group
4
+ include Thor::Actions
5
+ include Ecic::SourceFileAdder
6
+
7
+ attr_writer :library_name, :file_names
8
+
9
+ # def self.source_root
10
+ # File.dirname(__FILE__) + '/../../templates/project'
11
+ # end
12
+
13
+ def add_files_to_source_list
14
+ @file_names.each { |file_name|
15
+ add_src_file(file_name)
16
+ }
17
+ end
18
+
19
+ end
20
+
21
+ end
data/lib/ecic/generate.rb CHANGED
@@ -47,38 +47,64 @@ module Ecic
47
47
  option :just_print, :type => :boolean, :aliases => '-n', :desc => "Don't actually run any commands; just print them."
48
48
  option :type, :type => :string, :banner => 'vhdl|sv', :required => true, :desc => 'Speficy the RTL type (VHDL or Verilog/SystemVerilog)'
49
49
  option :lib, :type => :string, :banner => 'LIBRARY_NAME', :required => true, :desc => 'Speficy the RTL type (VHDL or Verilog/SystemVerilog)'
50
+ option :types_package, :type => :boolean, :desc => "Include a package file for type and constant definitions."
51
+
50
52
  def design(*names)
51
- lib_name = options[:lib]
52
- type = options[:type]
53
- root_dir = Project::root
54
- if root_dir.nil?
55
- shell.error "You must be within an ECIC project before calling this command"
56
- exit(1)
57
- end
58
- project = Project.new(root_dir)
59
- project.load_libraries
60
- # p project.libraries
53
+ begin
54
+ lib_name = options[:lib]
55
+ type = options[:type]
56
+ root_dir = Project::root
57
+ if root_dir.nil?
58
+ shell.error "You must be within an ECIC project before calling this command"
59
+ exit(1)
60
+ end
61
+ project = Project.new(root_dir)
62
+ project.load_libraries
63
+ # p project.libraries
61
64
 
62
- unless project.libraries.any? {|l| l.name == lib_name }
63
- if yes?("Library '#{lib_name}' does not exist. Create it?")
64
- generator = LibraryGenerator.new
65
+ unless project.has_library?(lib_name)
66
+ if yes?("Library '#{lib_name}' does not exist. Create it? [y/n]:")
67
+ generator = LibraryGenerator.new
68
+ generator.destination_root = root_dir
69
+ generator.library_name = lib_name
70
+ generator.invoke_all
71
+ else
72
+ shell.error "Operation aborted!"
73
+ exit(2)
74
+ end
75
+ end
76
+
77
+ names.each { |design_name|
78
+ incl_types_pkg = options[:types_package]
79
+ if type == 'vhdl'
80
+ incl_types_pkg = yes?("Would you like to include a package for type and constant definitions for '#{design_name}'? [y/n]: ") if incl_types_pkg.nil?
81
+ else
82
+ incl_types_pkg ||= false
83
+ if incl_types_pkg
84
+ shell.error "--types_package option does not apply for Verilog/SystemVerilog generation!"
85
+ exit(3)
86
+ end
87
+ end
88
+ #Tba
89
+ if type == 'vhdl'
90
+ generator = DesignGenerator.new
91
+ generator.include_types_pkg = incl_types_pkg
92
+ elsif type == 'sv'
93
+ generator = SvDesignGenerator.new
94
+ else
95
+ shell.error "--type option must be set to either 'vhdl' or 'sv'"
96
+ exit(3)
97
+ end
65
98
  generator.destination_root = root_dir
66
99
  generator.library_name = lib_name
100
+ generator.design_name = design_name
67
101
  generator.invoke_all
68
- else
69
- shell.error "Operation aborted!"
70
- exit(2)
71
- end
102
+ }
103
+ rescue Exception => exc
104
+ shell.error exc.message
105
+ exit(3)
72
106
  end
73
- names.each { |design_name|
74
- # shell.say "Generating '#{design_name}' design in #{lib_name} ..."
75
- generator = DesignGenerator.new
76
- # shell.error "DesignGenerator could not be created" if generator.nil?
77
- generator.destination_root = root_dir
78
- generator.library_name = lib_name
79
- generator.design_name = design_name
80
- generator.invoke_all
81
- }
107
+
82
108
  end
83
109
  end
84
110
  end
@@ -0,0 +1,7 @@
1
+ module Ecic::SourceFileAdder
2
+ def add_src_file(file_name)
3
+ src_file = "src/design/#{@library_name}/sources.rb"
4
+ create_file src_file unless File.exists?(src_file)
5
+ append_to_file src_file, "source_file.create('#{file_name}')\n"
6
+ end
7
+ end
data/lib/ecic/library.rb CHANGED
@@ -3,17 +3,54 @@ module Ecic
3
3
  class Library
4
4
 
5
5
  attr_accessor :name
6
+ attr_accessor :source_files
6
7
 
7
- def initialize(name=nil)
8
+ def initialize(project, name=nil)
9
+ @project = project
8
10
  @name = name
11
+ @source_files = []
9
12
  end
10
13
 
11
14
  def create(name)
12
15
  @name = name
13
16
  end
14
17
 
15
- def to_s
16
- @name
18
+ def to_str(options={})
19
+ str = name
20
+ incl_src_files = options[:include_source_files] || false
21
+ if incl_src_files
22
+ str += "\n" + source_files.join("\n")
23
+ end
24
+ str
25
+ end
26
+
27
+ def to_json(options = {})
28
+ incl_src_files = options[:include_source_files] || false
29
+ if incl_src_files
30
+ str = {:name => name, :source_files => source_files}.to_json
31
+ else
32
+ str = {:name => name}.to_json
33
+ end
34
+ end
35
+
36
+ def load_sources
37
+ src_file = File.join(@project.root, 'src', 'design', @name, 'sources.rb')
38
+ if File.exists?(src_file)
39
+ begin
40
+ eval File.read(src_file)
41
+ rescue Exception => exc
42
+ raise "Syntax error occurred while reading #{src_file}: #{exc.message}"
43
+ end
44
+ else
45
+ raise "Could not read sources for #{name} library"
46
+ end
47
+ end
48
+
49
+ #Function used by 'source.create' method used in src/confic/libraries.rb
50
+ def source_file
51
+ new_src = SourceFile.new(self)
52
+ source_files << new_src
53
+ new_src
17
54
  end
18
55
 
19
56
  end
@@ -7,18 +7,18 @@ module Ecic
7
7
  attr_writer :library_name
8
8
 
9
9
  def self.source_root
10
- File.dirname(__FILE__) + '/../../templates'
10
+ File.dirname(__FILE__) + '/../../templates/project'
11
11
  end
12
12
 
13
13
  def create_library_directory
14
- copy_file 'project/src/design/lib/sources.rb', "src/design/#{@library_name}/sources.rb"
14
+ template("src/design/lib/sources.rb.tt", "src/design/#{@library_name}/sources.rb")
15
15
  end
16
16
 
17
17
  def update_library_list
18
18
  libraries_file = File.expand_path("#{destination_root}/src/config/libraries.rb")
19
19
  empty_directory 'src/config' unless File.exist?(File.dirname(libraries_file))
20
20
  create_file libraries_file unless File.exist?(libraries_file)
21
- append_to_file 'src/config/libraries.rb', "\nlibrary.create('#{@library_name}')"
21
+ append_to_file 'src/config/libraries.rb', "library.create('#{@library_name}')\n"
22
22
  end
23
23
 
24
24
  end
data/lib/ecic/project.rb CHANGED
@@ -3,6 +3,7 @@ module Ecic
3
3
  class Project
4
4
 
5
5
  attr_accessor :libraries
6
+ attr_reader :root
6
7
 
7
8
  require 'pathname'
8
9
 
@@ -15,6 +16,8 @@ module Ecic
15
16
  LIBRARIES_CFG_SCRIPT = File.join('src', 'config', 'libraries.rb')
16
17
 
17
18
  #Function that returns the root directory of a ECIC project
19
+ #This is used by some generators to check if a command is called
20
+ #from within an ECIC project folder
18
21
  def self.root(path = Pathname.new(Dir.pwd))
19
22
  if File.exists?(File.join(path, SCRIPT_ECIC))
20
23
  return path
@@ -23,31 +26,39 @@ module Ecic
23
26
  end
24
27
  return root(path.parent)
25
28
  end
26
-
27
- def default_library_cfg_file
28
- File.join(@root, LIBRARIES_CFG_SCRIPT)
29
- end
30
-
31
29
 
32
- def load_libraries(lib_file = default_library_cfg_file)
30
+ def load_libraries
31
+ lib_file = File.join(@root, LIBRARIES_CFG_SCRIPT)
33
32
  if File.exists?(lib_file)
34
- # puts "Reading #{lib_file}"
35
- eval File.read(lib_file)
36
- else
37
- raise "Could not read library definitions from #{lib_file}"
33
+ begin
34
+ eval File.read(lib_file)
35
+ rescue Exception => exc
36
+ raise "Syntax error occurred while reading #{lib_file}: #{exc.message}"
37
+ end
38
+ # else
39
+ # raise "Could not read library definitions from #{lib_file}"
38
40
  end
39
-
40
41
  end
41
42
 
42
- def add_libray(name)
43
- @libraries << Library.new(name)
43
+
44
+ def has_library?(lib_name)
45
+ libraries.any? {|l| l.name == lib_name }
44
46
  end
45
47
 
48
+ # def add_libray(name)
49
+ # @libraries << Library.new(self, name)
50
+ # end
51
+
52
+ #Function used by 'library.create' method used in src/confic/libraries.rb
46
53
  def library
47
- new_lib = Library.new()
54
+ new_lib = Library.new(self)
48
55
  libraries << new_lib
49
56
  new_lib
50
57
  end
51
58
 
59
+ def load_sources
60
+ libraries.each { |lib| lib.load_sources }
61
+ end
62
+
52
63
  end
53
64
  end
@@ -0,0 +1,20 @@
1
+ module Ecic
2
+
3
+ class SourceFile
4
+
5
+ attr_accessor :path #, :library
6
+
7
+ def initialize(library)
8
+ @library = library
9
+ end
10
+
11
+ def create(path)
12
+ @path = path
13
+ end
14
+
15
+ def to_s
16
+ "#{path}"
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module Ecic
2
+
3
+ class SvDesignGenerator < Thor::Group
4
+ include Thor::Actions
5
+ desc 'Generate a new SystemVerilog design'
6
+
7
+ attr_writer :library_name, :design_name
8
+
9
+ def self.source_root
10
+ File.dirname(__FILE__) + '/../../templates/project'
11
+ end
12
+
13
+ def copy_rtl_templates
14
+ base_name = "src/design/#{@library_name}/#{@design_name}"
15
+ template("src/design/lib/design.sv.tt", "#{base_name}.sv")
16
+ end
17
+
18
+ def update_src_list
19
+ src_file = "src/design/#{@library_name}/sources.rb"
20
+ create_file src_file unless File.exists?(src_file)
21
+ append_to_file src_file, "source_file.create('#{@design_name}.sv')\n"
22
+ end
23
+ end
24
+
25
+ end
data/lib/ecic/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ecic
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/ecic.rb CHANGED
@@ -21,11 +21,15 @@ module Ecic
21
21
  autoload :Command, "ecic/command"
22
22
  autoload :CLI, "ecic/cli"
23
23
  autoload :Generate, "ecic/generate"
24
+ autoload :FileAdder, "ecic/file_adder"
24
25
  autoload :Completion, "ecic/completion"
25
26
  autoload :Completer, "ecic/completer"
26
27
  autoload :DesignGenerator, "ecic/design_generator"
28
+ autoload :SvDesignGenerator, "ecic/sv_design_generator"
27
29
  autoload :ProjectGenerator, "ecic/project_generator"
28
30
  autoload :LibraryGenerator, "ecic/library_generator"
31
+ autoload :SourceFileAdder, "ecic/helpers/source_file_adder"
32
+ autoload :SourceFile, "ecic/source_file"
29
33
  autoload :Library, "ecic/library"
30
34
  autoload :Project, "ecic/project"
31
35
  end
data/notes.txt CHANGED
@@ -1,10 +1,12 @@
1
+ * Remove any '/' prefix and postfix from library names when generating a new library (to allow use of "find" command to generate a number of libraries)
2
+ * 'addfile' command must check that each add file actually exists.
3
+
1
4
  #Syntax for sources.rb
2
5
 
3
6
  add design chip, :env => ['asic_rtl', 'asic_gate', 'fpga_rtl']
4
7
  add design [basic_vhdl, chip], :except => {:env => ['asic']}
5
8
  #add design chip_tb, :path => '/some/absolute/path'
6
9
  #add testbench chip_tb, :path => '/some/absolute/path'
7
- #Libraries can be added in libraries.rb with two different syntaxes, eg.:
10
+
11
+ #Libraries can be added in libraries.rb with the syntax:
8
12
  library.create('lib_x')
9
- and
10
- libraries << Library.new('lib_z')
@@ -1,10 +1,13 @@
1
1
  #This file lists all libraries in the project.
2
2
 
3
3
  #Syntax:
4
- # add library LIBRARY
4
+ #
5
+ # library.create('LIBRARY')
6
+ #
5
7
  # where LIBRARY is the name of a VHDL/Verilog library that must be placed in a folder of the same name under src/design
6
8
 
7
9
  #Syntax:
8
- # add testbench TESTBENCH
9
- # where TESTBENCH is the name of a testbench that must be placed in a folder of the same name under src/testbench
10
-
10
+ #
11
+ # testbench.create('TESTBENCH')
12
+ #
13
+ # where TESTBENCH is the name of a testbench that must be placed in a folder of the same name under src/testbench
@@ -0,0 +1 @@
1
+ VHDL architecture template file
@@ -0,0 +1 @@
1
+ SystemVerilog template file
@@ -0,0 +1 @@
1
+ VHDL entity template file
@@ -0,0 +1 @@
1
+ VHDL component template file
@@ -0,0 +1 @@
1
+ VHDL types package template file
@@ -0,0 +1,7 @@
1
+ #This file lists all design files for the '<%= @library_name %>' library.
2
+ #
3
+ # Syntax:
4
+ #
5
+ # source_file.create('DESIGN_FILE')
6
+ #
7
+ # where DESIGN_FILE is the name of a VHDL/Verilog/SystemVerilog file.
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.0
4
+ version: 0.5.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 00:00:00.000000000 Z
11
+ date: 2018-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -141,12 +141,16 @@ files:
141
141
  - lib/ecic/completer/script.sh
142
142
  - lib/ecic/completion.rb
143
143
  - lib/ecic/design_generator.rb
144
+ - lib/ecic/file_adder.rb
144
145
  - lib/ecic/generate.rb
145
146
  - lib/ecic/help.rb
147
+ - lib/ecic/helpers/source_file_adder.rb
146
148
  - lib/ecic/library.rb
147
149
  - lib/ecic/library_generator.rb
148
150
  - lib/ecic/project.rb
149
151
  - lib/ecic/project_generator.rb
152
+ - lib/ecic/source_file.rb
153
+ - lib/ecic/sv_design_generator.rb
150
154
  - lib/ecic/version.rb
151
155
  - notes.txt
152
156
  - spec/lib/cli_spec.rb
@@ -157,10 +161,11 @@ files:
157
161
  - templates/project/config/project.rb
158
162
  - templates/project/gitignore
159
163
  - templates/project/src/design/lib/arc_rtl.vhd.tt
164
+ - templates/project/src/design/lib/design.sv.tt
160
165
  - templates/project/src/design/lib/ent.vhd.tt
161
166
  - templates/project/src/design/lib/pkg_comp.vhd.tt
162
167
  - templates/project/src/design/lib/pkg_types.vhd.tt
163
- - templates/project/src/design/lib/sources.rb
168
+ - templates/project/src/design/lib/sources.rb.tt
164
169
  homepage: https://github.com/ic-factory/ecic
165
170
  licenses:
166
171
  - LGPL-3.0
File without changes