rggen-verilog 0.1.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 +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/LICENSE +21 -0
- data/README.md +74 -0
- data/lib/rggen/verilog.rb +64 -0
- data/lib/rggen/verilog/bit_field/type.rb +85 -0
- data/lib/rggen/verilog/bit_field/type/rc_w0c_w1c_wc_woc.erb +21 -0
- data/lib/rggen/verilog/bit_field/type/rc_w0c_w1c_wc_woc.rb +40 -0
- data/lib/rggen/verilog/bit_field/type/reserved.erb +10 -0
- data/lib/rggen/verilog/bit_field/type/reserved.rb +7 -0
- data/lib/rggen/verilog/bit_field/type/ro.erb +11 -0
- data/lib/rggen/verilog/bit_field/type/ro.rb +21 -0
- data/lib/rggen/verilog/bit_field/type/rof.erb +11 -0
- data/lib/rggen/verilog/bit_field/type/rof.rb +7 -0
- data/lib/rggen/verilog/bit_field/type/rs_w0s_w1s_ws_wos.erb +19 -0
- data/lib/rggen/verilog/bit_field/type/rs_w0s_w1s_ws_wos.rb +31 -0
- data/lib/rggen/verilog/bit_field/type/rw_w1_wo_wo1.erb +16 -0
- data/lib/rggen/verilog/bit_field/type/rw_w1_wo_wo1.rb +23 -0
- data/lib/rggen/verilog/bit_field/type/rwc.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/rwc.rb +24 -0
- data/lib/rggen/verilog/bit_field/type/rwe.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/rwe.rb +24 -0
- data/lib/rggen/verilog/bit_field/type/rwl.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/rwl.rb +24 -0
- data/lib/rggen/verilog/bit_field/type/rws.erb +16 -0
- data/lib/rggen/verilog/bit_field/type/rws.rb +27 -0
- data/lib/rggen/verilog/bit_field/type/w0crs_w1crs_wcrs.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/w0crs_w1crs_wcrs.rb +20 -0
- data/lib/rggen/verilog/bit_field/type/w0src_w1src_wsrc.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/w0src_w1src_wsrc.rb +20 -0
- data/lib/rggen/verilog/bit_field/type/w0t_w1t.erb +15 -0
- data/lib/rggen/verilog/bit_field/type/w0t_w1t.rb +19 -0
- data/lib/rggen/verilog/bit_field/type/w0trg_w1trg.erb +14 -0
- data/lib/rggen/verilog/bit_field/type/w0trg_w1trg.rb +19 -0
- data/lib/rggen/verilog/bit_field/type/wrc_wrs.erb +14 -0
- data/lib/rggen/verilog/bit_field/type/wrc_wrs.rb +13 -0
- data/lib/rggen/verilog/bit_field/verilog_top.rb +89 -0
- data/lib/rggen/verilog/component.rb +7 -0
- data/lib/rggen/verilog/factories.rb +11 -0
- data/lib/rggen/verilog/feature.rb +35 -0
- data/lib/rggen/verilog/register/type.rb +101 -0
- data/lib/rggen/verilog/register/type/default.erb +29 -0
- data/lib/rggen/verilog/register/type/external.erb +27 -0
- data/lib/rggen/verilog/register/type/external.rb +45 -0
- data/lib/rggen/verilog/register/type/indirect.erb +31 -0
- data/lib/rggen/verilog/register/type/indirect.rb +18 -0
- data/lib/rggen/verilog/register/verilog_top.rb +58 -0
- data/lib/rggen/verilog/register_block/protocol.rb +51 -0
- data/lib/rggen/verilog/register_block/protocol/apb.erb +33 -0
- data/lib/rggen/verilog/register_block/protocol/apb.rb +40 -0
- data/lib/rggen/verilog/register_block/protocol/axi4lite.erb +48 -0
- data/lib/rggen/verilog/register_block/protocol/axi4lite.rb +92 -0
- data/lib/rggen/verilog/register_block/verilog_macros.erb +4 -0
- data/lib/rggen/verilog/register_block/verilog_top.rb +104 -0
- data/lib/rggen/verilog/register_file/verilog_top.rb +30 -0
- data/lib/rggen/verilog/setup.rb +11 -0
- data/lib/rggen/verilog/utility.rb +13 -0
- data/lib/rggen/verilog/utility/local_scope.rb +15 -0
- data/lib/rggen/verilog/version.rb +7 -0
- metadata +133 -0
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            rggen_bit_field_ro #(
         | 
| 2 | 
            +
              .WIDTH  (<%= width %>)
         | 
