rggen-vhdl 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/lib/rggen/vhdl/bit_field/type/rc_w0c_w1c_wc_woc.erb +2 -0
  5. data/lib/rggen/vhdl/bit_field/type/{ro.erb → ro_rotrg.erb} +8 -4
  6. data/lib/rggen/vhdl/bit_field/type/ro_rotrg.rb +34 -0
  7. data/lib/rggen/vhdl/bit_field/type/rof.erb +5 -2
  8. data/lib/rggen/vhdl/bit_field/type/rowo_rowotrg.erb +28 -0
  9. data/lib/rggen/vhdl/bit_field/type/rowo_rowotrg.rb +44 -0
  10. data/lib/rggen/vhdl/bit_field/type/rs_w0s_w1s_ws_wos.erb +2 -0
  11. data/lib/rggen/vhdl/bit_field/type/{rw_w1_wo_wo1.erb → rw_rwtrg_w1.erb} +4 -2
  12. data/lib/rggen/vhdl/bit_field/type/rw_rwtrg_w1.rb +39 -0
  13. data/lib/rggen/vhdl/bit_field/type/rwc.erb +2 -0
  14. data/lib/rggen/vhdl/bit_field/type/rwe_rwl.erb +2 -0
  15. data/lib/rggen/vhdl/bit_field/type/rws.erb +2 -0
  16. data/lib/rggen/vhdl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +2 -0
  17. data/lib/rggen/vhdl/bit_field/type/w0t_w1t.erb +2 -0
  18. data/lib/rggen/vhdl/bit_field/type/wo_wo1_wotrg.erb +29 -0
  19. data/lib/rggen/vhdl/bit_field/type/wo_wo1_wotrg.rb +32 -0
  20. data/lib/rggen/vhdl/bit_field/type/wrc_wrs.erb +2 -0
  21. data/lib/rggen/vhdl/feature.rb +1 -1
  22. data/lib/rggen/vhdl/register/type/indirect.rb +1 -1
  23. data/lib/rggen/vhdl/register_block/protocol/wishbone.erb +36 -0
  24. data/lib/rggen/vhdl/register_block/protocol/wishbone.rb +25 -0
  25. data/lib/rggen/vhdl/utility.rb +2 -2
  26. data/lib/rggen/vhdl/version.rb +1 -1
  27. data/lib/rggen/vhdl.rb +5 -2
  28. metadata +18 -11
  29. data/lib/rggen/vhdl/bit_field/type/ro.rb +0 -21
  30. data/lib/rggen/vhdl/bit_field/type/rw_w1_wo_wo1.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 06a1c6755b2a8f179607870c8d2d5a24b770008fce59619c3cdad8364da46161
4
- data.tar.gz: 42961741bd866c5e5ed2e4d3e99026214e6dfa499919abda73c3f882b55196f7
3
+ metadata.gz: e152dbacccc9958c0062f2c904e83f467d5d5c1e424954b14074d1bce04d20d7
4
+ data.tar.gz: fac552a7d2706f89903fdcd8e7c16c9a50927ad9925b5c1a024d38f18383ec47
5
5
  SHA512:
6
- metadata.gz: 97ea8805f99296c3cabd602164a3c919d54fbb7b19d66685884ce7da31987d14001d944f2e1856216bd059e1d3fa09945532b357e27f7fd22378f8f6633c9c63
7
- data.tar.gz: 1cccbac061bd475c8a2af1f9c569c59269274ff91b41da806e77ccc94429c113bdd169f7a668777409e1a127e934bcc76fcdb1689f75b6388c75840eb833f589
6
+ metadata.gz: f749e47e3758bbabdb8992710d5192e0c0a33620c1fd8e929249f13a188f92776d6ef57828b60ce73146e4003ec707bca572173bf09d09516e6f4b50837e1be9
7
+ data.tar.gz: b1df3e81e394b417505150dc6757be37b643dba6e42406245983d08819abcaf7202f94f09bc596aa14cd86b4b356c291a59670e306bde791d8573dfe0df94e2d
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 Taichi Ishitani
3
+ Copyright (c) 2021 - 2022 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
@@ -67,7 +67,7 @@ Feedbacks, bus reports, questions and etc. are welcome! You can post them bu usi
67
67
 
