rggen-verilog 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/lib/rggen/verilog/rtl/bit_field/type/custom.erb +30 -0
  5. data/lib/rggen/verilog/rtl/bit_field/type/custom.rb +113 -0
  6. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rc_w0c_w1c_wc_woc.erb +0 -0
  7. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rc_w0c_w1c_wc_woc.rb +1 -1
  8. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/ro_rotrg.erb +0 -0
  9. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/ro_rotrg.rb +1 -1
  10. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rof.erb +0 -0
  11. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rof.rb +1 -1
  12. data/lib/rggen/verilog/rtl/bit_field/type/rol.erb +25 -0
  13. data/lib/rggen/verilog/rtl/bit_field/type/rol.rb +25 -0
  14. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/row0trg_row1trg.erb +0 -0
  15. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/row0trg_row1trg.rb +1 -1
  16. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rowo_rowotrg.erb +0 -0
  17. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rowo_rowotrg.rb +1 -1
  18. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rs_w0s_w1s_ws_wos.erb +0 -0
  19. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rs_w0s_w1s_ws_wos.rb +1 -1
  20. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rw_rwtrg_w1.erb +0 -0
  21. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rw_rwtrg_w1.rb +1 -1
  22. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rwc.erb +0 -0
  23. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rwc.rb +1 -1
  24. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rwe_rwl.erb +0 -0
  25. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rwe_rwl.rb +1 -1
  26. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rws.erb +0 -0
  27. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/rws.rb +1 -1
  28. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +0 -0
  29. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb +2 -2
  30. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0t_w1t.erb +0 -0
  31. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0t_w1t.rb +1 -1
  32. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0trg_w1trg.erb +0 -0
  33. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/w0trg_w1trg.rb +1 -1
  34. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/wo_wo1_wotrg.erb +0 -0
  35. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/wo_wo1_wotrg.rb +1 -1
  36. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/wrc_wrs.erb +0 -0
  37. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type/wrc_wrs.rb +1 -1
  38. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/type.rb +1 -1
  39. data/lib/rggen/verilog/{bit_field → rtl/bit_field}/verilog_top.rb +1 -1
  40. data/lib/rggen/verilog/rtl/component.rb +9 -0
  41. data/lib/rggen/verilog/rtl/feature.rb +37 -0
  42. data/lib/rggen/verilog/{register → rtl/register}/type/default.erb +0 -0
  43. data/lib/rggen/verilog/{register → rtl/register}/type/external.erb +0 -0
  44. data/lib/rggen/verilog/{register → rtl/register}/type/external.rb +1 -1
  45. data/lib/rggen/verilog/{register → rtl/register}/type/indirect.erb +0 -0
  46. data/lib/rggen/verilog/{register → rtl/register}/type/indirect.rb +1 -1
  47. data/lib/rggen/verilog/{register → rtl/register}/type.rb +1 -1
  48. data/lib/rggen/verilog/{register → rtl/register}/verilog_top.rb +1 -1
  49. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/apb.erb +0 -0
  50. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/apb.rb +1 -1
  51. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/axi4lite.erb +0 -0
  52. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/axi4lite.rb +1 -1
  53. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/wishbone.erb +0 -0
  54. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol/wishbone.rb +1 -1
  55. data/lib/rggen/verilog/{register_block → rtl/register_block}/protocol.rb +1 -1
  56. data/lib/rggen/verilog/{register_block → rtl/register_block}/verilog_macros.erb +0 -0
  57. data/lib/rggen/verilog/{register_block → rtl/register_block}/verilog_top.rb +2 -2
  58. data/lib/rggen/verilog/{register_file → rtl/register_file}/verilog_top.rb +1 -1
  59. data/lib/rggen/verilog/rtl_header/bit_field/verilog_rtl_header.rb +31 -0
  60. data/lib/rggen/verilog/rtl_header/component.rb +13 -0
  61. data/lib/rggen/verilog/rtl_header/feature.rb +26 -0
  62. data/lib/rggen/verilog/rtl_header/register/verilog_rtl_header.rb +62 -0
  63. data/lib/rggen/verilog/rtl_header/register_block/verilog_rtl_header.rb +10 -0
  64. data/lib/rggen/verilog/version.rb +1 -1
  65. data/lib/rggen/verilog.rb +49 -32
  66. metadata +67 -58
  67. data/lib/rggen/verilog/component.rb +0 -7
  68. data/lib/rggen/verilog/feature.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 92ebf6366cd316b67c1baff2f0298b9240a2c570cf1660ec808ed952f763f114
4
- data.tar.gz: d3cd1664b3e5441c5b09867236012b917c29a0a9dd306c5e781b5c8a215b4b9e
3
+ metadata.gz: e74fcb34c71a5d9cdfa75d2ce6ee033ef65550e5cf3a225c2357d5e9beb2905f
4
+ data.tar.gz: 7a109f65cbaddd4abe24ee50e0cefde064e1b4f8036294d66e8ab5d770e5a67a
5
5
  SHA512:
