HDLRuby 2.5.1 → 2.6.8
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 +4 -4
- data/lib/HDLRuby/hdr_samples/adder.rb +1 -1
- data/lib/HDLRuby/hdr_samples/adder_bench.rb +1 -1
- data/lib/HDLRuby/hdr_samples/adder_gen.rb +1 -1
- data/lib/HDLRuby/hdr_samples/comparison_bench.rb +40 -0
- data/lib/HDLRuby/hdr_samples/constant_in_function.rb +27 -0
- data/lib/HDLRuby/hdr_samples/dff_unit.rb +3 -3
- data/lib/HDLRuby/hdr_samples/huge_rom.rb +25 -0
- data/lib/HDLRuby/hdr_samples/logic_bench.rb +21 -0
- data/lib/HDLRuby/hdr_samples/mei8_bench.rb +1 -1
- data/lib/HDLRuby/hdr_samples/multi_timed_bench.rb +54 -0
- data/lib/HDLRuby/hdr_samples/music.rb +79 -0
- data/lib/HDLRuby/hdr_samples/named_sub.rb +42 -0
- data/lib/HDLRuby/hdr_samples/rom.rb +16 -0
- data/lib/HDLRuby/hdr_samples/type_minmax_bench.rb +37 -0
- data/lib/HDLRuby/hdr_samples/with_function_generator.rb +25 -0
- data/lib/HDLRuby/hdr_samples/with_to_array.rb +29 -0
- data/lib/HDLRuby/hdrcc.rb +69 -9
- data/lib/HDLRuby/hruby_decorator.rb +3 -1
- data/lib/HDLRuby/hruby_high.rb +220 -29
- data/lib/HDLRuby/hruby_low.rb +433 -45
- data/lib/HDLRuby/hruby_low2c.rb +122 -168
- data/lib/HDLRuby/hruby_low2hdr.rb +738 -0
- data/lib/HDLRuby/hruby_low2high.rb +331 -549
- data/lib/HDLRuby/hruby_low2vhd.rb +39 -2
- data/lib/HDLRuby/hruby_low_bool2select.rb +29 -0
- data/lib/HDLRuby/hruby_low_casts_without_expression.rb +27 -0
- data/lib/HDLRuby/hruby_low_fix_types.rb +25 -0
- data/lib/HDLRuby/hruby_low_mutable.rb +70 -0
- data/lib/HDLRuby/hruby_low_resolve.rb +28 -0
- data/lib/HDLRuby/hruby_low_without_connection.rb +6 -3
- data/lib/HDLRuby/hruby_low_without_namespace.rb +7 -4
- data/lib/HDLRuby/hruby_low_without_select.rb +13 -0
- data/lib/HDLRuby/hruby_tools.rb +11 -1
- data/lib/HDLRuby/hruby_verilog.rb +1572 -1723
- data/lib/HDLRuby/sim/hruby_sim.h +45 -5
- data/lib/HDLRuby/sim/hruby_sim_calc.c +192 -20
- data/lib/HDLRuby/sim/hruby_sim_core.c +24 -9
- data/lib/HDLRuby/sim/hruby_sim_vcd.c +7 -3
- data/lib/HDLRuby/sim/hruby_sim_vizualize.c +22 -6
- data/lib/HDLRuby/std/fixpoint.rb +9 -0
- data/lib/HDLRuby/std/function_generator.rb +139 -0
- data/lib/HDLRuby/std/hruby_unit.rb +75 -0
- data/lib/HDLRuby/version.rb +1 -1
- metadata +18 -6
- data/lib/HDLRuby/hruby_unit.rb +0 -43
@@ -357,6 +357,7 @@ static void vcd_print_header() {
|
|
357
357
|
}
|
358
358
|
|
359
359
|
|
360
|
+
|
360
361
|
/* The configuration and initialization of the vcd vizualizer. */
|
361
362
|
|
362
363
|
|
@@ -365,15 +366,18 @@ static void vcd_print_header() {
|
|
365
366
|
extern void init_vcd_visualizer(char* name) {
|
366
367
|
/* Open the resulting file with name: <name>.vcd */
|
367
368
|
char filename[256];
|
368
|
-
strncpy(filename,name,
|
369
|
-
strncat(filename,".vcd",
|
369
|
+
strncpy(filename,name,255);
|
370
|
+
strncat(filename,".vcd",255);
|
370
371
|
vcd_file = fopen(filename,"w");
|
371
372
|
|
372
373
|
/* Initialize the vizualizer printer engine. */
|
373
374
|
init_visualizer(&vcd_print_time,
|
374
375
|
&vcd_print_full_name,
|
375
376
|
&vcd_print_value,
|
376
|
-
&vcd_print_signal_fvalue
|
377
|
+
&vcd_print_signal_fvalue,
|
378
|
+
&default_print_string,
|
379
|
+
&default_print_name,
|
380
|
+
&default_print_value);
|
377
381
|
|
378
382
|
/* Prints the header of the vcd file. */
|
379
383
|
vcd_print_header();
|
@@ -16,15 +16,22 @@ PrinterS printer;
|
|
16
16
|
* @param print_time the time printer
|
17
17
|
* @param print_name the name printer
|
18
18
|
* @param print_value the value printer
|
19
|
-
* @param print_signal the signal state printer
|
19
|
+
* @param print_signal the signal state printer
|
20
|
+
* @param print_string the string printer. */
|
20
21
|
void init_visualizer(void (*print_time)(unsigned long long),
|
21
22
|
void (*print_name)(Object),
|
22
23
|
void (*print_value)(Value),
|
23
|
-
void (*print_signal)(SignalI)
|
24
|
+
void (*print_signal)(SignalI),
|
25
|
+
void (*print_string)(const char*),
|
26
|
+
void (*print_string_name)(Object),
|
27
|
+
void (*print_string_value)(Value)) {
|
24
28
|
printer.print_time = print_time;
|
25
29
|
printer.print_name = print_name;
|
26
30
|
printer.print_value = print_value;
|
27
31
|
printer.print_signal = print_signal;
|
32
|
+
printer.print_string = print_string;
|
33
|
+
printer.print_string_name = print_string_name;
|
34
|
+
printer.print_string_value = print_string_value;
|
28
35
|
}
|
29
36
|
|
30
37
|
|
@@ -34,7 +41,7 @@ void init_visualizer(void (*print_time)(unsigned long long),
|
|
34
41
|
|
35
42
|
/** Prints the time.
|
36
43
|
* @param time the time to show. */
|
37
|
-
|
44
|
+
void default_print_time(unsigned long long time) {
|
38
45
|
printf("# %llups",time);
|
39
46
|
}
|
40
47
|
|
@@ -47,7 +54,7 @@ static void default_println_time(unsigned long long time) {
|
|
47
54
|
|
48
55
|
/** Prints the name of an object.
|
49
56
|
* @param object the object to print the name. */
|
50
|
-
|
57
|
+
void default_print_name(Object object) {
|
51
58
|
/* Recurse on the owner if any. */
|
52
59
|
// printf("owner=%p\n",object->owner);
|
53
60
|
if (object->owner != NULL) {
|
@@ -73,7 +80,7 @@ static void default_print_name(Object object) {
|
|
73
80
|
|
74
81
|
/** Prints a value.
|
75
82
|
* @param value the value to print */
|
76
|
-
|
83
|
+
void default_print_value(Value value) {
|
77
84
|
if (value->numeric) {
|
78
85
|
unsigned long long width = type_width(value->type);
|
79
86
|
unsigned long long mask = 1ULL << (width-1);
|
@@ -100,6 +107,12 @@ static void default_print_value(Value value) {
|
|
100
107
|
}
|
101
108
|
}
|
102
109
|
|
110
|
+
/** Prints a string.
|
111
|
+
* @param str the string to print. */
|
112
|
+
void default_print_string(const char* str) {
|
113
|
+
printf("%s", str);
|
114
|
+
}
|
115
|
+
|
103
116
|
/** Prints a signal.
|
104
117
|
* @param signal the signal to show */
|
105
118
|
static void default_print_signal(SignalI signal) {
|
@@ -126,5 +139,8 @@ void init_default_visualizer(char* name) {
|
|
126
139
|
init_visualizer(&default_println_time,
|
127
140
|
&default_print_name,
|
128
141
|
&default_print_value,
|
129
|
-
&default_println_signal
|
142
|
+
&default_println_signal,
|
143
|
+
&default_print_string,
|
144
|
+
&default_print_name,
|
145
|
+
&default_print_value);
|
130
146
|
}
|
data/lib/HDLRuby/std/fixpoint.rb
CHANGED
@@ -65,6 +65,15 @@ module HDLRuby::High::Std
|
|
65
65
|
(left.as([isize+fsize*2]) << fsize) / right
|
66
66
|
end
|
67
67
|
end
|
68
|
+
# Define the removal of the point.
|
69
|
+
typ.define_singleton_method(:no_point) do
|
70
|
+
if (typ.signed?) then
|
71
|
+
signed[typ.width]
|
72
|
+
else
|
73
|
+
bit[typ.width]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
# Return the resulting typ.
|
68
77
|
typ
|
69
78
|
end
|
70
79
|
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
##
|
2
|
+
# Standard HDLRuby::High library: universal generic function generator
|
3
|
+
# based on the work of Ryota Sakai from NN4H
|
4
|
+
#
|
5
|
+
########################################################################
|
6
|
+
|
7
|
+
|
8
|
+
module HDLRuby::High::Std
|
9
|
+
|
10
|
+
# Module describing a function generator using linear approximation between
|
11
|
+
# fixed precalculated values.
|
12
|
+
# Generic parameters:
|
13
|
+
# +func+ procedure generating the discret values of the functions.
|
14
|
+
# +ityp+ the type of the input
|
15
|
+
# +otyp+ the type of the output
|
16
|
+
# +awidth+ width of the address bus for accessing the discret values
|
17
|
+
# +xrange+ the range for x values when computing the function
|
18
|
+
# +yrange+ the range for y values when computing the function
|
19
|
+
system :function_generator do |func, ityp, otyp, awidth, xrange, yrange|
|
20
|
+
# Check the generic parameters.
|
21
|
+
func = func.to_proc
|
22
|
+
ityp = ityp.to_type
|
23
|
+
otyp = otyp.to_type
|
24
|
+
awidth = awidth.to_i
|
25
|
+
xrange = xrange.first.to_f..xrange.last.to_f
|
26
|
+
yrange = yrange.first.to_f..yrange.last.to_f
|
27
|
+
|
28
|
+
# Declare the interface of the generator.
|
29
|
+
ityp.input :x
|
30
|
+
otyp.output :y
|
31
|
+
|
32
|
+
# Discrete values used for interpolating.
|
33
|
+
otyp.inner :base, :next_data
|
34
|
+
|
35
|
+
# Address
|
36
|
+
[awidth].inner :address
|
37
|
+
# Remainder
|
38
|
+
ityp.inner :remaining
|
39
|
+
x
|
40
|
+
# Compute the address and the remainder from the input.
|
41
|
+
address <= x[(ityp.width-1)..(ityp.width-awidth)]
|
42
|
+
remaining <= [[_b1b0] * awidth, x[(ityp.width-1-awidth)..0]]
|
43
|
+
|
44
|
+
# Instantiate the lut holding the discrete values.
|
45
|
+
lut(func,ityp,otyp,awidth,xrange,yrange).(:my_lut).(address,base,next_data)
|
46
|
+
|
47
|
+
# Instantiate the interpolator.
|
48
|
+
interpolator(ityp,otyp,awidth).(:my_iterpolator).(base,next_data, remaining, y)
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
# The LUT containing the discre values.
|
53
|
+
system :lut do |func,ityp, otyp, awidth, xrange, yrange|
|
54
|
+
# Check the generic arguments.
|
55
|
+
func = func.to_proc
|
56
|
+
ityp = ityp.to_type
|
57
|
+
otyp = otyp.to_type
|
58
|
+
awidth = awidth.to_i
|
59
|
+
xrange = xrange.first.to_f..xrange.last.to_f
|
60
|
+
yrange = yrange.first.to_f..yrange.last.to_f
|
61
|
+
|
62
|
+
# lut_size = 2 ** address_width
|
63
|
+
# Compute the size of the lut.
|
64
|
+
lut_size = 2 ** awidth
|
65
|
+
|
66
|
+
# Declare the input and output of the lut.
|
67
|
+
[awidth].input :address
|
68
|
+
otyp.output :base, :next_data
|
69
|
+
|
70
|
+
# Declare the lut
|
71
|
+
otyp[-lut_size].constant lut:
|
72
|
+
initialize_lut(func,otyp,awidth,xrange,yrange)
|
73
|
+
|
74
|
+
# Assign the base discret value.
|
75
|
+
base <= lut[address]
|
76
|
+
|
77
|
+
# Assign the next_data discrete value.
|
78
|
+
next_data <= lut[address+1]
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# compute tanh
|
83
|
+
# LUTの点の間の値を計算するモジュール
|
84
|
+
# system :interpolator do |typ, integer_width, address_width|
|
85
|
+
# Module making linear interpolation between two discrete values.
|
86
|
+
# Generic parameters:
|
87
|
+
# +ityp+: the function input value type
|
88
|
+
# +otyp+: the function output value type
|
89
|
+
# +width+: the step width between discrete values
|
90
|
+
system :interpolator do |ityp,otyp,width|
|
91
|
+
# Check the generic arguments
|
92
|
+
ityp = ityp.to_type
|
93
|
+
otyp = otyp.to_type
|
94
|
+
width = width.to_i
|
95
|
+
# Compute the scale factor and convert it to a shift value.
|
96
|
+
shift_bits = ityp.width - width
|
97
|
+
|
98
|
+
# Declare the input and outputs.
|
99
|
+
otyp.input :base, :next_data
|
100
|
+
ityp.input :remaining
|
101
|
+
otyp.output :interpolated_value
|
102
|
+
|
103
|
+
if (otyp.signed?) then
|
104
|
+
signed[otyp.width+ityp.width].inner :diff
|
105
|
+
else
|
106
|
+
bit[otyp.width+ityp.width].inner :diff
|
107
|
+
end
|
108
|
+
|
109
|
+
# Make the interpolation.
|
110
|
+
diff <= (next_data-base).as(diff.type) * remaining
|
111
|
+
if(otyp.signed?) then
|
112
|
+
interpolated_value <= base +
|
113
|
+
([[diff[diff.type.width-1]]*shift_bits,
|
114
|
+
diff[diff.type.width-1..shift_bits]]).to_expr
|
115
|
+
else
|
116
|
+
interpolated_value <= base + (diff >> shift_bits)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Make an array consists of a point of any activation function.
|
121
|
+
# @param [Integer] lut_size the lut_size of LUT
|
122
|
+
# @return [Array] table an array consists of a point of tanh
|
123
|
+
def initialize_lut(func, otyp, awidth, xrange, yrange)
|
124
|
+
# Compute the x step between discret values.
|
125
|
+
xstep = (xrange.last-xrange.first)/(2 ** awidth)
|
126
|
+
|
127
|
+
# Generate the discrete set of x values.
|
128
|
+
x_values = xrange.step(xstep)
|
129
|
+
# Generate the table.
|
130
|
+
table = x_values.map do |x_value|
|
131
|
+
((func.call(x_value)-yrange.first)/(yrange.last-yrange.first)*
|
132
|
+
2**otyp.width).to_i.to_expr.as(otyp)
|
133
|
+
end
|
134
|
+
|
135
|
+
return table
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require "HDLRuby/hruby_high"
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
##
|
6
|
+
# Library for building unit test systems.
|
7
|
+
#
|
8
|
+
########################################################################
|
9
|
+
module HDLRuby::Unit
|
10
|
+
|
11
|
+
## The HDLRuby unit test error class.
|
12
|
+
class UnitError < ::StandardError
|
13
|
+
end
|
14
|
+
|
15
|
+
# The set of the unit systems by name.
|
16
|
+
@@unit_systems = {}
|
17
|
+
|
18
|
+
|
19
|
+
# Declares system +name+ for unit testing.
|
20
|
+
# The system is built by executing +ruby_block+.
|
21
|
+
#
|
22
|
+
# NOTE: the name of the system is not registered within the HDLRuby
|
23
|
+
# namespace since it is not meant to be used directly.
|
24
|
+
def self.system(name,&ruby_block)
|
25
|
+
# Ensure name is a symbol.
|
26
|
+
name = name.to_s.to_sym unless name.is_a?(Symbol)
|
27
|
+
# Check if the name is already used or not.
|
28
|
+
if @@unit_systems.key?(name) then
|
29
|
+
raise UnitError, "Unit test system #{name} already declared."
|
30
|
+
end
|
31
|
+
# @@unit_systems[name] = HDLRuby::High.system(&ruby_block)
|
32
|
+
@@unit_systems[name] = ruby_block
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# Create a system named +test_name+ executing the unit tests given from
|
37
|
+
# +names+.
|
38
|
+
def self.test(test_name = :test, *names)
|
39
|
+
# If there is no name given, use all the test systems.
|
40
|
+
names = @@unit_systems.each_key if names.empty?
|
41
|
+
# Declare the system.
|
42
|
+
HDLRuby::High.system test_name do
|
43
|
+
|
44
|
+
# The timed block that contains the bench execurtion code.
|
45
|
+
@@tester = timed {}
|
46
|
+
|
47
|
+
# Generate the test code for each selected test units.
|
48
|
+
names.each do |name|
|
49
|
+
name = name.to_s.to_sym unless name.is_a?(Symbol)
|
50
|
+
unless @@unit_systems.key?(name) then
|
51
|
+
raise UnitError, "Unit test #{name} does not exist."
|
52
|
+
end
|
53
|
+
sub(name) do
|
54
|
+
@@myself = self
|
55
|
+
instance_exec do
|
56
|
+
# Define the test command that insert code of
|
57
|
+
# the current test unit to the tester timed block.
|
58
|
+
def test(&ruby_block)
|
59
|
+
@@tester.block.open do
|
60
|
+
# Here the signals are to be taken from
|
61
|
+
# the test unit and not the timed block.
|
62
|
+
set_this(@@myself)
|
63
|
+
ruby_block.call
|
64
|
+
# Go back to the default current this.
|
65
|
+
set_this
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
# Process the test unit.
|
70
|
+
instance_exec(&@@unit_systems[name])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/HDLRuby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HDLRuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lovic Gauthier
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -83,15 +83,19 @@ files:
|
|
83
83
|
- lib/HDLRuby/hdr_samples/alu.rb
|
84
84
|
- lib/HDLRuby/hdr_samples/bstr_bench.rb
|
85
85
|
- lib/HDLRuby/hdr_samples/calculator.rb
|
86
|
+
- lib/HDLRuby/hdr_samples/comparison_bench.rb
|
87
|
+
- lib/HDLRuby/hdr_samples/constant_in_function.rb
|
86
88
|
- lib/HDLRuby/hdr_samples/counter_bench.rb
|
87
89
|
- lib/HDLRuby/hdr_samples/dff.rb
|
88
90
|
- lib/HDLRuby/hdr_samples/dff_bench.rb
|
89
91
|
- lib/HDLRuby/hdr_samples/dff_counter.rb
|
90
92
|
- lib/HDLRuby/hdr_samples/dff_properties.rb
|
91
93
|
- lib/HDLRuby/hdr_samples/dff_unit.rb
|
94
|
+
- lib/HDLRuby/hdr_samples/huge_rom.rb
|
92
95
|
- lib/HDLRuby/hdr_samples/include.rb
|
93
96
|
- lib/HDLRuby/hdr_samples/instance_open.rb
|
94
97
|
- lib/HDLRuby/hdr_samples/linear_test.rb
|
98
|
+
- lib/HDLRuby/hdr_samples/logic_bench.rb
|
95
99
|
- lib/HDLRuby/hdr_samples/make_multi_channels_v.rb
|
96
100
|
- lib/HDLRuby/hdr_samples/make_multi_channels_vcd.rb
|
97
101
|
- lib/HDLRuby/hdr_samples/mei8.rb
|
@@ -99,6 +103,9 @@ files:
|
|
99
103
|
- lib/HDLRuby/hdr_samples/memory_test.rb
|
100
104
|
- lib/HDLRuby/hdr_samples/multer_gen.rb
|
101
105
|
- lib/HDLRuby/hdr_samples/multer_seq.rb
|
106
|
+
- lib/HDLRuby/hdr_samples/multi_timed_bench.rb
|
107
|
+
- lib/HDLRuby/hdr_samples/music.rb
|
108
|
+
- lib/HDLRuby/hdr_samples/named_sub.rb
|
102
109
|
- lib/HDLRuby/hdr_samples/neg_arith_bench.rb
|
103
110
|
- lib/HDLRuby/hdr_samples/neural/a.rb
|
104
111
|
- lib/HDLRuby/hdr_samples/neural/a_sub.rb
|
@@ -128,6 +135,7 @@ files:
|
|
128
135
|
- lib/HDLRuby/hdr_samples/sw_encrypt_cpusim_bench.rb
|
129
136
|
- lib/HDLRuby/hdr_samples/system_open.rb
|
130
137
|
- lib/HDLRuby/hdr_samples/tuple.rb
|
138
|
+
- lib/HDLRuby/hdr_samples/type_minmax_bench.rb
|
131
139
|
- lib/HDLRuby/hdr_samples/with_channel.rb
|
132
140
|
- lib/HDLRuby/hdr_samples/with_class.rb
|
133
141
|
- lib/HDLRuby/hdr_samples/with_connector.rb
|
@@ -135,12 +143,14 @@ files:
|
|
135
143
|
- lib/HDLRuby/hdr_samples/with_decoder.rb
|
136
144
|
- lib/HDLRuby/hdr_samples/with_fixpoint.rb
|
137
145
|
- lib/HDLRuby/hdr_samples/with_fsm.rb
|
146
|
+
- lib/HDLRuby/hdr_samples/with_function_generator.rb
|
138
147
|
- lib/HDLRuby/hdr_samples/with_linear.rb
|
139
148
|
- lib/HDLRuby/hdr_samples/with_loop.rb
|
140
149
|
- lib/HDLRuby/hdr_samples/with_memory.rb
|
141
150
|
- lib/HDLRuby/hdr_samples/with_memory_rom.rb
|
142
151
|
- lib/HDLRuby/hdr_samples/with_multi_channels.rb
|
143
152
|
- lib/HDLRuby/hdr_samples/with_reconf.rb
|
153
|
+
- lib/HDLRuby/hdr_samples/with_to_array.rb
|
144
154
|
- lib/HDLRuby/hdrcc.rb
|
145
155
|
- lib/HDLRuby/high_samples/_adder_fault.rb
|
146
156
|
- lib/HDLRuby/high_samples/_generic_transmission2.rb
|
@@ -208,6 +218,7 @@ files:
|
|
208
218
|
- lib/HDLRuby/hruby_high.rb
|
209
219
|
- lib/HDLRuby/hruby_low.rb
|
210
220
|
- lib/HDLRuby/hruby_low2c.rb
|
221
|
+
- lib/HDLRuby/hruby_low2hdr.rb
|
211
222
|
- lib/HDLRuby/hruby_low2high.rb
|
212
223
|
- lib/HDLRuby/hruby_low2seq.rb
|
213
224
|
- lib/HDLRuby/hruby_low2sym.rb
|
@@ -232,7 +243,6 @@ files:
|
|
232
243
|
- lib/HDLRuby/hruby_serializer.rb
|
233
244
|
- lib/HDLRuby/hruby_tools.rb
|
234
245
|
- lib/HDLRuby/hruby_types.rb
|
235
|
-
- lib/HDLRuby/hruby_unit.rb
|
236
246
|
- lib/HDLRuby/hruby_values.rb
|
237
247
|
- lib/HDLRuby/hruby_verilog.rb
|
238
248
|
- lib/HDLRuby/hruby_verilog_name.rb
|
@@ -293,6 +303,8 @@ files:
|
|
293
303
|
- lib/HDLRuby/std/decoder.rb
|
294
304
|
- lib/HDLRuby/std/fixpoint.rb
|
295
305
|
- lib/HDLRuby/std/fsm.rb
|
306
|
+
- lib/HDLRuby/std/function_generator.rb
|
307
|
+
- lib/HDLRuby/std/hruby_unit.rb
|
296
308
|
- lib/HDLRuby/std/linear.rb
|
297
309
|
- lib/HDLRuby/std/loop.rb
|
298
310
|
- lib/HDLRuby/std/memory.rb
|
@@ -315,7 +327,7 @@ homepage: https://github.com/civol/HDLRuby
|
|
315
327
|
licenses:
|
316
328
|
- MIT
|
317
329
|
metadata: {}
|
318
|
-
post_install_message:
|
330
|
+
post_install_message:
|
319
331
|
rdoc_options: []
|
320
332
|
require_paths:
|
321
333
|
- lib
|
@@ -332,7 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
332
344
|
version: '0'
|
333
345
|
requirements: []
|
334
346
|
rubygems_version: 3.0.8
|
335
|
-
signing_key:
|
347
|
+
signing_key:
|
336
348
|
specification_version: 4
|
337
349
|
summary: HDLRuby is a library for describing and simulating digital electronic systems.
|
338
350
|
test_files: []
|