68
68
  ## Copyright & License
69
69
 
70
- Copyright © 2021 Taichi Ishitani. RgGen::VHDL is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
70
+ Copyright © 2021 - 2022 Taichi Ishitani. RgGen::VHDL is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
71
71
 
72
72
  ## Code of Conduct
73
73
 
@@ -16,6 +16,8 @@ u_bit_field: entity work.rggen_bit_field
16
16
  i_sw_write_data => <%= bit_field_write_data %>,
17
17
  o_sw_read_data => <%= bit_field_read_data %>,
18
18
  o_sw_value => <%= bit_field_value %>,
19
+ o_write_trigger => open,
20
+ o_read_trigger => open,
19
21
  i_hw_write_enable => "0",
20
22
  i_hw_write_data => (others => '0'),
21
23
  i_hw_set => <%= set[loop_variables] %>,
@@ -1,11 +1,13 @@
1
1
  u_bit_field: entity work.rggen_bit_field
2
2
  generic map (
3
- WIDTH => <%= width %>,
4
- STORAGE => false
3
+ WIDTH => <%= width %>,
4
+ STORAGE => false,
5
+ EXTERNAL_READ_DATA => true,
6
+ TRIGGER => <%= rotrg? %>
5
7
  )
6
8
  port map (
7
- i_clk => '0',
8
- i_rst_n => '0',
9
+ i_clk => <%= clock %>,
10
+ i_rst_n => <%= reset %>,
9
11
  i_sw_valid => <%= bit_field_valid %>,
10
12
  i_sw_read_mask => <%= bit_field_read_mask %>,
11
13
  i_sw_write_enable => "0",
@@ -13,6 +15,8 @@ u_bit_field: entity work.rggen_bit_field
13
15
  i_sw_write_data => <%= bit_field_write_data %>,
14
16
  o_sw_read_data => <%= bit_field_read_data %>,
15
17
  o_sw_value => <%= bit_field_value %>,
18
+ o_write_trigger => open,
19
+ o_read_trigger => <%= read_trigger_signal %>,
16
20
  i_hw_write_enable => "0",
17
21
  i_hw_write_data => (others => '0'),
18
22
  i_hw_set => (others => '0'),
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:ro, :rotrg]) do
4
+ vhdl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :value_in, {
8
+ name: "i_#{full_name}", width: width, array_size: array_size
9
+ }
10
+ end
11
+ if rotrg?
12
+ output :read_trigger, {
13
+ name: "o_#{full_name}_read_trigger", width: 1, array_size: array_size
14
+ }
15
+ end
16
+ end
17
+
18
+ main_code :bit_field, from_template: true
19
+
20
+ private
21
+
22
+ def rotrg?
23
+ bit_field.type == :rotrg
24
+ end
25
+
26
+ def read_trigger_signal
27
+ rotrg? && read_trigger[loop_variables] || 'open'
28
+ end
29
+
30
+ def reference_or_value_in
31
+ reference_bit_field || value_in[loop_variables]
32
+ end
33
+ end
34
+ end
@@ -1,7 +1,8 @@
1
1
  u_bit_field: entity work.rggen_bit_field
2
2
  generic map (
3
- WIDTH => <%= width %>,
4
- STORAGE => false
3
+ WIDTH => <%= width %>,
4
+ STORAGE => false,
5
+ EXTERNAL_READ_DATA => true
5
6
  )