6
- metadata.gz: d4cf77051fb8dcf8e5516c030a874d7183cca68d2b7e9ca7fe550100cd23fef13e31fd915836ab8d439fe468efb5ffcb33a350f71eda030a81a37a76346c2345
7
- data.tar.gz: 1f2e154e8fbe2444127d99d4bcca05c6042058c19ac46b6d2337a3b288ac7a511b3bc77ea88f08cdb5882667e56b74649d5db54f5ba7ea0db6f1fbb7a35f1667
6
+ metadata.gz: 8b55c739e1a881baee014a5bc73521ba6066eb13a2a38e72b016e4debfaab4e4b6417e80ce11643e3350fda393a6f77d469c0d7758c77876bcb12bf4266ed66f
7
+ data.tar.gz: c507b06be435d72c0c22633b9bbd756427dfa921ed50d78ff6dfe8de64aca7b623be5d114ff1047d4ebb448628ea300bbcaf24319ef0655a5519d6f2bb8a75e4
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2020-2022 Taichi Ishitani
3
+ Copyright (c) 2020-2023 Taichi Ishitani
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -68,7 +68,7 @@ Feedbacks, bus reports, questions and etc. are welcome! You can post them bu usi
68
68
 
69
69
  ## Copyright & License
70
70
 
71
- Copyright © 2020-2022 Taichi Ishitani. RgGen::Verilog is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
71
+ Copyright © 2020-2023 Taichi Ishitani. RgGen::Verilog is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
72
72
 
73
73
  ## Code of Conduct
74
74
 
@@ -0,0 +1,30 @@
1
+ rggen_bit_field #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>),
4
+ .SW_READ_ACTION (<%= sw_read_action %>),
5
+ .SW_WRITE_ACTION (<%= sw_write_action %>),
6
+ .SW_WRITE_ONCE (<%= write_once %>),
7
+ .STORAGE (<%= storage %>),
8
+ .EXTERNAL_READ_DATA (<%= external_read_data %>),
9
+ .TRIGGER (<%= trigger %>)
10
+ ) u_bit_field (
11
+ .i_clk (<%= clock %>),
12
+ .i_rst_n (<%= reset %>),
13
+ .i_sw_valid (<%= bit_field_valid %>),
14
+ .i_sw_read_mask (<%= bit_field_read_mask %>),
15
+ .i_sw_write_enable (1'b1),
16
+ .i_sw_write_mask (<%= bit_field_write_mask %>),
17
+ .i_sw_write_data (<%= bit_field_write_data %>),
18
+ .o_sw_read_data (<%= bit_field_read_data %>),
19
+ .o_sw_value (<%= bit_field_value %>),
20
+ .o_write_trigger (<%= output_port(:write_trigger) %>),
21
+ .o_read_trigger (<%= output_port(:read_trigger) %>),
22
+ .i_hw_write_enable (<%= input_port(:hw_write_enable, "1'b0") %>),
23
+ .i_hw_write_data (<%= input_port(:hw_write_data) %>),
24
+ .i_hw_set (<%= input_port(:hw_set) %>),
25
+ .i_hw_clear (<%= input_port(:hw_clear) %>),
26
+ .i_value (<%= input_port(:value_in) %>),
27
+ .i_mask (<%= fill_1(width) %>),
28
+ .o_value (<%= output_port(:value_out) %>),
29
+ .o_value_unmasked ()
30
+ );
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :custom) do
4
+ verilog_rtl do
5
+ build do
6
+ if external_read_data?
7
+ input :value_in, {
8
+ name: "i_#{full_name}", width: width, array_size: array_size
9
+ }
10
+ else
11
+ output :value_out, {
12
+ name: "o_#{full_name}", width: width, array_size: array_size
13
+ }
14
+ end
15
+ if bit_field.hw_write?
16
+ input :hw_write_enable, {
17
+ name: "i_#{full_name}_hw_write_enable", width: 1, array_size: array_size
18
+ }
19
+ input :hw_write_data, {
20
+ name: "i_#{full_name}_hw_write_data", width: width, array_size: array_size
21
+ }
22
+ end
23
+ if bit_field.hw_set?
24
+ input :hw_set, {
25
+ name: "i_#{full_name}_hw_set", width: width, array_size: array_size
26
+ }
27
+ end
28
+ if bit_field.hw_clear?
29
+ input :hw_clear, {
30
+ name: "i_#{full_name}_hw_clear", width: width, array_size: array_size
31
+ }
32
+ end
33
+ if bit_field.write_trigger?
34
+ output :write_trigger, {
35
+ name: "o_#{full_name}_write_trigger", width: 1, array_size: array_size
36
+ }
37
+ end
38
+ if bit_field.read_trigger?
39
+ output :read_trigger, {
40
+ name: "o_#{full_name}_read_trigger", width: 1, array_size: array_size
41
+ }
42
+ end
43
+ end
44
+
45
+ main_code :bit_field, from_template: true
46
+
47
+ private
48
+
49
+ def external_read_data?
50
+ !bit_field.sw_update? && !bit_field.hw_update?
51
+ end
52
+
53
+ def initial_value
54
+ external_read_data? && fill_0(width) || super
55
+ end
56
+
57
+ def sw_read_action
58
+ {
59
+ none: '`RGGEN_READ_NONE',
60
+ default: '`RGGEN_READ_DEFAULT',
61
+ set: '`RGGEN_READ_SET',
62
+ clear: '`RGGEN_READ_CLEAR'
63
+ }[bit_field.sw_read]
64
+ end
65
+
66
+ def sw_write_action
67
+ {
68
+ none: '`RGGEN_WRITE_NONE',
69
+ default: '`RGGEN_WRITE_DEFAULT',
70
+ clear_0: '`RGGEN_WRITE_0_CLEAR',
71
+ clear_1: '`RGGEN_WRITE_1_CLEAR',
72
+ clear: '`RGGEN_WRITE_CLEAR',
73
+ set_0: '`RGGEN_WRITE_0_SET',
74
+ set_1: '`RGGEN_WRITE_1_SET',
75
+ set: '`RGGEN_WRITE_SET',
76
+ toggle_0: '`RGGEN_WRITE_0_TOGGLE',
77
+ toggle_1: '`RGGEN_WRITE_1_TOGGLE'
78
+ }[bit_field.sw_write]
79
+ end
80
+
81
+ def write_once
82
+ bit_field.sw_write_once? && 1 || 0
83
+ end
84
+
85
+ def storage
86
+ external_read_data? && 0 || 1
87
+ end
88
+
89
+ def external_read_data
90
+ external_read_data? && 1 || 0
91
+ end
92
+
93
+ def trigger?
94
+ bit_field.write_trigger? || bit_field.read_trigger?
95
+ end
96
+
97
+ def trigger
98
+ trigger? && 1 || 0
99
+ end
100
+
101
+ def input_port(name, default = nil)
102
+ find_port(name, default || fill_0(width))
103
+ end
104
+
105
+ def output_port(name)
106
+ find_port(name, '')
107
+ end
108
+
109
+ def find_port(name, default_value)
110
+ respond_to?(name) && __send__(name)[loop_variables] || default_value
111
+ end
112
+ end
113
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c, :wc, :woc]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  input :set, {
7
7
  name: "i_#{full_name}_set", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:ro, :rotrg]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  unless bit_field.reference?
