vertigo_vhdl 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +7 -0
  2. data/bin/vertigo +7 -0
  3. data/lib/vertigo.rb +4 -0
  4. data/lib/vertigo/ast.rb +87 -0
  5. data/lib/vertigo/ast_vertigo_rkgen.rb +607 -0
  6. data/lib/vertigo/code.rb +57 -0
  7. data/lib/vertigo/compiler.rb +61 -0
  8. data/lib/vertigo/generic_lexer.rb +61 -0
  9. data/lib/vertigo/generic_parser.rb +44 -0
  10. data/lib/vertigo/indent.rb +20 -0
  11. data/lib/vertigo/lexer.rb +172 -0
  12. data/lib/vertigo/parser.rb +1458 -0
  13. data/lib/vertigo/pretty_printer.rb +749 -0
  14. data/lib/vertigo/runner.rb +115 -0
  15. data/lib/vertigo/tb_generator.rb +81 -0
  16. data/lib/vertigo/template.tb.vhd +72 -0
  17. data/lib/vertigo/token.rb +67 -0
  18. data/lib/vertigo/version.rb +3 -0
  19. data/lib/vertigo/vertigo.rkg +354 -0
  20. data/lib/vertigo/visitor_vertigo_rkgen.rb +447 -0
  21. data/tests/ghdl_tests/fsm.vhd +98 -0
  22. data/tests/ghdl_tests/fsm_synth.vhd +248 -0
  23. data/tests/ghdl_tests/test_fsm.vhd +162 -0
  24. data/tests/parser_tests/else.vhd +64 -0
  25. data/tests/parser_tests/test_MUST_fail.vhd +1 -0
  26. data/tests/parser_tests/test_accelerator.vhd +160 -0
  27. data/tests/parser_tests/test_accelerator_pp.vhd +144 -0
  28. data/tests/parser_tests/test_aggregate.vhd +17 -0
  29. data/tests/parser_tests/test_aggregate_pp.vhd +15 -0
  30. data/tests/parser_tests/test_archi_1.vhd +45 -0
  31. data/tests/parser_tests/test_archi_1_pp.vhd +41 -0
  32. data/tests/parser_tests/test_array_array_00.vhd +25 -0
  33. data/tests/parser_tests/test_array_array_00_pp.vhd +25 -0
  34. data/tests/parser_tests/test_array_urange.vhd +25 -0
  35. data/tests/parser_tests/test_array_urange_pp.vhd +25 -0
  36. data/tests/parser_tests/test_chu-1.vhd +80 -0
  37. data/tests/parser_tests/test_chu-1_pp.vhd +104 -0
  38. data/tests/parser_tests/test_concat.vhd +11 -0
  39. data/tests/parser_tests/test_concat_pp.vhd +14 -0
  40. data/tests/parser_tests/test_counter.vhd +35 -0
  41. data/tests/parser_tests/test_counter_pp.vhd +35 -0
  42. data/tests/parser_tests/test_de2.vhd +358 -0
  43. data/tests/parser_tests/test_de2_pp.vhd +274 -0
  44. data/tests/parser_tests/test_encode.vhd +2679 -0
  45. data/tests/parser_tests/test_encode_pp.vhd +2549 -0
  46. data/tests/parser_tests/test_fsm.vhd +162 -0
  47. data/tests/parser_tests/test_fsm_pp.vhd +125 -0
  48. data/tests/parser_tests/test_fsm_synth.vhd +248 -0
  49. data/tests/parser_tests/test_fsm_synth_pp.vhd +197 -0
  50. data/tests/parser_tests/test_function-01.vhd +33 -0
  51. data/tests/parser_tests/test_function-01_pp.vhd +18 -0
  52. data/tests/parser_tests/test_lfsr.vhd +75 -0
  53. data/tests/parser_tests/test_lfsr_pp.vhd +44 -0
  54. data/tests/parser_tests/test_microwatt_cache_ram.vhd +1 -0
  55. data/tests/parser_tests/test_microwatt_cache_ram_pp.vhd +68 -0
  56. data/tests/parser_tests/test_microwatt_common.vhd +1 -0
  57. data/tests/parser_tests/test_microwatt_common_pp.vhd +336 -0
  58. data/tests/parser_tests/test_microwatt_control.vhd +1 -0
  59. data/tests/parser_tests/test_microwatt_control_pp.vhd +187 -0
  60. data/tests/parser_tests/test_microwatt_core.vhd +1 -0
  61. data/tests/parser_tests/test_microwatt_core_debug.vhd +1 -0
  62. data/tests/parser_tests/test_microwatt_core_debug_pp.vhd +104 -0
  63. data/tests/parser_tests/test_microwatt_core_pp.vhd +231 -0
  64. data/tests/parser_tests/test_microwatt_core_tb.vhd +1 -0
  65. data/tests/parser_tests/test_microwatt_core_tb_pp.vhd +43 -0
  66. data/tests/parser_tests/test_microwatt_countzero.vhd +1 -0
  67. data/tests/parser_tests/test_microwatt_countzero_pp.vhd +120 -0
  68. data/tests/parser_tests/test_microwatt_countzero_tb.vhd +1 -0
  69. data/tests/parser_tests/test_microwatt_countzero_tb_pp.vhd +70 -0
  70. data/tests/parser_tests/test_microwatt_cr_file.vhd +1 -0
  71. data/tests/parser_tests/test_microwatt_cr_file_pp.vhd +74 -0
  72. data/tests/parser_tests/test_microwatt_cr_hazard.vhd +1 -0
  73. data/tests/parser_tests/test_microwatt_cr_hazard_pp.vhd +51 -0
  74. data/tests/parser_tests/test_microwatt_crhelpers.vhd +1 -0
  75. data/tests/parser_tests/test_microwatt_crhelpers_pp.vhd +48 -0
  76. data/tests/parser_tests/test_microwatt_dcache.vhd +1 -0
  77. data/tests/parser_tests/test_microwatt_dcache_pp.vhd +481 -0
  78. data/tests/parser_tests/test_microwatt_dcache_tb.vhd +1 -0
  79. data/tests/parser_tests/test_microwatt_dcache_tb_pp.vhd +98 -0
  80. data/tests/parser_tests/test_microwatt_decode1.vhd +1 -0
  81. data/tests/parser_tests/test_microwatt_decode1_pp.vhd +138 -0
  82. data/tests/parser_tests/test_microwatt_decode2.vhd +1 -0
  83. data/tests/parser_tests/test_microwatt_decode2_pp.vhd +300 -0
  84. data/tests/parser_tests/test_microwatt_decode_types.vhd +1 -0
  85. data/tests/parser_tests/test_microwatt_decode_types_pp.vhd +67 -0
  86. data/tests/parser_tests/test_microwatt_divider.vhd +1 -0
  87. data/tests/parser_tests/test_microwatt_divider_pp.vhd +132 -0
  88. data/tests/parser_tests/test_microwatt_divider_tb.vhd +1 -0
  89. data/tests/parser_tests/test_microwatt_divider_tb_pp.vhd +95 -0
  90. data/tests/parser_tests/test_microwatt_dmi_dtm_dummy.vhd +1 -0
  91. data/tests/parser_tests/test_microwatt_dmi_dtm_dummy_pp.vhd +29 -0
  92. data/tests/parser_tests/test_microwatt_dmi_dtm_tb.vhd +1 -0
  93. data/tests/parser_tests/test_microwatt_dmi_dtm_tb_pp.vhd +197 -0
  94. data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx.vhd +1 -0
  95. data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx_pp.vhd +139 -0
  96. data/tests/parser_tests/test_microwatt_execute1.vhd +1 -0
  97. data/tests/parser_tests/test_microwatt_execute1_pp.vhd +689 -0
  98. data/tests/parser_tests/test_microwatt_fetch1.vhd +1 -0
  99. data/tests/parser_tests/test_microwatt_fetch1_pp.vhd +88 -0
  100. data/tests/parser_tests/test_microwatt_fetch2.vhd +1 -0
  101. data/tests/parser_tests/test_microwatt_fetch2_pp.vhd +79 -0
  102. data/tests/parser_tests/test_microwatt_glibc_random.vhd +1 -0
  103. data/tests/parser_tests/test_microwatt_glibc_random_helpers.vhd +1 -0
  104. data/tests/parser_tests/test_microwatt_glibc_random_helpers_pp.vhd +25 -0
  105. data/tests/parser_tests/test_microwatt_glibc_random_pp.vhd +41 -0
  106. data/tests/parser_tests/test_microwatt_gpr_hazard.vhd +1 -0
  107. data/tests/parser_tests/test_microwatt_gpr_hazard_pp.vhd +68 -0
  108. data/tests/parser_tests/test_microwatt_helpers.vhd +1 -0
  109. data/tests/parser_tests/test_microwatt_helpers_pp.vhd +153 -0
  110. data/tests/parser_tests/test_microwatt_icache.vhd +1 -0
  111. data/tests/parser_tests/test_microwatt_icache_pp.vhd +337 -0
  112. data/tests/parser_tests/test_microwatt_icache_tb.vhd +1 -0
  113. data/tests/parser_tests/test_microwatt_icache_tb_pp.vhd +104 -0
  114. data/tests/parser_tests/test_microwatt_insn_helpers.vhd +1 -0
  115. data/tests/parser_tests/test_microwatt_insn_helpers_pp.vhd +208 -0
  116. data/tests/parser_tests/test_microwatt_loadstore1.vhd +1 -0
  117. data/tests/parser_tests/test_microwatt_loadstore1_pp.vhd +222 -0
  118. data/tests/parser_tests/test_microwatt_logical.vhd +1 -0
  119. data/tests/parser_tests/test_microwatt_logical_pp.vhd +87 -0
  120. data/tests/parser_tests/test_microwatt_multiply.vhd +1 -0
  121. data/tests/parser_tests/test_microwatt_multiply_pp.vhd +84 -0
  122. data/tests/parser_tests/test_microwatt_multiply_tb.vhd +1 -0
  123. data/tests/parser_tests/test_microwatt_multiply_tb_pp.vhd +75 -0
  124. data/tests/parser_tests/test_microwatt_plru.vhd +1 -0
  125. data/tests/parser_tests/test_microwatt_plru_pp.vhd +46 -0
  126. data/tests/parser_tests/test_microwatt_plru_tb.vhd +1 -0
  127. data/tests/parser_tests/test_microwatt_plru_tb_pp.vhd +93 -0
  128. data/tests/parser_tests/test_microwatt_ppc_fx_insns.vhd +1 -0
  129. data/tests/parser_tests/test_microwatt_ppc_fx_insns_pp.vhd +665 -0
  130. data/tests/parser_tests/test_microwatt_register_file.vhd +1 -0
  131. data/tests/parser_tests/test_microwatt_register_file_pp.vhd +86 -0
  132. data/tests/parser_tests/test_microwatt_rotator.vhd +1 -0
  133. data/tests/parser_tests/test_microwatt_rotator_pp.vhd +149 -0
  134. data/tests/parser_tests/test_microwatt_rotator_tb.vhd +1 -0
  135. data/tests/parser_tests/test_microwatt_rotator_tb_pp.vhd +134 -0
  136. data/tests/parser_tests/test_microwatt_sim_bram.vhd +1 -0
  137. data/tests/parser_tests/test_microwatt_sim_bram_helpers.vhd +1 -0
  138. data/tests/parser_tests/test_microwatt_sim_bram_helpers_pp.vhd +52 -0
  139. data/tests/parser_tests/test_microwatt_sim_bram_pp.vhd +53 -0
  140. data/tests/parser_tests/test_microwatt_sim_console.vhd +1 -0
  141. data/tests/parser_tests/test_microwatt_sim_console_pp.vhd +43 -0
  142. data/tests/parser_tests/test_microwatt_sim_jtag.vhd +1 -0
  143. data/tests/parser_tests/test_microwatt_sim_jtag_pp.vhd +64 -0
  144. data/tests/parser_tests/test_microwatt_sim_jtag_socket.vhd +1 -0
  145. data/tests/parser_tests/test_microwatt_sim_jtag_socket_pp.vhd +36 -0
  146. data/tests/parser_tests/test_microwatt_sim_uart.vhd +1 -0
  147. data/tests/parser_tests/test_microwatt_sim_uart_pp.vhd +90 -0
  148. data/tests/parser_tests/test_microwatt_soc.vhd +1 -0
  149. data/tests/parser_tests/test_microwatt_soc_pp.vhd +195 -0
  150. data/tests/parser_tests/test_microwatt_utils.vhd +1 -0
  151. data/tests/parser_tests/test_microwatt_utils_pp.vhd +39 -0
  152. data/tests/parser_tests/test_microwatt_wishbone_arbiter.vhd +1 -0
  153. data/tests/parser_tests/test_microwatt_wishbone_arbiter_pp.vhd +54 -0
  154. data/tests/parser_tests/test_microwatt_wishbone_bram_tb.vhd +1 -0
  155. data/tests/parser_tests/test_microwatt_wishbone_bram_tb_pp.vhd +157 -0
  156. data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper.vhd +1 -0
  157. data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper_pp.vhd +62 -0
  158. data/tests/parser_tests/test_microwatt_wishbone_debug_master.vhd +1 -0
  159. data/tests/parser_tests/test_microwatt_wishbone_debug_master_pp.vhd +124 -0
  160. data/tests/parser_tests/test_microwatt_wishbone_types.vhd +1 -0
  161. data/tests/parser_tests/test_microwatt_wishbone_types_pp.vhd +38 -0
  162. data/tests/parser_tests/test_microwatt_writeback.vhd +1 -0
  163. data/tests/parser_tests/test_microwatt_writeback_pp.vhd +87 -0
  164. data/tests/parser_tests/test_package-1.vhd +68 -0
  165. data/tests/parser_tests/test_package-1_pp.vhd +53 -0
  166. data/tests/parser_tests/test_precedence.vhd +13 -0
  167. data/tests/parser_tests/test_precedence_pp.vhd +16 -0
  168. data/tests/parser_tests/test_selected_sig.vhd +14 -0
  169. data/tests/parser_tests/test_selected_sig_pp.vhd +10 -0
  170. data/tests/parser_tests/test_slice.vhd +15 -0
  171. data/tests/parser_tests/test_slice_pp.vhd +16 -0
  172. data/tests/parser_tests/test_tb-00.vhd +94 -0
  173. data/tests/parser_tests/test_tb-00_pp.vhd +71 -0
  174. data/tests/parser_tests/test_type_decl_02.vhd +9 -0
  175. data/tests/parser_tests/test_type_decl_02_pp.vhd +11 -0
  176. data/tests/parser_tests/test_use.vhd +7 -0
  177. data/tests/parser_tests/test_use_pp.vhd +10 -0
  178. data/tests/parser_tests/test_while_1.vhd +38 -0
  179. data/tests/parser_tests/test_while_1_pp.vhd +26 -0
  180. data/tests/parser_tests/test_with-00.vhd +21 -0
  181. data/tests/parser_tests/test_with-00_pp.vhd +12 -0
  182. data/tests/tb_gen_tests/test_accelerator.vhd +160 -0
  183. 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
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/vertigo'
4
+
5
+ $verbose=true
6
+
7
+ Vertigo::Runner.run(*ARGV)
data/lib/vertigo.rb ADDED
@@ -0,0 +1,4 @@
1
+ require_relative "./vertigo/runner"
2
+ require_relative "./vertigo/version"
3
+ module Vertigo
4
+ end
@@ -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