6
7
  port map (
7
8
  i_clk => '0',
@@ -13,6 +14,8 @@ u_bit_field: entity work.rggen_bit_field
13
14
  i_sw_write_data => <%= bit_field_write_data %>,
14
15
  o_sw_read_data => <%= bit_field_read_data %>,
15
16
  o_sw_value => <%= bit_field_value %>,
17
+ o_write_trigger => open,
18
+ o_read_trigger => open,
16
19
  i_hw_write_enable => "0",
17
20
  i_hw_write_data => (others => '0'),
18
21
  i_hw_set => (others => '0'),
@@ -0,0 +1,28 @@
1
+ u_bit_field: entity work.rggen_bit_field
2
+ generic map (
3
+ WIDTH => <%= width %>,
4
+ INITIAL_VALUE => <%= initial_value %>,
5
+ EXTERNAL_READ_DATA => true,
6
+ TRIGGER => <%= rowotrg? %>
7
+ )
8
+ port map (
9
+ i_clk => <%= clock %>,
10
+ i_rst_n => <%= reset %>,
11
+ i_sw_valid => <%= bit_field_valid %>,
12
+ i_sw_read_mask => <%= bit_field_read_mask %>,
13
+ i_sw_write_enable => "1",
14
+ i_sw_write_mask => <%= bit_field_write_mask %>,
15
+ i_sw_write_data => <%= bit_field_write_data %>,
16
+ o_sw_read_data => <%= bit_field_read_data %>,
17
+ o_sw_value => <%= bit_field_value %>,
18
+ o_write_trigger => <%= write_trigger_signal %>,
19
+ o_read_trigger => <%= read_trigger_signal %>,
20
+ i_hw_write_enable => "0",
21
+ i_hw_write_data => (others => '0'),
22
+ i_hw_set => (others => '0'),
23
+ i_hw_clear => (others => '0'),
24
+ i_value => <%= reference_or_value_in %>,
25
+ i_mask => (others => '1'),
26
+ o_value => <%= value_out[loop_variables] %>,
27
+ o_value_unmasked => open
28
+ );
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rowo, :rowotrg]) do
4
+ vhdl do
5
+ build do
6
+ output :value_out, {
7
+ name: "o_#{full_name}", width: width, array_size: array_size
8
+ }
9
+ unless bit_field.reference?
10
+ input :value_in, {
11
+ name: "i_#{full_name}", width: width, array_size: array_size
12
+ }
13
+ end
14
+ if rowotrg?
15
+ output :write_trigger, {
16
+ name: "o_#{full_name}_write_trigger", width: 1, array_size: array_size
17
+ }
18
+ output :read_trigger, {
19
+ name: "o_#{full_name}_read_trigger", width: 1, array_size: array_size
20
+ }
21
+ end
22
+ end
23
+
24
+ main_code :bit_field, from_template: true
25
+
26
+ private
27
+
28
+ def rowotrg?
29
+ bit_field.type == :rowotrg
30
+ end
31
+
32
+ def write_trigger_signal
33
+ rowotrg? && write_trigger[loop_variables] || 'open'
34
+ end
35
+
36
+ def read_trigger_signal
37
+ rowotrg? && read_trigger[loop_variables] || 'open'
38
+ end
39
+
40
+ def reference_or_value_in
41
+ reference_bit_field || value_in[loop_variables]
42
+ end
43
+ end
44
+ end
@@ -16,6 +16,8 @@ u_bit_field: entity work.rggen_bit_field
16
16
  i_sw_write_data => <%= bit_field_write_data %>,
17
17
  o_sw_read_data => <%= bit_field_read_data %>,
18
18
  o_sw_value => <%= bit_field_value %>,
19
+ o_write_trigger => open,
20
+ o_read_trigger => open,
19
21
  i_hw_write_enable => "0",
20
22
  i_hw_write_data => (others => '0'),
21
23
  i_hw_set => (others => '0'),
@@ -2,8 +2,8 @@ u_bit_field: entity work.rggen_bit_field
2
2
  generic map (
3
3
  WIDTH => <%= width %>,
4
4
  INITIAL_VALUE => <%= initial_value %>,
5
- SW_READ_ACTION => <%= read_action %>,
6
- SW_WRITE_ONCE => <%= write_once %>
5
+ SW_WRITE_ONCE => <%= write_once %>,
6
+ TRIGGER => <%= rwtrg? %>
7
7
  )