7
7
  input :value_in, {
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, :rof) do
4
- verilog do
4
+ verilog_rtl do
5
5
  main_code :bit_field, from_template: true
6
6
  end
7
7
  end
@@ -0,0 +1,25 @@
1
+ rggen_bit_field #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>),
4
+ .SW_WRITE_ACTION (`RGGEN_WRITE_NONE)
5
+ ) u_bit_field (
6
+ .i_clk (<%= clock %>),
7
+ .i_rst_n (<%= reset %>),
8
+ .i_sw_valid (<%= bit_field_valid %>),
9
+ .i_sw_read_mask (<%= bit_field_read_mask %>),
10
+ .i_sw_write_enable (1'b1),
11
+ .i_sw_write_mask (<%= bit_field_write_mask %>),
12
+ .i_sw_write_data (<%= bit_field_write_data %>),
13
+ .o_sw_read_data (<%= bit_field_read_data %>),
14
+ .o_sw_value (<%= bit_field_value %>),
15
+ .o_write_trigger (),
16
+ .o_read_trigger (),
17
+ .i_hw_write_enable (<%= latch_signal %>),
18
+ .i_hw_write_data (<%= value_in[loop_variables] %>),
19
+ .i_hw_set (<%= fill_0(width) %>),
20
+ .i_hw_clear (<%= fill_0(width) %>),
21
+ .i_value (<%= fill_0(width) %>),
22
+ .i_mask (<%= fill_1(width) %>),
23
+ .o_value (<%= value_out[loop_variables] %>),
24
+ .o_value_unmasked ()
25
+ );
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :rol) do
4
+ verilog_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :latch, {
8
+ name: "i_#{full_name}_latch", width: 1, array_size: array_size
9
+ }
10
+ end
11
+ input :value_in, {
12
+ name: "i_#{full_name}", width: width, array_size: array_size
13
+ }
14
+ output :value_out, {
15
+ name: "o_#{full_name}", width: width, array_size: array_size
16
+ }
17
+ end
18
+
19
+ main_code :bit_field, from_template: true
20
+
21
+ def latch_signal
22
+ reference_bit_field || latch[loop_variables]
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:row0trg, :row1trg]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  unless bit_field.reference?
7
7
  input :value_in, {
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rowo, :rowotrg]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :value_out, {
7
7
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s, :ws, :wos]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  input :clear, {
7
7
  name: "i_#{full_name}_clear", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rw, :rwtrg, :w1]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :value_out, {
7
7
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, :rwc) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  unless bit_field.reference?
7
7
  input :clear, {
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rwe, :rwl]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  unless bit_field.reference?
7
7
  input :control, {
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, :rws) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  unless bit_field.reference?
7
7
  input :set, {
@@ -3,7 +3,7 @@
3
3
  RgGen.define_list_item_feature(
4
4
  :bit_field, :type, [:w0crs, :w0src, :w1crs, :w1src, :wcrs, :wsrc]
5
5
  ) do
6
- verilog do
6
+ verilog_rtl do
7
7
  build do
8
8
  output :value_out, {
9
9
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -19,7 +19,7 @@ RgGen.define_list_item_feature(
19
19
  end
20
20
 
21
21
  def read_set?
22
- [:w0crs, :w1crs, :wcrs].include?(bit_field.type)
22
+ [:w0crs, :w1crs, :wcrs].any? { |type| bit_field.type == type }
23
23
  end
24
24
 
25
25
  def write_action
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:w0t, :w1t]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :value_out, {
7
7
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:w0trg, :w1trg]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :trigger, {
7
7
  name: "o_#{full_name}_trigger", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:wo, :wo1, :wotrg]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :value_out, {
7
7
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:bit_field, :type, [:wrc, :wrs]) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :value_out, {
7
7
  name: "o_#{full_name}", width: width, array_size: array_size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_feature(:bit_field, :type) do
4
- verilog do
4
+ verilog_rtl do
5
5
  base_feature do
6
6
  private
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_simple_feature(:bit_field, :verilog_top) do
4
- verilog do
4
+ verilog_rtl do
5
5
  include RgGen::SystemVerilog::RTL::BitFieldIndex
6
6
 
7
7
  export :initial_value
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Verilog
5
+ module RTL
6
+ Component = SystemVerilog::Common::Component
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Verilog
5
+ module RTL
6
+ class Feature < SystemVerilog::RTL::Feature
7
+ include Utility
8
+
9
+ private
10
+
11
+ def create_variable(data_type, attributes, &block)
12
+ attributes = attributes.merge(array_format: :serialized)
13
+ super
14
+ end
15
+
16
+ def create_port(direction, attributes, &block)
17
+ attributes =
18
+ attributes
19
+ .except(:data_type)
20
+ .merge(direction: direction, array_format: :serialized)
21
+ DataObject.new(:argument, attributes, &block)
22
+ end
23
+
24
+ def create_parameter(parameter_type, attributes, &block)
25
+ attributes = attributes.merge(array_format: :serialized)
26
+ super
27
+ end
28
+
29
+ define_entity :wire, :create_variable, :variable, -> { component }
30
+
31
+ undef_method :interface
32
+ undef_method :interface_port
33
+ undef_method :localparam
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:register, :type, :external) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  output :external_valid, {
7
7
  name: "o_#{register.name}_valid", width: 1
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:register, :type, :indirect) do
4
- verilog do
4
+ verilog_rtl do
5
5
  include RgGen::SystemVerilog::RTL::IndirectIndex
6
6
 
7
7
  build do
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_feature(:register, :type) do
4
- verilog do
4
+ verilog_rtl do
5
5
  base_feature do
6
6
  include RgGen::SystemVerilog::RTL::RegisterType
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_simple_feature(:register, :verilog_top) do
4
- verilog do
4
+ verilog_rtl do
5
5
  include RgGen::SystemVerilog::RTL::RegisterIndex
6
6
 
7
7
  build do
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:register_block, :protocol, :apb) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  input :psel, {
7
7
  name: 'i_psel', width: 1
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  parameter :id_width, {
7
7
  name: 'ID_WIDTH', default: 0
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_item_feature(:register_block, :protocol, :wishbone) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  parameter :use_stall, {
7
7
  name: 'USE_STALL', default: 1
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_list_feature(:register_block, :protocol) do
4
- verilog do
4
+ verilog_rtl do
5
5
  shared_context.feature_registry(registry)
6
6
 
7
7
  base_feature do
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_simple_feature(:register_block, :verilog_top) do
4
- verilog do
4
+ verilog_rtl do
5
5
  build do
6
6
  input :clock, {
7
7
  name: 'i_clk', width: 1
@@ -90,7 +90,7 @@ RgGen.define_simple_feature(:register_block, :verilog_top) do
90
90
  def ports
91
91
  register_block
92
92
  .declarations[:port]
93
- .yield_self(&method(:sort_port_declarations))
93
+ .then(&method(:sort_port_declarations))
94
94
  end
95
95
 
96
96
  def sort_port_declarations(declarations)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_simple_feature(:register_file, :verilog_top) do
4
- verilog do
4
+ verilog_rtl do
5
5
  include RgGen::SystemVerilog::RTL::RegisterIndex
6
6
 
7
7
  main_code :register_file do
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:bit_field, :verilog_rtl_header) do
4
+ verilog_rtl_header do
5
+ build do
6
+ define_macro("#{full_name}_bit_width", width)
7
+ define_macro("#{full_name}_bit_mask", mask)
8
+ define_offset_macro
9
+ end
10
+
11
+ private
12
+
13
+ def width
14
+ bit_field.width
15
+ end
16
+
17
+ def mask
18
+ hex((1 << width) - 1, width)
19
+ end
20
+
21
+ def define_offset_macro
22
+ if bit_field.sequential?
23
+ bit_field.sequence_size.times do |i|
24
+ define_macro("#{full_name}_bit_offset_#{i}", bit_field.lsb(i))
25
+ end
26
+ else
27
+ define_macro("#{full_name}_bit_offset", bit_field.lsb)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Verilog
5
+ module RTLHeader
6
+ class Component < SystemVerilog::Common::Component
7
+ def macro_definitions
8
+ [*@children, *@features.values].flat_map(&:macro_definitions)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Verilog
5
+ module RTLHeader
6
+ class Feature < SystemVerilog::RTL::Feature
7
+ include Utility
8
+
9
+ def macro_definitions
10
+ @macro_definitions ||= []
11
+ end
12
+
13
+ private
14
+
15
+ def define_macro(name, value)
16
+ macro_definitions <<
17
+ Core::Utility::CodeUtility::MacroDefinition.new(name.upcase, value)
18
+ end
19
+
20
+ def full_name(separator = '_')
21
+ [register_block.name, component.full_name(separator)].join(separator)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register, :verilog_rtl_header) do
4
+ verilog_rtl_header do
5
+ build do
6
+ define_macro("#{full_name}_byte_width", byte_width)
7
+ define_macro("#{full_name}_byte_size", byte_size)
8
+ define_array_macros if array?
9
+ define_offset_address_macros
10
+ end
11
+
12
+ private
13
+
14
+ def byte_width
15
+ register.byte_width
16
+ end
17
+
18
+ def byte_size
19
+ register.byte_size(hierarchical: true)
20
+ end
21
+
22
+ def array?
23
+ register.array?(hierarchical: true)
24
+ end
25
+
26
+ def array_size
27
+ register.array_size(hierarchical: true)
28
+ end
29
+
30
+ def define_array_macros
31
+ size_list = array_size
32
+ define_macro("#{full_name}_array_dimension", size_list.size)
33
+ size_list.each_with_index do |size, i|
34
+ define_macro("#{full_name}_array_size_#{i}", size)
35
+ end
36
+ end
37
+
38
+ def define_offset_address_macros
39
+ if array?
40
+ address_list.zip(array_suffix) do |address, suffix|
41
+ define_macro("#{full_name}_byte_offset_#{suffix}", address)
42
+ end
43
+ else
44
+ define_macro("#{full_name}_byte_offset", address_list.first)
45
+ end
46
+ end
47
+
48
+ def address_list
49
+ width = register_block.local_address_width
50
+ register
51
+ .expanded_offset_addresses
52
+ .map { |address| hex(address, width) }
53
+ end
54
+
55
+ def array_suffix
56
+ array_size
57
+ .map { |size| (0...size).to_a }
58
+ .then { |list| list.first.product(*list[1..]) }
59
+ .map { |list| list.join('_') }
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register_block, :verilog_rtl_header) do
4
+ verilog_rtl_header do
5
+ write_file '<%= register_block.name %>.vh' do |f|
6
+ f.include_guard
7
+ f.macro_definitions register_block.macro_definitions
8
+ end
9
+ end
10
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module Verilog
5
- VERSION = '0.5.0'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
data/lib/rggen/verilog.rb CHANGED
@@ -4,47 +4,64 @@ require 'rggen/systemverilog/rtl'
4
4
  require_relative 'verilog/version'
5
5
  require_relative 'verilog/utility/local_scope'
6
6
  require_relative 'verilog/utility'
7
- require_relative 'verilog/component'
8
- require_relative 'verilog/feature'
7
+ require_relative 'verilog/rtl/component'
8
+ require_relative 'verilog/rtl/feature'
9
+ require_relative 'verilog/rtl_header/component'
10
+ require_relative 'verilog/rtl_header/feature'
9
11
  require_relative 'verilog/factories'
10
12
 
11
13
  RgGen.setup_plugin :'rggen-verilog' do |plugin|
12
14
  plugin.version RgGen::Verilog::VERSION
13
15
 
14
- plugin.register_component :verilog do
15
- component RgGen::Verilog::Component,
16
+ plugin.register_component :verilog_rtl do
17
+ component RgGen::Verilog::RTL::Component,
16
18
  RgGen::Verilog::ComponentFactory
17
- feature RgGen::Verilog::Feature,
19
+ feature RgGen::Verilog::RTL::Feature,
18
20
  RgGen::Verilog::FeatureFactory
19
21
  end
20
22
 
21
23
  plugin.files [
22
- 'verilog/register_block/verilog_top',
23
- 'verilog/register_block/protocol',
24
- 'verilog/register_block/protocol/apb',
25
- 'verilog/register_block/protocol/axi4lite',
26
- 'verilog/register_block/protocol/wishbone',
27
- 'verilog/register_file/verilog_top',
28
- 'verilog/register/verilog_top',
29
- 'verilog/register/type',
30
- 'verilog/register/type/external',
31
- 'verilog/register/type/indirect',
32
- 'verilog/bit_field/verilog_top',
33
- 'verilog/bit_field/type',
34
- 'verilog/bit_field/type/rc_w0c_w1c_wc_woc',
35
- 'verilog/bit_field/type/ro_rotrg',
36
- 'verilog/bit_field/type/rof',
37
- 'verilog/bit_field/type/row0trg_row1trg',
38
- 'verilog/bit_field/type/rowo_rowotrg',
39
- 'verilog/bit_field/type/rs_w0s_w1s_ws_wos',
40
- 'verilog/bit_field/type/rw_rwtrg_w1',
41
- 'verilog/bit_field/type/rwc',
42
- 'verilog/bit_field/type/rwe_rwl',
43
- 'verilog/bit_field/type/rws',
44
- 'verilog/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
45
- 'verilog/bit_field/type/w0t_w1t',
46
- 'verilog/bit_field/type/w0trg_w1trg',
47
- 'verilog/bit_field/type/wo_wo1_wotrg',
48
- 'verilog/bit_field/type/wrc_wrs'
24
+ 'verilog/rtl/register_block/verilog_top',
25
+ 'verilog/rtl/register_block/protocol',
26
+ 'verilog/rtl/register_block/protocol/apb',
27
+ 'verilog/rtl/register_block/protocol/axi4lite',
28
+ 'verilog/rtl/register_block/protocol/wishbone',
29
+ 'verilog/rtl/register_file/verilog_top',
30
+ 'verilog/rtl/register/verilog_top',
31
+ 'verilog/rtl/register/type',
32
+ 'verilog/rtl/register/type/external',
33
+ 'verilog/rtl/register/type/indirect',
34
+ 'verilog/rtl/bit_field/verilog_top',
35
+ 'verilog/rtl/bit_field/type',
36
+ 'verilog/rtl/bit_field/type/custom',
37
+ 'verilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc',
38
+ 'verilog/rtl/bit_field/type/ro_rotrg',
39
+ 'verilog/rtl/bit_field/type/rof',
40
+ 'verilog/rtl/bit_field/type/rol',
41
+ 'verilog/rtl/bit_field/type/row0trg_row1trg',
42
+ 'verilog/rtl/bit_field/type/rowo_rowotrg',
43
+ 'verilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos',
44
+ 'verilog/rtl/bit_field/type/rw_rwtrg_w1',
45
+ 'verilog/rtl/bit_field/type/rwc',
46
+ 'verilog/rtl/bit_field/type/rwe_rwl',
47
+ 'verilog/rtl/bit_field/type/rws',
48
+ 'verilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
49
+ 'verilog/rtl/bit_field/type/w0t_w1t',
50
+ 'verilog/rtl/bit_field/type/w0trg_w1trg',
51
+ 'verilog/rtl/bit_field/type/wo_wo1_wotrg',
52
+ 'verilog/rtl/bit_field/type/wrc_wrs'
53
+ ]
54
+
55
+ plugin.register_component :verilog_rtl_header do
56
+ component RgGen::Verilog::RTLHeader::Component,
57
+ RgGen::Verilog::ComponentFactory
58
+ feature RgGen::Verilog::RTLHeader::Feature,
59
+ RgGen::Verilog::FeatureFactory
60
+ end
61
+
62
+ plugin.files [
63
+ 'verilog/rtl_header/bit_field/verilog_rtl_header',
64
+ 'verilog/rtl_header/register/verilog_rtl_header',
65
+ 'verilog/rtl_header/register_block/verilog_rtl_header'
49
66
  ]
50
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-verilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-05 00:00:00.000000000 Z
11
+ date: 2023-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rggen-systemverilog
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.27.0
19
+ version: 0.29.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.27.0
26
+ version: 0.29.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -49,58 +49,67 @@ files:
49
49
  - LICENSE
50
50
  - README.md
51
51
  - lib/rggen/verilog.rb
52
- - lib/rggen/verilog/bit_field/type.rb
53
- - lib/rggen/verilog/bit_field/type/rc_w0c_w1c_wc_woc.erb
54
- - lib/rggen/verilog/bit_field/type/rc_w0c_w1c_wc_woc.rb
55
- - lib/rggen/verilog/bit_field/type/ro_rotrg.erb
56
- - lib/rggen/verilog/bit_field/type/ro_rotrg.rb
57
- - lib/rggen/verilog/bit_field/type/rof.erb
58
- - lib/rggen/verilog/bit_field/type/rof.rb
59
- - lib/rggen/verilog/bit_field/type/row0trg_row1trg.erb
60
- - lib/rggen/verilog/bit_field/type/row0trg_row1trg.rb
61
- - lib/rggen/verilog/bit_field/type/rowo_rowotrg.erb
62
- - lib/rggen/verilog/bit_field/type/rowo_rowotrg.rb
63
- - lib/rggen/verilog/bit_field/type/rs_w0s_w1s_ws_wos.erb
64
- - lib/rggen/verilog/bit_field/type/rs_w0s_w1s_ws_wos.rb
65
- - lib/rggen/verilog/bit_field/type/rw_rwtrg_w1.erb
66
- - lib/rggen/verilog/bit_field/type/rw_rwtrg_w1.rb
67
- - lib/rggen/verilog/bit_field/type/rwc.erb
68
- - lib/rggen/verilog/bit_field/type/rwc.rb
69
- - lib/rggen/verilog/bit_field/type/rwe_rwl.erb
70
- - lib/rggen/verilog/bit_field/type/rwe_rwl.rb
71
- - lib/rggen/verilog/bit_field/type/rws.erb
72
- - lib/rggen/verilog/bit_field/type/rws.rb
73
- - lib/rggen/verilog/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb
74
- - lib/rggen/verilog/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb
75
- - lib/rggen/verilog/bit_field/type/w0t_w1t.erb
76
- - lib/rggen/verilog/bit_field/type/w0t_w1t.rb
77
- - lib/rggen/verilog/bit_field/type/w0trg_w1trg.erb
78
- - lib/rggen/verilog/bit_field/type/w0trg_w1trg.rb
79
- - lib/rggen/verilog/bit_field/type/wo_wo1_wotrg.erb
80
- - lib/rggen/verilog/bit_field/type/wo_wo1_wotrg.rb
81
- - lib/rggen/verilog/bit_field/type/wrc_wrs.erb
82
- - lib/rggen/verilog/bit_field/type/wrc_wrs.rb
83
- - lib/rggen/verilog/bit_field/verilog_top.rb
84
- - lib/rggen/verilog/component.rb
85
52
  - lib/rggen/verilog/factories.rb
86
- - lib/rggen/verilog/feature.rb
87
- - lib/rggen/verilog/register/type.rb
88
- - lib/rggen/verilog/register/type/default.erb
89
- - lib/rggen/verilog/register/type/external.erb
90
- - lib/rggen/verilog/register/type/external.rb
91
- - lib/rggen/verilog/register/type/indirect.erb
92
- - lib/rggen/verilog/register/type/indirect.rb
93
- - lib/rggen/verilog/register/verilog_top.rb
94
- - lib/rggen/verilog/register_block/protocol.rb
95
- - lib/rggen/verilog/register_block/protocol/apb.erb
96
- - lib/rggen/verilog/register_block/protocol/apb.rb
97
- - lib/rggen/verilog/register_block/protocol/axi4lite.erb
98
- - lib/rggen/verilog/register_block/protocol/axi4lite.rb
99
- - lib/rggen/verilog/register_block/protocol/wishbone.erb
100
- - lib/rggen/verilog/register_block/protocol/wishbone.rb
101
- - lib/rggen/verilog/register_block/verilog_macros.erb
102
- - lib/rggen/verilog/register_block/verilog_top.rb
103
- - lib/rggen/verilog/register_file/verilog_top.rb
53
+ - lib/rggen/verilog/rtl/bit_field/type.rb
54
+ - lib/rggen/verilog/rtl/bit_field/type/custom.erb
55
+ - lib/rggen/verilog/rtl/bit_field/type/custom.rb
56
+ - lib/rggen/verilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb
57
+ - lib/rggen/verilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.rb
58
+ - lib/rggen/verilog/rtl/bit_field/type/ro_rotrg.erb
59
+ - lib/rggen/verilog/rtl/bit_field/type/ro_rotrg.rb
60
+ - lib/rggen/verilog/rtl/bit_field/type/rof.erb
61
+ - lib/rggen/verilog/rtl/bit_field/type/rof.rb
62
+ - lib/rggen/verilog/rtl/bit_field/type/rol.erb
63
+ - lib/rggen/verilog/rtl/bit_field/type/rol.rb
64
+ - lib/rggen/verilog/rtl/bit_field/type/row0trg_row1trg.erb
65
+ - lib/rggen/verilog/rtl/bit_field/type/row0trg_row1trg.rb
66
+ - lib/rggen/verilog/rtl/bit_field/type/rowo_rowotrg.erb
67
+ - lib/rggen/verilog/rtl/bit_field/type/rowo_rowotrg.rb
68
+ - lib/rggen/verilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb
69
+ - lib/rggen/verilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.rb
70
+ - lib/rggen/verilog/rtl/bit_field/type/rw_rwtrg_w1.erb
71
+ - lib/rggen/verilog/rtl/bit_field/type/rw_rwtrg_w1.rb
72
+ - lib/rggen/verilog/rtl/bit_field/type/rwc.erb
73
+ - lib/rggen/verilog/rtl/bit_field/type/rwc.rb
74
+ - lib/rggen/verilog/rtl/bit_field/type/rwe_rwl.erb
75
+ - lib/rggen/verilog/rtl/bit_field/type/rwe_rwl.rb
76
+ - lib/rggen/verilog/rtl/bit_field/type/rws.erb
77
+ - lib/rggen/verilog/rtl/bit_field/type/rws.rb
78
+ - lib/rggen/verilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb
79
+ - lib/rggen/verilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb
80
+ - lib/rggen/verilog/rtl/bit_field/type/w0t_w1t.erb
81
+ - lib/rggen/verilog/rtl/bit_field/type/w0t_w1t.rb
82
+ - lib/rggen/verilog/rtl/bit_field/type/w0trg_w1trg.erb
83
+ - lib/rggen/verilog/rtl/bit_field/type/w0trg_w1trg.rb
84
+ - lib/rggen/verilog/rtl/bit_field/type/wo_wo1_wotrg.erb
85
+ - lib/rggen/verilog/rtl/bit_field/type/wo_wo1_wotrg.rb
86
+ - lib/rggen/verilog/rtl/bit_field/type/wrc_wrs.erb
87
+ - lib/rggen/verilog/rtl/bit_field/type/wrc_wrs.rb
88
+ - lib/rggen/verilog/rtl/bit_field/verilog_top.rb
89
+ - lib/rggen/verilog/rtl/component.rb
90
+ - lib/rggen/verilog/rtl/feature.rb
91
+ - lib/rggen/verilog/rtl/register/type.rb
92
+ - lib/rggen/verilog/rtl/register/type/default.erb
93
+ - lib/rggen/verilog/rtl/register/type/external.erb
94
+ - lib/rggen/verilog/rtl/register/type/external.rb
95
+ - lib/rggen/verilog/rtl/register/type/indirect.erb
96
+ - lib/rggen/verilog/rtl/register/type/indirect.rb
97
+ - lib/rggen/verilog/rtl/register/verilog_top.rb
98
+ - lib/rggen/verilog/rtl/register_block/protocol.rb
99
+ - lib/rggen/verilog/rtl/register_block/protocol/apb.erb
100
+ - lib/rggen/verilog/rtl/register_block/protocol/apb.rb
101
+ - lib/rggen/verilog/rtl/register_block/protocol/axi4lite.erb
102
+ - lib/rggen/verilog/rtl/register_block/protocol/axi4lite.rb
103
+ - lib/rggen/verilog/rtl/register_block/protocol/wishbone.erb
104
+ - lib/rggen/verilog/rtl/register_block/protocol/wishbone.rb
105
+ - lib/rggen/verilog/rtl/register_block/verilog_macros.erb
106
+ - lib/rggen/verilog/rtl/register_block/verilog_top.rb
107
+ - lib/rggen/verilog/rtl/register_file/verilog_top.rb
108
+ - lib/rggen/verilog/rtl_header/bit_field/verilog_rtl_header.rb
109
+ - lib/rggen/verilog/rtl_header/component.rb
110
+ - lib/rggen/verilog/rtl_header/feature.rb
111
+ - lib/rggen/verilog/rtl_header/register/verilog_rtl_header.rb
112
+ - lib/rggen/verilog/rtl_header/register_block/verilog_rtl_header.rb
104
113
  - lib/rggen/verilog/utility.rb
105
114
  - lib/rggen/verilog/utility/local_scope.rb
106
115
  - lib/rggen/verilog/version.rb
@@ -121,15 +130,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
130
  requirements:
122
131
  - - ">="
123
132
  - !ruby/object:Gem::Version
124
- version: '2.6'
133
+ version: '2.7'
125
134
  required_rubygems_version: !ruby/object:Gem::Requirement
126
135
  requirements:
127
136
  - - ">="
128
137
  - !ruby/object:Gem::Version
129
138
  version: '0'
130
139
  requirements: []
131
- rubygems_version: 3.3.3
140
+ rubygems_version: 3.4.1
132
141
  signing_key:
133
142
  specification_version: 4
134
- summary: rggen-verilog-0.5.0
143
+ summary: rggen-verilog-0.7.0
135
144
  test_files: []
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Verilog
5
- Component = SystemVerilog::Common::Component
6
- end
7
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Verilog
5
- class Feature < SystemVerilog::RTL::Feature
6
- include Utility
7
-
8
- private
9
-
10
- def create_variable(data_type, attributes, &block)
11
- attributes = attributes.merge(array_format: :serialized)
12
- super
13
- end
14
-
15
- def create_port(direction, attributes, &block)
16
- attributes =
17
- attributes
18
- .except(:data_type)
19
- .merge(direction: direction, array_format: :serialized)
20
- DataObject.new(:argument, attributes, &block)
21
- end
22
-
23
- def create_parameter(parameter_type, attributes, &block)
24
- attributes = attributes.merge(array_format: :serialized)
25
- super
26
- end
27
-
28
- define_entity :wire, :create_variable, :variable, -> { component }
29
-
30
- undef_method :interface
31
- undef_method :interface_port
32
- undef_method :localparam
33
- end
34
- end
35
- end