vertigo_vhdl 0.8.2
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/bin/vertigo +7 -0
- data/lib/vertigo.rb +4 -0
- data/lib/vertigo/ast.rb +87 -0
- data/lib/vertigo/ast_vertigo_rkgen.rb +607 -0
- data/lib/vertigo/code.rb +57 -0
- data/lib/vertigo/compiler.rb +61 -0
- data/lib/vertigo/generic_lexer.rb +61 -0
- data/lib/vertigo/generic_parser.rb +44 -0
- data/lib/vertigo/indent.rb +20 -0
- data/lib/vertigo/lexer.rb +172 -0
- data/lib/vertigo/parser.rb +1458 -0
- data/lib/vertigo/pretty_printer.rb +749 -0
- data/lib/vertigo/runner.rb +115 -0
- data/lib/vertigo/tb_generator.rb +81 -0
- data/lib/vertigo/template.tb.vhd +72 -0
- data/lib/vertigo/token.rb +67 -0
- data/lib/vertigo/version.rb +3 -0
- data/lib/vertigo/vertigo.rkg +354 -0
- data/lib/vertigo/visitor_vertigo_rkgen.rb +447 -0
- data/tests/ghdl_tests/fsm.vhd +98 -0
- data/tests/ghdl_tests/fsm_synth.vhd +248 -0
- data/tests/ghdl_tests/test_fsm.vhd +162 -0
- data/tests/parser_tests/else.vhd +64 -0
- data/tests/parser_tests/test_MUST_fail.vhd +1 -0
- data/tests/parser_tests/test_accelerator.vhd +160 -0
- data/tests/parser_tests/test_accelerator_pp.vhd +144 -0
- data/tests/parser_tests/test_aggregate.vhd +17 -0
- data/tests/parser_tests/test_aggregate_pp.vhd +15 -0
- data/tests/parser_tests/test_archi_1.vhd +45 -0
- data/tests/parser_tests/test_archi_1_pp.vhd +41 -0
- data/tests/parser_tests/test_array_array_00.vhd +25 -0
- data/tests/parser_tests/test_array_array_00_pp.vhd +25 -0
- data/tests/parser_tests/test_array_urange.vhd +25 -0
- data/tests/parser_tests/test_array_urange_pp.vhd +25 -0
- data/tests/parser_tests/test_chu-1.vhd +80 -0
- data/tests/parser_tests/test_chu-1_pp.vhd +104 -0
- data/tests/parser_tests/test_concat.vhd +11 -0
- data/tests/parser_tests/test_concat_pp.vhd +14 -0
- data/tests/parser_tests/test_counter.vhd +35 -0
- data/tests/parser_tests/test_counter_pp.vhd +35 -0
- data/tests/parser_tests/test_de2.vhd +358 -0
- data/tests/parser_tests/test_de2_pp.vhd +274 -0
- data/tests/parser_tests/test_encode.vhd +2679 -0
- data/tests/parser_tests/test_encode_pp.vhd +2549 -0
- data/tests/parser_tests/test_fsm.vhd +162 -0
- data/tests/parser_tests/test_fsm_pp.vhd +125 -0
- data/tests/parser_tests/test_fsm_synth.vhd +248 -0
- data/tests/parser_tests/test_fsm_synth_pp.vhd +197 -0
- data/tests/parser_tests/test_function-01.vhd +33 -0
- data/tests/parser_tests/test_function-01_pp.vhd +18 -0
- data/tests/parser_tests/test_lfsr.vhd +75 -0
- data/tests/parser_tests/test_lfsr_pp.vhd +44 -0
- data/tests/parser_tests/test_microwatt_cache_ram.vhd +1 -0
- data/tests/parser_tests/test_microwatt_cache_ram_pp.vhd +68 -0
- data/tests/parser_tests/test_microwatt_common.vhd +1 -0
- data/tests/parser_tests/test_microwatt_common_pp.vhd +336 -0
- data/tests/parser_tests/test_microwatt_control.vhd +1 -0
- data/tests/parser_tests/test_microwatt_control_pp.vhd +187 -0
- data/tests/parser_tests/test_microwatt_core.vhd +1 -0
- data/tests/parser_tests/test_microwatt_core_debug.vhd +1 -0
- data/tests/parser_tests/test_microwatt_core_debug_pp.vhd +104 -0
- data/tests/parser_tests/test_microwatt_core_pp.vhd +231 -0
- data/tests/parser_tests/test_microwatt_core_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_core_tb_pp.vhd +43 -0
- data/tests/parser_tests/test_microwatt_countzero.vhd +1 -0
- data/tests/parser_tests/test_microwatt_countzero_pp.vhd +120 -0
- data/tests/parser_tests/test_microwatt_countzero_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_countzero_tb_pp.vhd +70 -0
- data/tests/parser_tests/test_microwatt_cr_file.vhd +1 -0
- data/tests/parser_tests/test_microwatt_cr_file_pp.vhd +74 -0
- data/tests/parser_tests/test_microwatt_cr_hazard.vhd +1 -0
- data/tests/parser_tests/test_microwatt_cr_hazard_pp.vhd +51 -0
- data/tests/parser_tests/test_microwatt_crhelpers.vhd +1 -0
- data/tests/parser_tests/test_microwatt_crhelpers_pp.vhd +48 -0
- data/tests/parser_tests/test_microwatt_dcache.vhd +1 -0
- data/tests/parser_tests/test_microwatt_dcache_pp.vhd +481 -0
- data/tests/parser_tests/test_microwatt_dcache_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_dcache_tb_pp.vhd +98 -0
- data/tests/parser_tests/test_microwatt_decode1.vhd +1 -0
- data/tests/parser_tests/test_microwatt_decode1_pp.vhd +138 -0
- data/tests/parser_tests/test_microwatt_decode2.vhd +1 -0
- data/tests/parser_tests/test_microwatt_decode2_pp.vhd +300 -0
- data/tests/parser_tests/test_microwatt_decode_types.vhd +1 -0
- data/tests/parser_tests/test_microwatt_decode_types_pp.vhd +67 -0
- data/tests/parser_tests/test_microwatt_divider.vhd +1 -0
- data/tests/parser_tests/test_microwatt_divider_pp.vhd +132 -0
- data/tests/parser_tests/test_microwatt_divider_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_divider_tb_pp.vhd +95 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_dummy.vhd +1 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_dummy_pp.vhd +29 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_tb_pp.vhd +197 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx.vhd +1 -0
- data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx_pp.vhd +139 -0
- data/tests/parser_tests/test_microwatt_execute1.vhd +1 -0
- data/tests/parser_tests/test_microwatt_execute1_pp.vhd +689 -0
- data/tests/parser_tests/test_microwatt_fetch1.vhd +1 -0
- data/tests/parser_tests/test_microwatt_fetch1_pp.vhd +88 -0
- data/tests/parser_tests/test_microwatt_fetch2.vhd +1 -0
- data/tests/parser_tests/test_microwatt_fetch2_pp.vhd +79 -0
- data/tests/parser_tests/test_microwatt_glibc_random.vhd +1 -0
- data/tests/parser_tests/test_microwatt_glibc_random_helpers.vhd +1 -0
- data/tests/parser_tests/test_microwatt_glibc_random_helpers_pp.vhd +25 -0
- data/tests/parser_tests/test_microwatt_glibc_random_pp.vhd +41 -0
- data/tests/parser_tests/test_microwatt_gpr_hazard.vhd +1 -0
- data/tests/parser_tests/test_microwatt_gpr_hazard_pp.vhd +68 -0
- data/tests/parser_tests/test_microwatt_helpers.vhd +1 -0
- data/tests/parser_tests/test_microwatt_helpers_pp.vhd +153 -0
- data/tests/parser_tests/test_microwatt_icache.vhd +1 -0
- data/tests/parser_tests/test_microwatt_icache_pp.vhd +337 -0
- data/tests/parser_tests/test_microwatt_icache_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_icache_tb_pp.vhd +104 -0
- data/tests/parser_tests/test_microwatt_insn_helpers.vhd +1 -0
- data/tests/parser_tests/test_microwatt_insn_helpers_pp.vhd +208 -0
- data/tests/parser_tests/test_microwatt_loadstore1.vhd +1 -0
- data/tests/parser_tests/test_microwatt_loadstore1_pp.vhd +222 -0
- data/tests/parser_tests/test_microwatt_logical.vhd +1 -0
- data/tests/parser_tests/test_microwatt_logical_pp.vhd +87 -0
- data/tests/parser_tests/test_microwatt_multiply.vhd +1 -0
- data/tests/parser_tests/test_microwatt_multiply_pp.vhd +84 -0
- data/tests/parser_tests/test_microwatt_multiply_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_multiply_tb_pp.vhd +75 -0
- data/tests/parser_tests/test_microwatt_plru.vhd +1 -0
- data/tests/parser_tests/test_microwatt_plru_pp.vhd +46 -0
- data/tests/parser_tests/test_microwatt_plru_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_plru_tb_pp.vhd +93 -0
- data/tests/parser_tests/test_microwatt_ppc_fx_insns.vhd +1 -0
- data/tests/parser_tests/test_microwatt_ppc_fx_insns_pp.vhd +665 -0
- data/tests/parser_tests/test_microwatt_register_file.vhd +1 -0
- data/tests/parser_tests/test_microwatt_register_file_pp.vhd +86 -0
- data/tests/parser_tests/test_microwatt_rotator.vhd +1 -0
- data/tests/parser_tests/test_microwatt_rotator_pp.vhd +149 -0
- data/tests/parser_tests/test_microwatt_rotator_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_rotator_tb_pp.vhd +134 -0
- data/tests/parser_tests/test_microwatt_sim_bram.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_bram_helpers.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_bram_helpers_pp.vhd +52 -0
- data/tests/parser_tests/test_microwatt_sim_bram_pp.vhd +53 -0
- data/tests/parser_tests/test_microwatt_sim_console.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_console_pp.vhd +43 -0
- data/tests/parser_tests/test_microwatt_sim_jtag.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_jtag_pp.vhd +64 -0
- data/tests/parser_tests/test_microwatt_sim_jtag_socket.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_jtag_socket_pp.vhd +36 -0
- data/tests/parser_tests/test_microwatt_sim_uart.vhd +1 -0
- data/tests/parser_tests/test_microwatt_sim_uart_pp.vhd +90 -0
- data/tests/parser_tests/test_microwatt_soc.vhd +1 -0
- data/tests/parser_tests/test_microwatt_soc_pp.vhd +195 -0
- data/tests/parser_tests/test_microwatt_utils.vhd +1 -0
- data/tests/parser_tests/test_microwatt_utils_pp.vhd +39 -0
- data/tests/parser_tests/test_microwatt_wishbone_arbiter.vhd +1 -0
- data/tests/parser_tests/test_microwatt_wishbone_arbiter_pp.vhd +54 -0
- data/tests/parser_tests/test_microwatt_wishbone_bram_tb.vhd +1 -0
- data/tests/parser_tests/test_microwatt_wishbone_bram_tb_pp.vhd +157 -0
- data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper.vhd +1 -0
- data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper_pp.vhd +62 -0
- data/tests/parser_tests/test_microwatt_wishbone_debug_master.vhd +1 -0
- data/tests/parser_tests/test_microwatt_wishbone_debug_master_pp.vhd +124 -0
- data/tests/parser_tests/test_microwatt_wishbone_types.vhd +1 -0
- data/tests/parser_tests/test_microwatt_wishbone_types_pp.vhd +38 -0
- data/tests/parser_tests/test_microwatt_writeback.vhd +1 -0
- data/tests/parser_tests/test_microwatt_writeback_pp.vhd +87 -0
- data/tests/parser_tests/test_package-1.vhd +68 -0
- data/tests/parser_tests/test_package-1_pp.vhd +53 -0
- data/tests/parser_tests/test_precedence.vhd +13 -0
- data/tests/parser_tests/test_precedence_pp.vhd +16 -0
- data/tests/parser_tests/test_selected_sig.vhd +14 -0
- data/tests/parser_tests/test_selected_sig_pp.vhd +10 -0
- data/tests/parser_tests/test_slice.vhd +15 -0
- data/tests/parser_tests/test_slice_pp.vhd +16 -0
- data/tests/parser_tests/test_tb-00.vhd +94 -0
- data/tests/parser_tests/test_tb-00_pp.vhd +71 -0
- data/tests/parser_tests/test_type_decl_02.vhd +9 -0
- data/tests/parser_tests/test_type_decl_02_pp.vhd +11 -0
- data/tests/parser_tests/test_use.vhd +7 -0
- data/tests/parser_tests/test_use_pp.vhd +10 -0
- data/tests/parser_tests/test_while_1.vhd +38 -0
- data/tests/parser_tests/test_while_1_pp.vhd +26 -0
- data/tests/parser_tests/test_with-00.vhd +21 -0
- data/tests/parser_tests/test_with-00_pp.vhd +12 -0
- data/tests/tb_gen_tests/test_accelerator.vhd +160 -0
- metadata +224 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f5ba8043aca76da72831078060182a4c8e80b986c7d3c0020872e0f7fbc166d5
|
|
4
|
+
data.tar.gz: facc1e042ad028d75924b43718ea25abe1ed5384d6535fed110b3bc599277391
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dd8fbbdee4bd9919466d6e41b8edd4d012a1c3e018a812337648e7afcf7a23e5cdb6596aaff909ca6548689343ecda33cd28d7cb512cc50531c010f5716a2643
|
|
7
|
+
data.tar.gz: 337349a7c82934c101408dff9faabfbf2c2cb2fe7279f96e61d776b226e9d9f680f77c5e9545baca45d3ea0f2ab55bd3c2fdc11a3ae8ccebc8671788f526ca45
|
data/bin/vertigo
ADDED
data/lib/vertigo.rb
ADDED
data/lib/vertigo/ast.rb
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require_relative "ast_vertigo_rkgen"
|
|
2
|
+
|
|
3
|
+
module Vertigo
|
|
4
|
+
|
|
5
|
+
class AstNode
|
|
6
|
+
attr_accessor :label
|
|
7
|
+
attr_accessor :pos
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Root < AstNode
|
|
11
|
+
def <<(e)
|
|
12
|
+
@design_units << e
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def flatten!
|
|
16
|
+
@design_units.flatten!
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class RecordDecl AstNode
|
|
21
|
+
def <<(e)
|
|
22
|
+
@elements << e
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Ident < AstNode
|
|
27
|
+
def self.create str
|
|
28
|
+
Ident.new(Vertigo::Token.create(:ident,str))
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class Else < AstNode
|
|
33
|
+
def <<(e)
|
|
34
|
+
@body||=Body.new
|
|
35
|
+
@body << e
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class Body < AstNode
|
|
40
|
+
def <<(e)
|
|
41
|
+
@elements << e
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class Sensitivity < AstNode
|
|
46
|
+
def << e
|
|
47
|
+
@elements << e
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class EnumDecl < AstNode
|
|
52
|
+
def << e
|
|
53
|
+
@elements << e
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class Case < AstNode
|
|
58
|
+
def << e
|
|
59
|
+
@whens << e
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class Aggregate < AstNode
|
|
64
|
+
def << e
|
|
65
|
+
@elements << e
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
class PortMap < AstNode
|
|
70
|
+
def << e
|
|
71
|
+
@elements << e
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class GenericMap < AstNode
|
|
76
|
+
def << e
|
|
77
|
+
@elements << e
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
class Alternative < AstNode
|
|
82
|
+
def << e
|
|
83
|
+
@elements << e
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
# ============================================================
|
|
2
|
+
# This code was generated by rkgen utility.
|
|
3
|
+
# DO NOT MODIFY !
|
|
4
|
+
# ============================================================
|
|
5
|
+
|
|
6
|
+
module Vertigo
|
|
7
|
+
|
|
8
|
+
class AstNode
|
|
9
|
+
def accept(visitor, arg=nil)
|
|
10
|
+
name = self.class.name.split(/::/).last
|
|
11
|
+
visitor.send("visit#{name}".to_sym, self ,arg) # Metaprograming !
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def str
|
|
15
|
+
ppr=PrettyPrinter.new
|
|
16
|
+
self.accept(ppr)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Root < AstNode
|
|
21
|
+
attr_accessor :design_units
|
|
22
|
+
def initialize design_units=[]
|
|
23
|
+
@design_units=design_units
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Comment < AstNode
|
|
28
|
+
attr_accessor :str
|
|
29
|
+
def initialize str=nil
|
|
30
|
+
@str=str
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class Library < AstNode
|
|
35
|
+
attr_accessor :name
|
|
36
|
+
def initialize name=nil
|
|
37
|
+
@name=name
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
class Use < AstNode
|
|
42
|
+
attr_accessor :library,:package,:element
|
|
43
|
+
def initialize library=nil,package=nil,element=nil
|
|
44
|
+
@library,@package,@element=library,package,element
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
class Entity < AstNode
|
|
49
|
+
attr_accessor :name,:generics,:ports
|
|
50
|
+
def initialize name=nil,generics=[],ports=[]
|
|
51
|
+
@name,@generics,@ports=name,generics,ports
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class Generic < AstNode
|
|
56
|
+
attr_accessor :name,:type,:init
|
|
57
|
+
def initialize name=nil,type=nil,init=nil
|
|
58
|
+
@name,@type,@init=name,type,init
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class Input < AstNode
|
|
63
|
+
attr_accessor :name,:type,:init
|
|
64
|
+
def initialize name=nil,type=nil,init=nil
|
|
65
|
+
@name,@type,@init=name,type,init
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
class Output < AstNode
|
|
70
|
+
attr_accessor :name,:type,:init
|
|
71
|
+
def initialize name=nil,type=nil,init=nil
|
|
72
|
+
@name,@type,@init=name,type,init
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
class InOut < AstNode
|
|
77
|
+
attr_accessor :name,:type,:init
|
|
78
|
+
def initialize name=nil,type=nil,init=nil
|
|
79
|
+
@name,@type,@init=name,type,init
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
class Package < AstNode
|
|
84
|
+
attr_accessor :name,:decls
|
|
85
|
+
def initialize name=nil,decls=[]
|
|
86
|
+
@name,@decls=name,decls
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
class PackageBody < AstNode
|
|
91
|
+
attr_accessor :name,:decls
|
|
92
|
+
def initialize name=nil,decls=[]
|
|
93
|
+
@name,@decls=name,decls
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
class ProcedureDecl < AstNode
|
|
98
|
+
attr_accessor :name,:formal_args,:decls,:body
|
|
99
|
+
def initialize name=nil,formal_args=[],decls=[],body=nil
|
|
100
|
+
@name,@formal_args,@decls,@body=name,formal_args,decls,body
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class FormalArg < AstNode
|
|
105
|
+
attr_accessor :signal,:direction,:name,:type
|
|
106
|
+
def initialize signal=nil,direction=nil,name=nil,type=nil
|
|
107
|
+
@signal,@direction,@name,@type=signal,direction,name,type
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
class ProcedureCall < AstNode
|
|
112
|
+
attr_accessor :name,:actual_args
|
|
113
|
+
def initialize name=nil,actual_args=[]
|
|
114
|
+
@name,@actual_args=name,actual_args
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
class Architecture < AstNode
|
|
119
|
+
attr_accessor :name,:entity_name,:decls,:body
|
|
120
|
+
def initialize name=nil,entity_name=nil,decls=[],body=nil
|
|
121
|
+
@name,@entity_name,@decls,@body=name,entity_name,decls,body
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
class Body < AstNode
|
|
126
|
+
attr_accessor :elements
|
|
127
|
+
def initialize elements=[]
|
|
128
|
+
@elements=elements
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
class Process < AstNode
|
|
133
|
+
attr_accessor :sensitivity,:decls,:body
|
|
134
|
+
def initialize sensitivity=nil,decls=[],body=nil
|
|
135
|
+
@sensitivity,@decls,@body=sensitivity,decls,body
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
class Sensitivity < AstNode
|
|
140
|
+
attr_accessor :elements
|
|
141
|
+
def initialize elements=[]
|
|
142
|
+
@elements=elements
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
class EntityInstance < AstNode
|
|
147
|
+
attr_accessor :full_name,:arch_name,:generic_map,:port_map
|
|
148
|
+
def initialize full_name=nil,arch_name=nil,generic_map=nil,port_map=nil
|
|
149
|
+
@full_name,@arch_name,@generic_map,@port_map=full_name,arch_name,generic_map,port_map
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
class ComponentDecl < AstNode
|
|
154
|
+
attr_accessor :name,:generics,:ports
|
|
155
|
+
def initialize name=nil,generics=[],ports=[]
|
|
156
|
+
@name,@generics,@ports=name,generics,ports
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
class ComponentInstance < AstNode
|
|
161
|
+
attr_accessor :name,:generic_map,:port_map
|
|
162
|
+
def initialize name=nil,generic_map=nil,port_map=nil
|
|
163
|
+
@name,@generic_map,@port_map=name,generic_map,port_map
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
class PortMap < AstNode
|
|
168
|
+
attr_accessor :elements
|
|
169
|
+
def initialize elements=[]
|
|
170
|
+
@elements=elements
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
class GenericMap < AstNode
|
|
175
|
+
attr_accessor :elements
|
|
176
|
+
def initialize elements=[]
|
|
177
|
+
@elements=elements
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
class Map < AstNode
|
|
182
|
+
attr_accessor :lhs,:rhs
|
|
183
|
+
def initialize lhs=nil,rhs=nil
|
|
184
|
+
@lhs,@rhs=lhs,rhs
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
class AttributeDecl < AstNode
|
|
189
|
+
attr_accessor :name,:type
|
|
190
|
+
def initialize name=nil,type=nil
|
|
191
|
+
@name,@type=name,type
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
class AttributeSpec < AstNode
|
|
196
|
+
attr_accessor :name,:entity_spec,:expr
|
|
197
|
+
def initialize name=nil,entity_spec=nil,expr=nil
|
|
198
|
+
@name,@entity_spec,@expr=name,entity_spec,expr
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
class EntitySpec < AstNode
|
|
203
|
+
attr_accessor :elements,:entity_class
|
|
204
|
+
def initialize elements=[],entity_class=nil
|
|
205
|
+
@elements,@entity_class=elements,entity_class
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
class SigAssign < AstNode
|
|
210
|
+
attr_accessor :lhs,:rhs
|
|
211
|
+
def initialize lhs=nil,rhs=nil
|
|
212
|
+
@lhs,@rhs=lhs,rhs
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
class VarAssign < AstNode
|
|
217
|
+
attr_accessor :lhs,:rhs
|
|
218
|
+
def initialize lhs=nil,rhs=nil
|
|
219
|
+
@lhs,@rhs=lhs,rhs
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
class Wait < AstNode
|
|
224
|
+
attr_accessor :until_,:for_
|
|
225
|
+
def initialize until_=nil,for_=nil
|
|
226
|
+
@until_,@for_=until_,for_
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
class If < AstNode
|
|
231
|
+
attr_accessor :cond,:body,:elsifs,:else_
|
|
232
|
+
def initialize cond=nil,body=nil,elsifs=[],else_=nil
|
|
233
|
+
@cond,@body,@elsifs,@else_=cond,body,elsifs,else_
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
class Elsif < AstNode
|
|
238
|
+
attr_accessor :cond,:body
|
|
239
|
+
def initialize cond=nil,body=nil
|
|
240
|
+
@cond,@body=cond,body
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
class Else < AstNode
|
|
245
|
+
attr_accessor :body
|
|
246
|
+
def initialize body=nil
|
|
247
|
+
@body=body
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
class Case < AstNode
|
|
252
|
+
attr_accessor :expr,:whens
|
|
253
|
+
def initialize expr=nil,whens=[]
|
|
254
|
+
@expr,@whens=expr,whens
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
class CaseWhen < AstNode
|
|
259
|
+
attr_accessor :expr,:body
|
|
260
|
+
def initialize expr=nil,body=nil
|
|
261
|
+
@expr,@body=expr,body
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
class Alternative < AstNode
|
|
266
|
+
attr_accessor :elements
|
|
267
|
+
def initialize elements=[]
|
|
268
|
+
@elements=elements
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
class NullStmt < AstNode
|
|
273
|
+
attr_accessor :dummy
|
|
274
|
+
def initialize dummy=nil
|
|
275
|
+
@dummy=dummy
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
class Assert < AstNode
|
|
280
|
+
attr_accessor :cond,:report,:severity
|
|
281
|
+
def initialize cond=nil,report=nil,severity=nil
|
|
282
|
+
@cond,@report,@severity=cond,report,severity
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
class Report < AstNode
|
|
287
|
+
attr_accessor :expr,:severity
|
|
288
|
+
def initialize expr=nil,severity=nil
|
|
289
|
+
@expr,@severity=expr,severity
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
class Severity < AstNode
|
|
294
|
+
attr_accessor :type
|
|
295
|
+
def initialize type=nil
|
|
296
|
+
@type=type
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
class Return < AstNode
|
|
301
|
+
attr_accessor :expr
|
|
302
|
+
def initialize expr=nil
|
|
303
|
+
@expr=expr
|
|
304
|
+
end
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
class WithSelect < AstNode
|
|
308
|
+
attr_accessor :with_expr,:assigned,:selected_whens
|
|
309
|
+
def initialize with_expr=nil,assigned=nil,selected_whens=[]
|
|
310
|
+
@with_expr,@assigned,@selected_whens=with_expr,assigned,selected_whens
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
class SelectedWhen < AstNode
|
|
315
|
+
attr_accessor :lhs,:rhs
|
|
316
|
+
def initialize lhs=nil,rhs=nil
|
|
317
|
+
@lhs,@rhs=lhs,rhs
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
class IfGenerate < AstNode
|
|
322
|
+
attr_accessor :cond,:body
|
|
323
|
+
def initialize cond=nil,body=nil
|
|
324
|
+
@cond,@body=cond,body
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
class ForGenerate < AstNode
|
|
329
|
+
attr_accessor :index,:range,:decls,:body
|
|
330
|
+
def initialize index=nil,range=nil,decls=[],body=nil
|
|
331
|
+
@index,@range,@decls,@body=index,range,decls,body
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
class IsolatedRange < AstNode
|
|
336
|
+
attr_accessor :lhs,:rhs
|
|
337
|
+
def initialize lhs=nil,rhs=nil
|
|
338
|
+
@lhs,@rhs=lhs,rhs
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
class TypeDecl < AstNode
|
|
343
|
+
attr_accessor :name,:spec
|
|
344
|
+
def initialize name=nil,spec=nil
|
|
345
|
+
@name,@spec=name,spec
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
class SubTypeDecl < AstNode
|
|
350
|
+
attr_accessor :name,:spec
|
|
351
|
+
def initialize name=nil,spec=nil
|
|
352
|
+
@name,@spec=name,spec
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
class EnumDecl < AstNode
|
|
357
|
+
attr_accessor :elements
|
|
358
|
+
def initialize elements=[]
|
|
359
|
+
@elements=elements
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
class RecordDecl < AstNode
|
|
364
|
+
attr_accessor :elements
|
|
365
|
+
def initialize elements=[]
|
|
366
|
+
@elements=elements
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
class RecordItem < AstNode
|
|
371
|
+
attr_accessor :name,:type
|
|
372
|
+
def initialize name=nil,type=nil
|
|
373
|
+
@name,@type=name,type
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
class ArrayDecl < AstNode
|
|
378
|
+
attr_accessor :dim_decls,:type
|
|
379
|
+
def initialize dim_decls=[],type=nil
|
|
380
|
+
@dim_decls,@type=dim_decls,type
|
|
381
|
+
end
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
class ArrayDimDecl < AstNode
|
|
385
|
+
attr_accessor :type_mark,:range
|
|
386
|
+
def initialize type_mark=nil,range=nil
|
|
387
|
+
@type_mark,@range=type_mark,range
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
class Constant < AstNode
|
|
392
|
+
attr_accessor :name,:type,:expr
|
|
393
|
+
def initialize name=nil,type=nil,expr=nil
|
|
394
|
+
@name,@type,@expr=name,type,expr
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
class Signal < AstNode
|
|
399
|
+
attr_accessor :name,:type,:init
|
|
400
|
+
def initialize name=nil,type=nil,init=nil
|
|
401
|
+
@name,@type,@init=name,type,init
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
class Variable < AstNode
|
|
406
|
+
attr_accessor :name,:type,:init
|
|
407
|
+
def initialize name=nil,type=nil,init=nil
|
|
408
|
+
@name,@type,@init=name,type,init
|
|
409
|
+
end
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
class Alias < AstNode
|
|
413
|
+
attr_accessor :designator,:type,:name,:signature
|
|
414
|
+
def initialize designator=nil,type=nil,name=nil,signature=nil
|
|
415
|
+
@designator,@type,@name,@signature=designator,type,name,signature
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
class StdType < AstNode
|
|
420
|
+
attr_accessor :ident
|
|
421
|
+
def initialize ident=nil
|
|
422
|
+
@ident=ident
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
class RangedType < AstNode
|
|
427
|
+
attr_accessor :type,:range
|
|
428
|
+
def initialize type=nil,range=nil
|
|
429
|
+
@type,@range=type,range
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
class NamedType < AstNode
|
|
434
|
+
attr_accessor :ident
|
|
435
|
+
def initialize ident=nil
|
|
436
|
+
@ident=ident
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
class ArrayType < AstNode
|
|
441
|
+
attr_accessor :name,:discrete_ranges
|
|
442
|
+
def initialize name=nil,discrete_ranges=[]
|
|
443
|
+
@name,@discrete_ranges=name,discrete_ranges
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
class DiscreteRange < AstNode
|
|
448
|
+
attr_accessor :lhs,:dir,:rhs
|
|
449
|
+
def initialize lhs=nil,dir=nil,rhs=nil
|
|
450
|
+
@lhs,@dir,@rhs=lhs,dir,rhs
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
class Parenth < AstNode
|
|
455
|
+
attr_accessor :expr
|
|
456
|
+
def initialize expr=nil
|
|
457
|
+
@expr=expr
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
class Waveform < AstNode
|
|
462
|
+
attr_accessor :elements
|
|
463
|
+
def initialize elements=[]
|
|
464
|
+
@elements=elements
|
|
465
|
+
end
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
class CondExpr < AstNode
|
|
469
|
+
attr_accessor :whens,:else_
|
|
470
|
+
def initialize whens=[],else_=nil
|
|
471
|
+
@whens,@else_=whens,else_
|
|
472
|
+
end
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
class When < AstNode
|
|
476
|
+
attr_accessor :expr,:cond
|
|
477
|
+
def initialize expr=nil,cond=nil
|
|
478
|
+
@expr,@cond=expr,cond
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
class Binary < AstNode
|
|
483
|
+
attr_accessor :lhs,:op,:rhs
|
|
484
|
+
def initialize lhs=nil,op=nil,rhs=nil
|
|
485
|
+
@lhs,@op,@rhs=lhs,op,rhs
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
class After < AstNode
|
|
490
|
+
attr_accessor :lhs,:rhs
|
|
491
|
+
def initialize lhs=nil,rhs=nil
|
|
492
|
+
@lhs,@rhs=lhs,rhs
|
|
493
|
+
end
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
class Timed < AstNode
|
|
497
|
+
attr_accessor :lhs,:rhs
|
|
498
|
+
def initialize lhs=nil,rhs=nil
|
|
499
|
+
@lhs,@rhs=lhs,rhs
|
|
500
|
+
end
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
class Attributed < AstNode
|
|
504
|
+
attr_accessor :lhs,:rhs
|
|
505
|
+
def initialize lhs=nil,rhs=nil
|
|
506
|
+
@lhs,@rhs=lhs,rhs
|
|
507
|
+
end
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
class Concat < AstNode
|
|
511
|
+
attr_accessor :lhs,:rhs
|
|
512
|
+
def initialize lhs=nil,rhs=nil
|
|
513
|
+
@lhs,@rhs=lhs,rhs
|
|
514
|
+
end
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
class Qualified < AstNode
|
|
518
|
+
attr_accessor :lhs,:rhs
|
|
519
|
+
def initialize lhs=nil,rhs=nil
|
|
520
|
+
@lhs,@rhs=lhs,rhs
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
class Sliced < AstNode
|
|
525
|
+
attr_accessor :expr,:lhs,:dir,:rhs
|
|
526
|
+
def initialize expr=nil,lhs=nil,dir=nil,rhs=nil
|
|
527
|
+
@expr,@lhs,@dir,@rhs=expr,lhs,dir,rhs
|
|
528
|
+
end
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
class Ident < AstNode
|
|
532
|
+
attr_accessor :tok
|
|
533
|
+
def initialize tok=nil
|
|
534
|
+
@tok=tok
|
|
535
|
+
end
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
class IntLit < AstNode
|
|
539
|
+
attr_accessor :tok
|
|
540
|
+
def initialize tok=nil
|
|
541
|
+
@tok=tok
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
class CharLit < AstNode
|
|
546
|
+
attr_accessor :tok
|
|
547
|
+
def initialize tok=nil
|
|
548
|
+
@tok=tok
|
|
549
|
+
end
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
class BoolLit < AstNode
|
|
553
|
+
attr_accessor :tok
|
|
554
|
+
def initialize tok=nil
|
|
555
|
+
@tok=tok
|
|
556
|
+
end
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
class SelectedName < AstNode
|
|
560
|
+
attr_accessor :lhs,:rhs
|
|
561
|
+
def initialize lhs=nil,rhs=nil
|
|
562
|
+
@lhs,@rhs=lhs,rhs
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
class FuncProtoDecl < AstNode
|
|
567
|
+
attr_accessor :name,:formal_args,:return_type
|
|
568
|
+
def initialize name=nil,formal_args=[],return_type=nil
|
|
569
|
+
@name,@formal_args,@return_type=name,formal_args,return_type
|
|
570
|
+
end
|
|
571
|
+
end
|
|
572
|
+
|
|
573
|
+
class FuncDecl < AstNode
|
|
574
|
+
attr_accessor :name,:formal_args,:return_type,:decls,:body
|
|
575
|
+
def initialize name=nil,formal_args=[],return_type=nil,decls=nil,body=nil
|
|
576
|
+
@name,@formal_args,@return_type,@decls,@body=name,formal_args,return_type,decls,body
|
|
577
|
+
end
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
class FuncCall < AstNode
|
|
581
|
+
attr_accessor :name,:actual_args
|
|
582
|
+
def initialize name=nil,actual_args=[]
|
|
583
|
+
@name,@actual_args=name,actual_args
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
class Aggregate < AstNode
|
|
588
|
+
attr_accessor :elements
|
|
589
|
+
def initialize elements=[]
|
|
590
|
+
@elements=elements
|
|
591
|
+
end
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
class Label < AstNode
|
|
595
|
+
attr_accessor :ident
|
|
596
|
+
def initialize ident=nil
|
|
597
|
+
@ident=ident
|
|
598
|
+
end
|
|
599
|
+
end
|
|
600
|
+
|
|
601
|
+
class Assoc < AstNode
|
|
602
|
+
attr_accessor :lhs,:rhs
|
|
603
|
+
def initialize lhs=nil,rhs=nil
|
|
604
|
+
@lhs,@rhs=lhs,rhs
|
|
605
|
+
end
|
|
606
|
+
end
|
|
607
|
+
end # Vertigo
|