8
8
  port map (
9
9
  i_clk => <%= clock %>,
@@ -15,6 +15,8 @@ u_bit_field: entity work.rggen_bit_field
15
15
  i_sw_write_data => <%= bit_field_write_data %>,
16
16
  o_sw_read_data => <%= bit_field_read_data %>,
17
17
  o_sw_value => <%= bit_field_value %>,
18
+ o_write_trigger => <%= write_trigger_signal %>,
19
+ o_read_trigger => <%= read_trigger_signal %>,
18
20
  i_hw_write_enable => "0",
19
21
  i_hw_write_data => (others => '0'),
20
22
  i_hw_set => (others => '0'),
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rw, :rwtrg, :w1]) do
4
+ vhdl do
5
+ build do
6
+ output :value_out, {
7
+ name: "o_#{full_name}", width: width, array_size: array_size
8
+ }
9
+ if rwtrg?
10
+ output :write_trigger, {
11
+ name: "o_#{full_name}_write_trigger", width: 1, array_size: array_size
12
+ }
13
+ output :read_trigger, {
14
+ name: "o_#{full_name}_read_trigger", width: 1, array_size: array_size
15
+ }
16
+ end
17
+ end
18
+
19
+ main_code :bit_field, from_template: true
20
+
21
+ private
22
+
23
+ def rwtrg?
24
+ bit_field.type == :rwtrg
25
+ end
26
+
27
+ def write_once
28
+ bit_field.type == :w1
29
+ end
30
+
31
+ def write_trigger_signal
32
+ rwtrg? && write_trigger[loop_variables] || 'open'
33
+ end
34
+
35
+ def read_trigger_signal
36
+ rwtrg? && read_trigger[loop_variables] || 'open'
37
+ end
38
+ end
39
+ end
@@ -14,6 +14,8 @@ u_bit_field: entity work.rggen_bit_field
14
14
  i_sw_write_data => <%= bit_field_write_data %>,
15
15
  o_sw_read_data => <%= bit_field_read_data %>,
16
16
  o_sw_value => <%= bit_field_value %>,
17
+ o_write_trigger => open,
18
+ o_read_trigger => open,
17
19
  i_hw_write_enable => "0",
18
20
  i_hw_write_data => (others => '0'),
19
21
  i_hw_set => (others => '0'),
@@ -14,6 +14,8 @@ u_bit_field: entity work.rggen_bit_field
14
14
  i_sw_write_data => <%= bit_field_write_data %>,
15
15
  o_sw_read_data => <%= bit_field_read_data %>,
16
16
  o_sw_value => <%= bit_field_value %>,
17
+ o_write_trigger => open,
18
+ o_read_trigger => open,
17
19
  i_hw_write_enable => "0",
18
20
  i_hw_write_data => (others => '0'),
19
21
  i_hw_set => (others => '0'),
@@ -13,6 +13,8 @@ u_bit_field: entity work.rggen_bit_field
13
13
  i_sw_write_data => <%= bit_field_write_data %>,
14
14
  o_sw_read_data => <%= bit_field_read_data %>,
15
15
  o_sw_value => <%= bit_field_value %>,
16
+ o_write_trigger => open,
17
+ o_read_trigger => open,
16
18
  i_hw_write_enable => <%= set_signal %>,
17
19
  i_hw_write_data => <%= value_in[loop_variables] %>,
18
20
  i_hw_set => (others => '0'),
@@ -15,6 +15,8 @@ u_bit_field: entity work.rggen_bit_field
15
15
  i_sw_write_data => <%= bit_field_write_data %>,
16
16
  o_sw_read_data => <%= bit_field_read_data %>,
17
17
  o_sw_value => <%= bit_field_value %>,
