rggen-systemverilog 0.11.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/lib/rggen/systemverilog.rb +3 -47
  4. data/lib/rggen/systemverilog/common.rb +44 -0
  5. data/lib/rggen/systemverilog/common/component.rb +25 -0
  6. data/lib/rggen/systemverilog/common/factories.rb +13 -0
  7. data/lib/rggen/systemverilog/common/feature.rb +78 -0
  8. data/lib/rggen/systemverilog/common/utility.rb +95 -0
  9. data/lib/rggen/systemverilog/common/utility/class_definition.rb +45 -0
  10. data/lib/rggen/systemverilog/common/utility/data_object.rb +131 -0
  11. data/lib/rggen/systemverilog/common/utility/function_definition.rb +47 -0
  12. data/lib/rggen/systemverilog/common/utility/identifier.rb +114 -0
  13. data/lib/rggen/systemverilog/common/utility/interface_instance.rb +57 -0
  14. data/lib/rggen/systemverilog/common/utility/interface_port.rb +51 -0
  15. data/lib/rggen/systemverilog/common/utility/local_scope.rb +64 -0
  16. data/lib/rggen/systemverilog/common/utility/module_definition.rb +76 -0
  17. data/lib/rggen/systemverilog/common/utility/package_definition.rb +61 -0
  18. data/lib/rggen/systemverilog/common/utility/source_file.rb +16 -0
  19. data/lib/rggen/systemverilog/common/utility/structure_definition.rb +39 -0
  20. data/lib/rggen/systemverilog/ral.rb +38 -0
  21. data/lib/rggen/systemverilog/ral/bit_field/type.rb +83 -0
  22. data/lib/rggen/systemverilog/ral/bit_field/type/reserved_rof.rb +5 -0
  23. data/lib/rggen/systemverilog/ral/bit_field/type/rwc_rwe_rwl.rb +23 -0
  24. data/lib/rggen/systemverilog/ral/bit_field/type/w0trg_w1trg.rb +7 -0
  25. data/lib/rggen/systemverilog/ral/feature.rb +26 -0
  26. data/lib/rggen/systemverilog/ral/register/type.rb +154 -0
  27. data/lib/rggen/systemverilog/ral/register/type/default.erb +8 -0
  28. data/lib/rggen/systemverilog/ral/register/type/external.rb +27 -0
  29. data/lib/rggen/systemverilog/ral/register/type/indirect.erb +13 -0
  30. data/lib/rggen/systemverilog/ral/register/type/indirect.rb +35 -0
  31. data/lib/rggen/systemverilog/ral/register_block/sv_ral_block_model.erb +11 -0
  32. data/lib/rggen/systemverilog/ral/register_block/sv_ral_package.rb +65 -0
  33. data/lib/rggen/systemverilog/ral/setup.rb +7 -0
  34. data/lib/rggen/systemverilog/rtl.rb +50 -0
  35. data/lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb +89 -0
  36. data/lib/rggen/systemverilog/rtl/bit_field/type.rb +62 -0
  37. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.erb +15 -0
  38. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.rb +59 -0
  39. data/lib/rggen/systemverilog/rtl/bit_field/type/reserved.erb +3 -0
  40. data/lib/rggen/systemverilog/rtl/bit_field/type/reserved.rb +7 -0
  41. data/lib/rggen/systemverilog/rtl/bit_field/type/ro.erb +6 -0
  42. data/lib/rggen/systemverilog/rtl/bit_field/type/ro.rb +22 -0
  43. data/lib/rggen/systemverilog/rtl/bit_field/type/rof.erb +6 -0
  44. data/lib/rggen/systemverilog/rtl/bit_field/type/rof.rb +7 -0
  45. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.erb +13 -0
  46. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.rb +32 -0
  47. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_wo.erb +9 -0
  48. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_wo.rb +14 -0
  49. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.erb +16 -0
  50. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.rb +61 -0
  51. data/lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb +9 -0
  52. data/lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb +20 -0
  53. data/lib/rggen/systemverilog/rtl/feature.rb +48 -0
  54. data/lib/rggen/systemverilog/rtl/global/array_port_format.rb +19 -0
  55. data/lib/rggen/systemverilog/rtl/global/fold_sv_interface_port.rb +24 -0
  56. data/lib/rggen/systemverilog/rtl/register/sv_rtl_top.rb +82 -0
  57. data/lib/rggen/systemverilog/rtl/register/type.rb +65 -0
  58. data/lib/rggen/systemverilog/rtl/register/type/default.erb +15 -0
  59. data/lib/rggen/systemverilog/rtl/register/type/external.erb +11 -0
  60. data/lib/rggen/systemverilog/rtl/register/type/external.rb +91 -0
  61. data/lib/rggen/systemverilog/rtl/register/type/indirect.erb +17 -0
  62. data/lib/rggen/systemverilog/rtl/register/type/indirect.rb +40 -0
  63. data/lib/rggen/systemverilog/rtl/register_block/protocol.rb +100 -0
  64. data/lib/rggen/systemverilog/rtl/register_block/protocol/apb.erb +10 -0
  65. data/lib/rggen/systemverilog/rtl/register_block/protocol/apb.rb +89 -0
  66. data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.erb +11 -0
  67. data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.rb +125 -0
  68. data/lib/rggen/systemverilog/rtl/register_block/sv_rtl_macros.erb +9 -0
  69. data/lib/rggen/systemverilog/rtl/register_block/sv_rtl_top.rb +86 -0
  70. data/lib/rggen/systemverilog/rtl/setup.rb +13 -0
  71. data/lib/rggen/systemverilog/version.rb +1 -1
  72. metadata +70 -20
  73. data/lib/rggen/systemverilog/component.rb +0 -23
  74. data/lib/rggen/systemverilog/factories.rb +0 -11
  75. data/lib/rggen/systemverilog/feature.rb +0 -76
  76. data/lib/rggen/systemverilog/feature_ral.rb +0 -24
  77. data/lib/rggen/systemverilog/feature_rtl.rb +0 -46
  78. data/lib/rggen/systemverilog/utility.rb +0 -93
  79. data/lib/rggen/systemverilog/utility/class_definition.rb +0 -43
  80. data/lib/rggen/systemverilog/utility/data_object.rb +0 -129
  81. data/lib/rggen/systemverilog/utility/function_definition.rb +0 -45
  82. data/lib/rggen/systemverilog/utility/identifier.rb +0 -112
  83. data/lib/rggen/systemverilog/utility/interface_instance.rb +0 -55
  84. data/lib/rggen/systemverilog/utility/interface_port.rb +0 -49
  85. data/lib/rggen/systemverilog/utility/local_scope.rb +0 -62
  86. data/lib/rggen/systemverilog/utility/module_definition.rb +0 -74
  87. data/lib/rggen/systemverilog/utility/package_definition.rb +0 -59
  88. data/lib/rggen/systemverilog/utility/source_file.rb +0 -14
  89. data/lib/rggen/systemverilog/utility/structure_definition.rb +0 -37
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module SystemVerilog
5
- module Utility
6
- class ModuleDefinition < StructureDefinition
7
- define_attribute :name
8
- define_attribute :package_imports
9
- define_attribute :parameters
10
- define_attribute :ports
11
- define_attribute :variables
12
-
13
- def package_imports(packages)
14
- @package_imports ||= []
15
- @package_imports.concat(Array(packages))
16
- end
17
-
18
- def package_import(package)
19
- package_imports([package])
20
- end
21
-
22
- private
23
-
24
- def header_code(code)
25
- code << [:module, space, name]
26
- package_import_declaration(code)
27
- parameter_declarations(code)
28
- port_declarations(code)
29
- code << semicolon
30
- end
31
-
32
- def package_import_declaration(code)
33
- if (items = pacakge_import_items).empty?
34
- code << space
35
- return
36
- end
37
- add_declarations_to_header(code, items, semicolon)
38
- end
39
-
40
- def pacakge_import_items
41
- Array(@package_imports).map.with_index do |package, i|
42
- if i.zero?
43
- [:import, "#{package}::*"].join(space)
44
- else
45
- [space(6), "#{package}::*"].join(space)
46
- end
47
- end
48
- end
49
-
50
- def parameter_declarations(code)
51
- declarations = Array(parameters)
52
- declarations.empty? || wrap(code, '#(', ')') do
53
- add_declarations_to_header(code, declarations)
54
- end
55
- end
56
-
57
- def port_declarations(code)
58
- declarations = Array(ports)
59
- wrap(code, '(', ')') do
60
- add_declarations_to_header(code, declarations)
61
- end
62
- end
63
-
64
- def pre_body_code(code)
65
- add_declarations_to_body(code, Array(variables))
66
- end
67
-
68
- def footer_code
69
- :endmodule
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module SystemVerilog
5
- module Utility
6
- class PackageDefinition < StructureDefinition
7
- define_attribute :name
8
- define_attribute :package_imports
9
- define_attribute :include_files
10
-
11
- def package_imports(packages)
12
- @package_imports ||= []
13
- @package_imports.concat(Array(packages))
14
- end
15
-
16
- def package_import(package)
17
- package_imports([package])
18
- end
19
-
20
- def include_files(files)
21
- @include_files ||= []
22
- @include_files.concat(Array(files))
23
- end
24
-
25
- def include_file(file)
26
- include_files([file])
27
- end
28
-
29
- private
30
-
31
- def header_code(code)
32
- code << [:package, space, name, semicolon]
33
- end
34
-
35
- def pre_body_code(code)
36
- package_import_declaration(code)
37
- file_include_directives(code)
38
- end
39
-
40
- def package_import_declaration(code)
41
- declarations =
42
- Array(@package_imports)
43
- .map { |package| [:import, space, package, '::*'] }
44
- add_declarations_to_body(code, declarations)
45
- end
46
-
47
- def file_include_directives(code)
48
- Array(@include_files).each do |file|
49
- code << [:'`include', space, string(file), nl]
50
- end
51
- end
52
-
53
- def footer_code
54
- :endpackage
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module SystemVerilog
5
- module Utility
6
- class SourceFile < Core::Utility::CodeUtility::SourceFile
7
- ifndef_keyword :'`ifndef'
8
- endif_keyword :'`endif'
9
- define_keyword :'`define'
10
- include_keyword :'`include'
11
- end
12
- end
13
- end
14
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module SystemVerilog
5
- module Utility
6
- class StructureDefinition <
7
- Core::Utility::CodeUtility::StructureDefinition
8
-
9
- include Core::Utility::AttributeSetter
10
-
11
- def initialize(**default_attributes, &block)
12
- apply_attributes(default_attributes)
13
- super(&block)
14
- end
15
-
16
- private
17
-
18
- def add_declarations_to_header(code, declarations, end_charactor = '')
19
- declarations.empty? || indent(code, 2) do
20
- declarations.each_with_index do |d, i|
21
- code <<
22
- if i < (declarations.size - 1)
23
- [d, comma, nl]
24
- else
25
- [d, end_charactor]
26
- end
27
- end
28
- end
29
- end
30
-
31
- def add_declarations_to_body(code, declarations, end_charactor = ';')
32
- declarations.each { |d| code << d << end_charactor << nl }
33
- end
34
- end
35
- end
36
- end
37
- end