| 3 | 
            +
            ) u_bit_field (
         | 
| 4 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 5 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 6 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 7 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 8 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 9 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 10 | 
            +
              .i_value                (<%= initial_value %>)
         | 
| 11 | 
            +
            );
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            <%= module_name %> #(
         | 
| 2 | 
            +
            <% if bit_field.type != :rs %>
         | 
| 3 | 
            +
              .SET_VALUE      (<%= set_value %>),
         | 
| 4 | 
            +
              .WRITE_ONLY     (<%= write_only %>),
         | 
| 5 | 
            +
            <% end %>
         | 
| 6 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 7 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 8 | 
            +
            ) u_bit_field (
         | 
| 9 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 10 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 11 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 12 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 13 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 14 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 15 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 16 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 17 | 
            +
              .i_clear                (<%= clear[loop_variables] %>),
         | 
| 18 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 19 | 
            +
            );
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s, :ws, :wos]) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  input :clear, {
         | 
| 7 | 
            +
                    name: "i_#{full_name}_clear", width: width, array_size: array_size
         | 
| 8 | 
            +
                  }
         | 
| 9 | 
            +
                  output :value_out, {
         | 
| 10 | 
            +
                    name: "o_#{full_name}", width: width, array_size: array_size
         | 
| 11 | 
            +
                  }
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                main_code :bit_field, from_template: true
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                private
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def module_name
         | 
| 19 | 
            +
                  bit_field.type == :rs && 'rggen_bit_field_rs' || 'rggen_bit_field_w01s_ws_wos'
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def set_value
         | 
| 23 | 
            +
                  value = { w0s: 0b00, w1s: 0b01, ws: 0b10, wos: 0b10 }[bit_field.type]
         | 
| 24 | 
            +
                  bin(value, 2)
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def write_only
         | 
| 28 | 
            +
                  bit_field.write_only? && 1 || 0
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            rggen_bit_field_rw_wo #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>),
         | 
| 4 | 
            +
              .WRITE_ONLY     (<%= write_only %>),
         | 
| 5 | 
            +
              .WRITE_ONCE     (<%= write_once %>)
         | 
| 6 | 
            +
            ) u_bit_field (
         | 
| 7 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 8 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 9 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 10 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 11 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 12 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 13 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 14 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 15 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 16 | 
            +
            );
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1, :wo, :wo1]) do
         | 
| 4 | 
            +
              verilog 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 write_only
         | 
| 16 | 
            +
                  bit_field.write_only? && 1 || 0
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def write_once
         | 
| 20 | 
            +
                  [:w1, :wo1].include?(bit_field.type) && 1 || 0
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_rwc #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .i_clear                (<%= clear_signal %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, :rwc) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  unless bit_field.reference?
         | 
| 7 | 
            +
                    input :clear, {
         | 
| 8 | 
            +
                      name: "i_#{full_name}_clear", width: 1, array_size: array_size
         | 
| 9 | 
            +
                    }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  output :value_out, {
         | 
| 12 | 
            +
                    name: "o_#{full_name}", width: width, array_size: array_size
         | 
| 13 | 
            +
                  }
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                main_code :bit_field, from_template: true
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def clear_signal
         | 
| 21 | 
            +
                  reference_bit_field || clear[loop_variables]
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_rwe #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .i_enable               (<%= enable_signal %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, :rwe) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  unless bit_field.reference?
         | 
| 7 | 
            +
                    input :enable, {
         | 
| 8 | 
            +
                      name: "i_#{full_name}_enable", width: 1, array_size: array_size
         | 
| 9 | 
            +
                    }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  output :value_out, {
         | 
| 12 | 
            +
                    name: "o_#{full_name}", width: width, array_size: array_size
         | 
| 13 | 
            +
                  }
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                main_code :bit_field, from_template: true
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def enable_signal
         | 
| 21 | 
            +
                  reference_bit_field || enable[loop_variables]
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_rwl #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .i_lock                 (<%= lock_signal %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, :rwl) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  unless bit_field.reference?
         | 
| 7 | 
            +
                    input :lock, {
         | 
| 8 | 
            +
                      name: "i_#{full_name}_lock", width: 1, array_size: array_size
         | 
| 9 | 
            +
                    }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  output :value_out, {
         | 
| 12 | 
            +
                    name: "o_#{full_name}", width: width, array_size: array_size
         | 
| 13 | 
            +
                  }
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                main_code :bit_field, from_template: true
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def lock_signal
         | 