18
+ o_write_trigger => open,
19
+ o_read_trigger => open,
18
20
  i_hw_write_enable => "0",
19
21
  i_hw_write_data => (others => '0'),
20
22
  i_hw_set => (others => '0'),
@@ -14,6 +14,8 @@ u_bit_field: entity work.rggen_bit_field
14
14
  i_sw_write_data => <%= bit_field_write_data %>,
15
15
  o_sw_read_data => <%= bit_field_read_data %>,
16
16
  o_sw_value => <%= bit_field_value %>,
17
+ o_write_trigger => open,
18
+ o_read_trigger => open,
17
19
  i_hw_write_enable => "0",
18
20
  i_hw_write_data => (others => '0'),
19
21
  i_hw_set => (others => '0'),
@@ -0,0 +1,29 @@
1
+ u_bit_field: entity work.rggen_bit_field
2
+ generic map (
3
+ WIDTH => <%= width %>,
4
+ INITIAL_VALUE => <%= initial_value %>,
5
+ SW_READ_ACTION => RGGEN_READ_NONE,
6
+ SW_WRITE_ONCE => <%= write_once %>,
7
+ TRIGGER => <%= wotrg? %>
8
+ )
9
+ port map (
10
+ i_clk => <%= clock %>,
11
+ i_rst_n => <%= reset %>,
12
+ i_sw_valid => <%= bit_field_valid %>,
13
+ i_sw_read_mask => <%= bit_field_read_mask %>,
14
+ i_sw_write_enable => "1",
15
+ i_sw_write_mask => <%= bit_field_write_mask %>,
16
+ i_sw_write_data => <%= bit_field_write_data %>,
17
+ o_sw_read_data => <%= bit_field_read_data %>,
18
+ o_sw_value => <%= bit_field_value %>,
19
+ o_write_trigger => <%= write_trigger_signal %>,
20
+ o_read_trigger => open,
21
+ i_hw_write_enable => "0",
22
+ i_hw_write_data => (others => '0'),
23
+ i_hw_set => (others => '0'),
24
+ i_hw_clear => (others => '0'),
25
+ i_value => (others => '0'),
26
+ i_mask => (others => '1'),
27
+ o_value => <%= value_out[loop_variables] %>,
28
+ o_value_unmasked => open
29
+ );
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:wo, :wo1, :wotrg]) do
4
+ vhdl do
5
+ build do
6
+ output :value_out, {
7
+ name: "o_#{full_name}", width: width, array_size: array_size
8
+ }
9
+ if wotrg?
10
+ output :write_trigger, {
11
+ name: "o_#{full_name}_write_trigger", width: 1, array_size: array_size
12
+ }
13
+ end
14
+ end
15
+
16
+ main_code :bit_field, from_template: true
17
+
18
+ private
19
+
20
+ def wotrg?
21
+ bit_field.type == :wotrg
22
+ end
23
+
24
+ def write_once
25
+ bit_field.type == :wo1
26
+ end
27
+
28
+ def write_trigger_signal
29
+ wotrg? && write_trigger[loop_variables] || 'open'
30
+ end
31
+ end
32
+ end
@@ -14,6 +14,8 @@ u_bit_field: entity work.rggen_bit_field
14
14
  i_sw_write_data => <%= bit_field_write_data %>,
15
15
  o_sw_read_data => <%= bit_field_read_data %>,
16
16
  o_sw_value => <%= bit_field_value %>,
17
+ o_write_trigger => open,
18
+ o_read_trigger => open,
17
19
  i_hw_write_enable => "0",
18
20
  i_hw_write_data => (others => '0'),
19
21
  i_hw_set => (others => '0'),
@@ -14,7 +14,7 @@ module RgGen
14
14
  def create_port(direction, attributes, &block)
15
15
  attributes =
16
16
  attributes
17
- .merge(direction: { input: :in, output: :out}[direction])
17
+ .merge(direction: { input: :in, output: :out }[direction])
18
18
  DataObject.new(:port, attributes, &block)
19
19
  end