| 21 | 
            +
                  reference_bit_field || lock[loop_variables]
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            rggen_bit_field_rws #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .i_set                  (<%= set_signal %>),
         | 
| 14 | 
            +
              .i_value                (<%= value_in[loop_variables] %>),
         | 
| 15 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 16 | 
            +
            );
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, :rws) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  unless bit_field.reference?
         | 
| 7 | 
            +
                    input :set, {
         | 
| 8 | 
            +
                      name: "i_#{full_name}_set", 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 | 
            +
                private
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def set_signal
         | 
| 24 | 
            +
                  reference_bit_field || set[loop_variables]
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_w01crs_wcrs #(
         | 
| 2 | 
            +
              .CLEAR_VALUE    (<%= clear_value %>),
         | 
| 3 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 4 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 5 | 
            +
            ) u_bit_field (
         | 
| 6 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 7 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 8 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 9 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 11 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 12 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 13 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs, :wcrs]) do
         | 
| 4 | 
            +
              verilog 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 clear_value
         | 
| 16 | 
            +
                  value = { w0crs: 0b00, w1crs: 0b01, wcrs: 0b10 }[bit_field.type]
         | 
| 17 | 
            +
                  bin(value, 2)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_w01src_wsrc #(
         | 
| 2 | 
            +
              .SET_VALUE      (<%= set_value %>),
         | 
| 3 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 4 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 5 | 
            +
            ) u_bit_field (
         | 
| 6 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 7 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 8 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 9 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 11 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 12 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 13 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:w0src, :w1src, :wsrc]) do
         | 
| 4 | 
            +
              verilog 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 set_value
         | 
| 16 | 
            +
                  value = { w0src: 0b00, w1src: 0b01, wsrc: 0b10 }[bit_field.type]
         | 
| 17 | 
            +
                  bin(value, 2)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            rggen_bit_field_w01t #(
         | 
| 2 | 
            +
              .TOGGLE_VALUE   (<%= toggle_value %>),
         | 
| 3 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 4 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 5 | 
            +
            ) u_bit_field (
         | 
| 6 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 7 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 8 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 9 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 11 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 12 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 13 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 14 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 15 | 
            +
            );
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:w0t, :w1t]) do
         | 
| 4 | 
            +
              verilog 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 toggle_value
         | 
| 16 | 
            +
                  bin({ w0t: 0, w1t: 1 }[bit_field.type], 1)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            rggen_bit_field_w01trg #(
         | 
| 2 | 
            +
              .TRIGGER_VALUE  (<%= trigger_value %>),
         | 
| 3 | 
            +
              .WIDTH          (<%= width %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .o_trigger              (<%= trigger[loop_variables] %>)
         | 
| 14 | 
            +
            );
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RgGen.define_list_item_feature(:bit_field, :type, [:w0trg, :w1trg]) do
         | 
| 4 | 
            +
              verilog do
         | 
| 5 | 
            +
                build do
         | 
| 6 | 
            +
                  output :trigger, {
         | 
| 7 | 
            +
                    name: "o_#{full_name}_trigger", width: width, array_size: array_size
         | 
| 8 | 
            +
                  }
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                main_code :bit_field, from_template: true
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                private
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def trigger_value
         | 
| 16 | 
            +
                  bin({ w0trg: 0, w1trg: 1 }[bit_field.type], 1)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            rggen_bit_field_<%= bit_field.type %> #(
         | 
| 2 | 
            +
              .WIDTH          (<%= width %>),
         | 
| 3 | 
            +
              .INITIAL_VALUE  (<%= initial_value %>)
         | 
| 4 | 
            +
            ) u_bit_field (
         | 
| 5 | 
            +
              .i_clk                  (<%= clock %>),
         | 
| 6 | 
            +
              .i_rst_n                (<%= reset %>),
         | 
| 7 | 
            +
              .i_bit_field_valid      (<%= bit_field_valid %>),
         | 
| 8 | 
            +
              .i_bit_field_read_mask  (<%= bit_field_read_mask %>),
         | 
| 9 | 
            +
              .i_bit_field_write_mask (<%= bit_field_write_mask %>),
         | 
| 10 | 
            +
              .i_bit_field_write_data (<%= bit_field_write_data %>),
         | 
| 11 | 
            +
              .o_bit_field_read_data  (<%= bit_field_read_data %>),
         | 
| 12 | 
            +
              .o_bit_field_value      (<%= bit_field_value %>),
         | 
| 13 | 
            +
              .o_value                (<%= value_out[loop_variables] %>)
         | 
| 14 | 
            +
            );
         |