20
20
 
@@ -3,7 +3,7 @@
3
3
  RgGen.define_list_item_feature(:register, :type, :indirect) do
4
4
  vhdl do
5
5
  build do
6
- signal :indirect_match, { width: match_width }
6
+ signal :indirect_match, { width: match_width }
7
7
  end
8
8
 
9
9
  main_code :register, from_template: true
@@ -0,0 +1,36 @@
1
+ u_adapter: entity work.rggen_wishbone_adapter
2
+ generic map (
3
+ ADDRESS_WIDTH => <%= address_width %>,
4
+ LOCAL_ADDRESS_WIDTH => <%= local_address_width %>,
5
+ BUS_WIDTH => <%= bus_width %>,
6
+ REGISTERS => <%= total_registers %>,
7
+ PRE_DECODE => <%= pre_decode %>,
8
+ BASE_ADDRESS => <%= base_address %>,
9
+ BYTE_SIZE => <%= byte_size %>,
10
+ ERROR_STATUS => <%= error_status %>,
11
+ USE_STALL => <%= use_stall %>
12
+ )
13
+ port map (
14
+ i_clk => <%= register_block.clock %>,
15
+ i_rst_n => <%= register_block.reset %>,
16
+ i_wb_cyc => <%= wb_cyc %>,
17
+ i_wb_stb => <%= wb_stb %>,
18
+ o_wb_stall => <%= wb_stall %>,
19
+ i_wb_adr => <%= wb_adr %>,
20
+ i_wb_we => <%= wb_we %>,
21
+ i_wb_dat => <%= wb_dat_i %>,
22
+ i_wb_sel => <%= wb_sel %>,
23
+ o_wb_ack => <%= wb_ack %>,
24
+ o_wb_err => <%= wb_err %>,
25
+ o_wb_rty => <%= wb_rty %>,
26
+ o_wb_dat => <%= wb_dat_o %>,
27
+ o_register_valid => <%= register_block.register_valid %>,
28
+ o_register_access => <%= register_block.register_access %>,
29
+ o_register_address => <%= register_block.register_address %>,
30
+ o_register_write_data => <%= register_block.register_write_data %>,
31
+ o_register_strobe => <%= register_block.register_strobe %>,
32
+ i_register_active => <%= register_block.register_active %>,
33
+ i_register_ready => <%= register_block.register_ready %>,
34
+ i_register_status => <%= register_block.register_status %>,
35
+ i_register_read_data => <%= register_block.register_read_data %>
36
+ );
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register_block, :protocol, :wishbone) do
4
+ vhdl do
5
+ build do
6
+ generic :use_stall, {
7
+ name: 'USE_STALL', type: :boolean, default: true
8
+ }
9
+
10
+ input :wb_cyc, { name: 'i_wb_cyc' }
11
+ input :wb_stb, { name: 'i_wb_stb' }
12
+ output :wb_stall, { name: 'o_wb_stall' }
13
+ input :wb_adr, { name: 'i_wb_adr', width: address_width }
14
+ input :wb_we, { name: 'i_wb_we' }
15
+ input :wb_dat_i, { name: 'i_wb_dat', width: bus_width }
16
+ input :wb_sel, { name: 'i_wb_sel', width: bus_width / 8 }
17
+ output :wb_ack, { name: 'o_wb_ack' }
18
+ output :wb_err, { name: 'o_wb_err' }
19
+ output :wb_rty, { name: 'o_wb_rty' }
20
+ output :wb_dat_o, { name: 'o_wb_dat', width: bus_width }
21
+ end
22
+
23
+ main_code :register_block, from_template: true
24
+ end
25
+ end
@@ -12,12 +12,12 @@ module RgGen
12
12
  end
13
13
 
14
14
  def bin(value, width = nil)
15
- width && format("\"%0*b\"", width, value) || "'#{value[0]}'"
15
+ width && format('"%0*b"', width, value) || "'#{value[0]}'"
16
16
  end
17
17
 
18
18
  def hex(value, width)
19
19
  print_width = (width + 3) / 4
20
- format("x\"%0*x\"", print_width, value)
20
+ format('x"%0*x"', print_width, value)
21
21
  end
22
22
 
23
23
  def local_scope(scope_name, attributes = {}, &block)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module VHDL
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
data/lib/rggen/vhdl.rb CHANGED
@@ -23,16 +23,18 @@ module RgGen
23
23
  plugin.files [
24
24
  'vhdl/bit_field/type',
25
25
  'vhdl/bit_field/type/rc_w0c_w1c_wc_woc',
26
- 'vhdl/bit_field/type/ro',
26
+ 'vhdl/bit_field/type/ro_rotrg',
27
27
  'vhdl/bit_field/type/rof',
28
+ 'vhdl/bit_field/type/rowo_rowotrg',
28
29
  'vhdl/bit_field/type/rs_w0s_w1s_ws_wos',
29
- 'vhdl/bit_field/type/rw_w1_wo_wo1',
30
+ 'vhdl/bit_field/type/rw_rwtrg_w1',
30
31
  'vhdl/bit_field/type/rwc',
31
32
  'vhdl/bit_field/type/rwe_rwl',
32
33
  'vhdl/bit_field/type/rws',
33
34
  'vhdl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
34
35
  'vhdl/bit_field/type/w0t_w1t',
35
36
  'vhdl/bit_field/type/w0trg_w1trg',
37
+ 'vhdl/bit_field/type/wo_wo1_wotrg',
36
38
  'vhdl/bit_field/type/wrc_wrs',
37
39
  'vhdl/bit_field/vhdl_top',
38
40
  'vhdl/register/type',
@@ -42,6 +44,7 @@ module RgGen
42
44
  'vhdl/register_block/protocol',
43
45
  'vhdl/register_block/protocol/apb',
44
46
  'vhdl/register_block/protocol/axi4lite',
47
+ 'vhdl/register_block/protocol/wishbone',
45
48
  'vhdl/register_block/vhdl_top',
46
49
  'vhdl/register_file/vhdl_top'
47
50
  ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-vhdl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.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: 2021-05-16 00:00:00.000000000 Z
11
+ date: 2022-03-25 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.25.1
19
+ version: 0.26.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.25.1
26
+ version: 0.26.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,14 +52,16 @@ files:
52
52
  - lib/rggen/vhdl/bit_field/type.rb
53
53
  - lib/rggen/vhdl/bit_field/type/rc_w0c_w1c_wc_woc.erb
54
54
  - lib/rggen/vhdl/bit_field/type/rc_w0c_w1c_wc_woc.rb
55
- - lib/rggen/vhdl/bit_field/type/ro.erb
56
- - lib/rggen/vhdl/bit_field/type/ro.rb
55
+ - lib/rggen/vhdl/bit_field/type/ro_rotrg.erb
56
+ - lib/rggen/vhdl/bit_field/type/ro_rotrg.rb
57
57
  - lib/rggen/vhdl/bit_field/type/rof.erb
58
58
  - lib/rggen/vhdl/bit_field/type/rof.rb
59
+ - lib/rggen/vhdl/bit_field/type/rowo_rowotrg.erb
60
+ - lib/rggen/vhdl/bit_field/type/rowo_rowotrg.rb
59
61
  - lib/rggen/vhdl/bit_field/type/rs_w0s_w1s_ws_wos.erb
60
62
  - lib/rggen/vhdl/bit_field/type/rs_w0s_w1s_ws_wos.rb
61
- - lib/rggen/vhdl/bit_field/type/rw_w1_wo_wo1.erb
62
- - lib/rggen/vhdl/bit_field/type/rw_w1_wo_wo1.rb
63
+ - lib/rggen/vhdl/bit_field/type/rw_rwtrg_w1.erb
64
+ - lib/rggen/vhdl/bit_field/type/rw_rwtrg_w1.rb
63
65
  - lib/rggen/vhdl/bit_field/type/rwc.erb
64
66
  - lib/rggen/vhdl/bit_field/type/rwc.rb
65
67
  - lib/rggen/vhdl/bit_field/type/rwe_rwl.erb
@@ -72,6 +74,8 @@ files:
72
74
  - lib/rggen/vhdl/bit_field/type/w0t_w1t.rb
73
75
  - lib/rggen/vhdl/bit_field/type/w0trg_w1trg.erb
74
76
  - lib/rggen/vhdl/bit_field/type/w0trg_w1trg.rb
77
+ - lib/rggen/vhdl/bit_field/type/wo_wo1_wotrg.erb
78
+ - lib/rggen/vhdl/bit_field/type/wo_wo1_wotrg.rb
75
79
  - lib/rggen/vhdl/bit_field/type/wrc_wrs.erb
76
80
  - lib/rggen/vhdl/bit_field/type/wrc_wrs.rb
77
81
  - lib/rggen/vhdl/bit_field/vhdl_top.rb
@@ -91,6 +95,8 @@ files:
91
95
  - lib/rggen/vhdl/register_block/protocol/apb.rb
92
96
  - lib/rggen/vhdl/register_block/protocol/axi4lite.erb
93
97
  - lib/rggen/vhdl/register_block/protocol/axi4lite.rb
98
+ - lib/rggen/vhdl/register_block/protocol/wishbone.erb
99
+ - lib/rggen/vhdl/register_block/protocol/wishbone.rb
94
100
  - lib/rggen/vhdl/register_block/vhdl_top.erb
95
101
  - lib/rggen/vhdl/register_block/vhdl_top.rb
96
102
  - lib/rggen/vhdl/register_file/vhdl_top.rb
@@ -106,6 +112,7 @@ licenses:
106
112
  metadata:
107
113
  bug_tracker_uri: https://github.com/rggen/rggen-vhdl/issues
108
114
  mailing_list_uri: https://groups.google.com/d/forum/rggen
115
+ rubygems_mfa_required: 'true'
109
116
  source_code_uri: https://github.com/rggen/rggen-vhdl
110
117
  wiki_uri: https://github.com/rggen/rggen/wiki
111
118
  post_install_message:
@@ -116,15 +123,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
123
  requirements:
117
124
  - - ">="
118
125
  - !ruby/object:Gem::Version
119
- version: 2.5.0
126
+ version: 2.6.0
120
127
  required_rubygems_version: !ruby/object:Gem::Requirement
121
128
  requirements:
122
129
  - - ">="
123
130
  - !ruby/object:Gem::Version
124
131
  version: '0'
125
132
  requirements: []
126
- rubygems_version: 3.2.3
133
+ rubygems_version: 3.3.3
127
134
  signing_key:
128
135
  specification_version: 4
129
- summary: rggen-vhdl-0.1.0
136
+ summary: rggen-vhdl-0.2.0
130
137
  test_files: []
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, :ro) do
4
- vhdl do
5
- build do
6
- unless bit_field.reference?
7
- input :value_in, {
8
- name: "i_#{full_name}", width: width, array_size: array_size
9
- }
10
- end
11
- end
12
-
13
- main_code :bit_field, from_template: true
14
-
15
- private
16
-
17
- def reference_or_value_in
18
- bit_field.reference? && reference_bit_field || value_in[loop_variables]
19
- end
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1, :wo, :wo1]) do
4
- vhdl do
5
- build do
6
- output :value_out, {
7
- name: "o_#{full_name}", width: width, array_size: array_size
8
- }
9
- end
10
-
11
- main_code :bit_field, from_template: true
12
-
13
- private
14
-
15
- def read_action
16
- bit_field.readable? && 'RGGEN_READ_DEFAULT' || 'RGGEN_READ_NONE'
17
- end
18
-
19
- def write_once
20
- [:w1, :wo1].include?(bit_field.type)
21
- end
22
- end
23
- end