ruby-vpi 19.0.0 → 20.0.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.
Files changed (776) hide show
  1. data/LICENSE +12 -13
  2. data/README +1 -1
  3. data/Rakefile +104 -118
  4. data/TODO +77 -0
  5. data/bin/convert.rb +1 -1
  6. data/bin/generate/design.rb +3 -2
  7. data/bin/generate/loader.rb +1 -0
  8. data/bin/generate/proto.rb +16 -14
  9. data/bin/generate/runner.rake +8 -3
  10. data/bin/generate/spec.rb +11 -13
  11. data/bin/generate.rb +23 -18
  12. data/bin/ruby-vpi +36 -27
  13. data/doc/api/c/annotated.html +36 -0
  14. data/{ref → doc/api}/c/common_8h.html +9 -13
  15. data/{ref → doc/api}/c/doxygen.css +0 -0
  16. data/{ref → doc/api}/c/doxygen.png +0 -0
  17. data/{ref → doc/api}/c/files.html +10 -8
  18. data/doc/api/c/functions.html +184 -0
  19. data/doc/api/c/functions_vars.html +184 -0
  20. data/{ref → doc/api}/c/globals.html +12 -11
  21. data/{ref → doc/api}/c/globals_0x63.html +12 -11
  22. data/{ref → doc/api}/c/globals_0x65.html +12 -11
  23. data/{ref → doc/api}/c/globals_0x66.html +12 -11
  24. data/{ref → doc/api}/c/globals_0x6d.html +14 -13
  25. data/{ref → doc/api}/c/globals_0x70.html +21 -20
  26. data/{ref → doc/api}/c/globals_0x72.html +14 -13
  27. data/{ref → doc/api}/c/globals_0x74.html +12 -11
  28. data/{ref → doc/api}/c/globals_0x76.html +17 -16
  29. data/{ref → doc/api}/c/globals_0x78.html +12 -11
  30. data/{ref → doc/api}/c/globals_defs.html +12 -10
  31. data/{ref → doc/api}/c/globals_defs_0x65.html +12 -10
  32. data/{ref → doc/api}/c/globals_defs_0x70.html +12 -10
  33. data/{ref → doc/api}/c/globals_defs_0x76.html +14 -12
  34. data/{ref → doc/api}/c/globals_defs_0x78.html +12 -10
  35. data/{ref → doc/api}/c/globals_enum.html +11 -9
  36. data/{ref → doc/api}/c/globals_eval.html +11 -9
  37. data/{ref → doc/api}/c/globals_func.html +17 -15
  38. data/doc/api/c/globals_type.html +72 -0
  39. data/{ref → doc/api}/c/globals_vars.html +13 -11
  40. data/{ref → doc/api}/c/index.html +7 -6
  41. data/{ref → doc/api}/c/main_8c.html +7 -11
  42. data/{ref → doc/api}/c/main_8h.html +7 -11
  43. data/{ref → doc/api}/c/relay_8c.html +7 -11
  44. data/{ref → doc/api}/c/relay_8h.html +7 -11
  45. data/{ref/c/structt__cb__data.html → doc/api/c/structs__cb__data.html} +32 -30
  46. data/{ref/c/structt__vpi__delay.html → doc/api/c/structs__vpi__delay.html} +29 -27
  47. data/{ref/c/structt__vpi__error__info.html → doc/api/c/structs__vpi__error__info.html} +32 -30
  48. data/{ref/c/structt__vpi__strengthval.html → doc/api/c/structs__vpi__strengthval.html} +20 -18
  49. data/{ref/c/structt__vpi__systf__data.html → doc/api/c/structs__vpi__systf__data.html} +32 -30
  50. data/{ref/c/structt__vpi__time.html → doc/api/c/structs__vpi__time.html} +23 -21
  51. data/doc/api/c/structs__vpi__value.html +207 -0
  52. data/{ref/c/structt__vpi__vecval.html → doc/api/c/structs__vpi__vecval.html} +17 -15
  53. data/{ref/c/structt__vpi__vlog__info.html → doc/api/c/structs__vpi__vlog__info.html} +23 -21
  54. data/{ref → doc/api}/c/tab_b.gif +0 -0
  55. data/{ref → doc/api}/c/tab_l.gif +0 -0
  56. data/{ref → doc/api}/c/tab_r.gif +0 -0
  57. data/{ref → doc/api}/c/tabs.css +2 -2
  58. data/{ref → doc/api}/c/verilog_8h.html +11 -15
  59. data/{ref → doc/api}/c/vlog_8c.html +14 -18
  60. data/{ref → doc/api}/c/vlog_8h.html +9 -13
  61. data/{ref → doc/api}/c/vpi__user_8h.html +120 -239
  62. data/{ref → doc/api}/ruby/classes/ERB.html +7 -7
  63. data/doc/api/ruby/classes/ERB.src/M000025.html +29 -0
  64. data/{ref → doc/api}/ruby/classes/FileUtils.html +6 -23
  65. data/doc/api/ruby/classes/FileUtils.src/M000026.html +20 -0
  66. data/{ref → doc/api}/ruby/classes/Float.html +8 -8
  67. data/doc/api/ruby/classes/Float.src/M000020.html +19 -0
  68. data/{ref → doc/api}/ruby/classes/Integer.html +67 -67
  69. data/doc/api/ruby/classes/Integer.src/M000008.html +25 -0
  70. data/doc/api/ruby/classes/Integer.src/M000009.html +18 -0
  71. data/doc/api/ruby/classes/Integer.src/M000010.html +18 -0
  72. data/doc/api/ruby/classes/Integer.src/M000011.html +18 -0
  73. data/doc/api/ruby/classes/Integer.src/M000012.html +18 -0
  74. data/doc/api/ruby/classes/Integer.src/M000013.html +18 -0
  75. data/doc/api/ruby/classes/Integer.src/M000016.html +25 -0
  76. data/doc/api/ruby/classes/Integer.src/M000017.html +31 -0
  77. data/doc/api/ruby/classes/Integer.src/M000018.html +25 -0
  78. data/doc/api/ruby/classes/Integer.src/M000019.html +30 -0
  79. data/{ref → doc/api}/ruby/classes/Object.html +3 -3
  80. data/{ref → doc/api}/ruby/classes/RDoc.html +7 -7
  81. data/doc/api/ruby/classes/RDoc.src/M000541.html +40 -0
  82. data/doc/api/ruby/classes/RubyVPI/SIMULATORS.html +130 -0
  83. data/doc/api/ruby/classes/RubyVPI/SIMULATORS.src/M000028.html +19 -0
  84. data/{ref → doc/api}/ruby/classes/RubyVPI.html +96 -55
  85. data/doc/api/ruby/classes/RubyVPI.src/M000027.html +34 -0
  86. data/{ref → doc/api}/ruby/classes/String.html +16 -16
  87. data/doc/api/ruby/classes/String.src/M000021.html +36 -0
  88. data/doc/api/ruby/classes/String.src/M000022.html +18 -0
  89. data/doc/api/ruby/classes/String.src/M000023.html +18 -0
  90. data/doc/api/ruby/classes/String.src/M000024.html +41 -0
  91. data/doc/api/ruby/classes/VPI/Handle.html +2098 -0
  92. data/doc/api/ruby/classes/VPI/Handle.src/M000434.html +31 -0
  93. data/doc/api/ruby/classes/VPI/Handle.src/M000435.html +18 -0
  94. data/doc/api/ruby/classes/VPI/Handle.src/M000436.html +18 -0
  95. data/doc/api/ruby/classes/VPI/Handle.src/M000439.html +18 -0
  96. data/doc/api/ruby/classes/VPI/Handle.src/M000440.html +18 -0
  97. data/doc/api/ruby/classes/VPI/Handle.src/M000443.html +18 -0
  98. data/doc/api/ruby/classes/VPI/Handle.src/M000444.html +18 -0
  99. data/doc/api/ruby/classes/VPI/Handle.src/M000447.html +18 -0
  100. data/doc/api/ruby/classes/VPI/Handle.src/M000448.html +18 -0
  101. data/doc/api/ruby/classes/VPI/Handle.src/M000451.html +18 -0
  102. data/doc/api/ruby/classes/VPI/Handle.src/M000452.html +18 -0
  103. data/doc/api/ruby/classes/VPI/Handle.src/M000455.html +18 -0
  104. data/doc/api/ruby/classes/VPI/Handle.src/M000456.html +18 -0
  105. data/doc/api/ruby/classes/VPI/Handle.src/M000459.html +24 -0
  106. data/doc/api/ruby/classes/VPI/Handle.src/M000461.html +21 -0
  107. data/doc/api/ruby/classes/VPI/Handle.src/M000462.html +28 -0
  108. data/doc/api/ruby/classes/VPI/Handle.src/M000463.html +50 -0
  109. data/doc/api/ruby/classes/VPI/Handle.src/M000464.html +19 -0
  110. data/doc/api/ruby/classes/VPI/Handle.src/M000465.html +19 -0
  111. data/doc/api/ruby/classes/VPI/Handle.src/M000466.html +18 -0
  112. data/doc/api/ruby/classes/VPI/Handle.src/M000467.html +18 -0
  113. data/doc/api/ruby/classes/VPI/Handle.src/M000468.html +30 -0
  114. data/doc/api/ruby/classes/VPI/Handle.src/M000469.html +18 -0
  115. data/doc/api/ruby/classes/VPI/Handle.src/M000470.html +18 -0
  116. data/doc/api/ruby/classes/VPI/Handle.src/M000471.html +40 -0
  117. data/doc/api/ruby/classes/VPI/Handle.src/M000472.html +18 -0
  118. data/doc/api/ruby/classes/VPI/Handle.src/M000473.html +21 -0
  119. data/doc/api/ruby/classes/VPI/Handle.src/M000474.html +16 -0
  120. data/doc/api/ruby/classes/VPI/Handle.src/M000475.html +16 -0
  121. data/doc/api/ruby/classes/VPI/Handle.src/M000476.html +16 -0
  122. data/doc/api/ruby/classes/VPI/Handle.src/M000477.html +16 -0
  123. data/doc/api/ruby/classes/VPI/Handle.src/M000478.html +16 -0
  124. data/doc/api/ruby/classes/VPI/Handle.src/M000479.html +16 -0
  125. data/doc/api/ruby/classes/VPI/Handle.src/M000480.html +16 -0
  126. data/doc/api/ruby/classes/VPI/Handle.src/M000481.html +16 -0
  127. data/doc/api/ruby/classes/VPI/Handle.src/M000482.html +16 -0
  128. data/doc/api/ruby/classes/VPI/Handle.src/M000483.html +16 -0
  129. data/doc/api/ruby/classes/VPI/Handle.src/M000484.html +16 -0
  130. data/doc/api/ruby/classes/VPI/Handle.src/M000485.html +16 -0
  131. data/doc/api/ruby/classes/VPI/Handle.src/M000486.html +16 -0
  132. data/doc/api/ruby/classes/VPI/Handle.src/M000487.html +16 -0
  133. data/doc/api/ruby/classes/VPI/Handle.src/M000488.html +16 -0
  134. data/doc/api/ruby/classes/VPI/Handle.src/M000489.html +16 -0
  135. data/doc/api/ruby/classes/VPI/Handle.src/M000490.html +16 -0
  136. data/doc/api/ruby/classes/VPI/Handle.src/M000491.html +16 -0
  137. data/doc/api/ruby/classes/VPI/Handle.src/M000492.html +16 -0
  138. data/doc/api/ruby/classes/VPI/Handle.src/M000493.html +16 -0
  139. data/doc/api/ruby/classes/VPI/Handle.src/M000494.html +16 -0
  140. data/doc/api/ruby/classes/VPI/Handle.src/M000495.html +16 -0
  141. data/doc/api/ruby/classes/VPI/Handle.src/M000496.html +16 -0
  142. data/doc/api/ruby/classes/VPI/Handle.src/M000497.html +16 -0
  143. data/doc/api/ruby/classes/VPI/Handle.src/M000498.html +16 -0
  144. data/doc/api/ruby/classes/VPI/Handle.src/M000499.html +16 -0
  145. data/doc/api/ruby/classes/VPI/Handle.src/M000500.html +16 -0
  146. data/doc/api/ruby/classes/VPI/Handle.src/M000501.html +16 -0
  147. data/doc/api/ruby/classes/VPI/Handle.src/M000502.html +16 -0
  148. data/doc/api/ruby/classes/VPI/Handle.src/M000503.html +16 -0
  149. data/doc/api/ruby/classes/VPI/Handle.src/M000504.html +16 -0
  150. data/doc/api/ruby/classes/VPI/Handle.src/M000505.html +16 -0
  151. data/doc/api/ruby/classes/VPI/Handle.src/M000506.html +16 -0
  152. data/doc/api/ruby/classes/VPI/Handle.src/M000507.html +16 -0
  153. data/doc/api/ruby/classes/VPI/Handle.src/M000508.html +16 -0
  154. data/doc/api/ruby/classes/VPI/Handle.src/M000509.html +16 -0
  155. data/doc/api/ruby/classes/VPI/Handle.src/M000510.html +16 -0
  156. data/doc/api/ruby/classes/VPI/Handle.src/M000511.html +16 -0
  157. data/doc/api/ruby/classes/VPI/Handle.src/M000512.html +16 -0
  158. data/doc/api/ruby/classes/VPI/Handle.src/M000513.html +16 -0
  159. data/doc/api/ruby/classes/VPI/Handle.src/M000514.html +16 -0
  160. data/doc/api/ruby/classes/VPI/Handle.src/M000515.html +16 -0
  161. data/doc/api/ruby/classes/VPI/Handle.src/M000516.html +16 -0
  162. data/doc/api/ruby/classes/VPI/Handle.src/M000517.html +16 -0
  163. data/doc/api/ruby/classes/VPI/Handle.src/M000518.html +16 -0
  164. data/doc/api/ruby/classes/VPI/Handle.src/M000519.html +16 -0
  165. data/doc/api/ruby/classes/VPI/Handle.src/M000520.html +16 -0
  166. data/doc/api/ruby/classes/VPI/Handle.src/M000521.html +16 -0
  167. data/doc/api/ruby/classes/VPI/Handle.src/M000522.html +16 -0
  168. data/doc/api/ruby/classes/VPI/Handle.src/M000523.html +16 -0
  169. data/doc/api/ruby/classes/VPI/Handle.src/M000524.html +16 -0
  170. data/doc/api/ruby/classes/VPI/Handle.src/M000525.html +16 -0
  171. data/doc/api/ruby/classes/VPI/Handle.src/M000526.html +16 -0
  172. data/doc/api/ruby/classes/VPI/Handle.src/M000527.html +16 -0
  173. data/doc/api/ruby/classes/VPI/Handle.src/M000528.html +16 -0
  174. data/doc/api/ruby/classes/VPI/Handle.src/M000529.html +16 -0
  175. data/doc/api/ruby/classes/VPI/Handle.src/M000530.html +16 -0
  176. data/doc/api/ruby/classes/VPI/Handle.src/M000531.html +16 -0
  177. data/doc/api/ruby/classes/VPI/Handle.src/M000532.html +16 -0
  178. data/doc/api/ruby/classes/VPI/Handle.src/M000533.html +16 -0
  179. data/doc/api/ruby/classes/VPI/Handle.src/M000534.html +16 -0
  180. data/doc/api/ruby/classes/VPI/Handle.src/M000535.html +16 -0
  181. data/doc/api/ruby/classes/VPI/Handle.src/M000536.html +16 -0
  182. data/doc/api/ruby/classes/VPI/Handle.src/M000537.html +16 -0
  183. data/{ref → doc/api}/ruby/classes/VPI/S_vpi_time.html +18 -18
  184. data/doc/api/ruby/classes/VPI/S_vpi_time.src/M000538.html +18 -0
  185. data/doc/api/ruby/classes/VPI/S_vpi_time.src/M000539.html +19 -0
  186. data/{ref → doc/api}/ruby/classes/VPI/S_vpi_value.html +17 -17
  187. data/doc/api/ruby/classes/VPI/S_vpi_value.src/M000431.html +35 -0
  188. data/doc/api/ruby/classes/VPI/S_vpi_value.src/M000432.html +42 -0
  189. data/doc/api/ruby/classes/VPI/S_vpi_value.src/M000433.html +42 -0
  190. data/doc/api/ruby/classes/VPI.html +11152 -0
  191. data/doc/api/ruby/classes/VPI.src/M000029.html +19 -0
  192. data/doc/api/ruby/classes/VPI.src/M000030.html +18 -0
  193. data/doc/api/ruby/classes/VPI.src/M000031.html +19 -0
  194. data/doc/api/ruby/classes/VPI.src/M000033.html +25 -0
  195. data/doc/api/ruby/classes/VPI.src/M000034.html +26 -0
  196. data/doc/api/ruby/classes/VPI.src/M000036.html +16 -0
  197. data/doc/api/ruby/classes/VPI.src/M000037.html +16 -0
  198. data/doc/api/ruby/classes/VPI.src/M000038.html +16 -0
  199. data/doc/api/ruby/classes/VPI.src/M000039.html +16 -0
  200. data/doc/api/ruby/classes/VPI.src/M000040.html +16 -0
  201. data/doc/api/ruby/classes/VPI.src/M000041.html +16 -0
  202. data/doc/api/ruby/classes/VPI.src/M000042.html +16 -0
  203. data/doc/api/ruby/classes/VPI.src/M000043.html +16 -0
  204. data/doc/api/ruby/classes/VPI.src/M000044.html +16 -0
  205. data/doc/api/ruby/classes/VPI.src/M000045.html +16 -0
  206. data/doc/api/ruby/classes/VPI.src/M000046.html +16 -0
  207. data/doc/api/ruby/classes/VPI.src/M000047.html +16 -0
  208. data/doc/api/ruby/classes/VPI.src/M000048.html +16 -0
  209. data/doc/api/ruby/classes/VPI.src/M000049.html +16 -0
  210. data/doc/api/ruby/classes/VPI.src/M000050.html +16 -0
  211. data/doc/api/ruby/classes/VPI.src/M000051.html +16 -0
  212. data/doc/api/ruby/classes/VPI.src/M000052.html +16 -0
  213. data/doc/api/ruby/classes/VPI.src/M000053.html +16 -0
  214. data/doc/api/ruby/classes/VPI.src/M000054.html +16 -0
  215. data/doc/api/ruby/classes/VPI.src/M000055.html +16 -0
  216. data/doc/api/ruby/classes/VPI.src/M000056.html +16 -0
  217. data/doc/api/ruby/classes/VPI.src/M000057.html +16 -0
  218. data/doc/api/ruby/classes/VPI.src/M000058.html +16 -0
  219. data/doc/api/ruby/classes/VPI.src/M000059.html +16 -0
  220. data/doc/api/ruby/classes/VPI.src/M000060.html +16 -0
  221. data/doc/api/ruby/classes/VPI.src/M000061.html +16 -0
  222. data/doc/api/ruby/classes/VPI.src/M000062.html +16 -0
  223. data/doc/api/ruby/classes/VPI.src/M000063.html +16 -0
  224. data/doc/api/ruby/classes/VPI.src/M000064.html +16 -0
  225. data/doc/api/ruby/classes/VPI.src/M000065.html +16 -0
  226. data/doc/api/ruby/classes/VPI.src/M000066.html +16 -0
  227. data/doc/api/ruby/classes/VPI.src/M000067.html +16 -0
  228. data/doc/api/ruby/classes/VPI.src/M000068.html +16 -0
  229. data/doc/api/ruby/classes/VPI.src/M000069.html +16 -0
  230. data/doc/api/ruby/classes/VPI.src/M000070.html +16 -0
  231. data/doc/api/ruby/classes/VPI.src/M000071.html +16 -0
  232. data/doc/api/ruby/classes/VPI.src/M000072.html +16 -0
  233. data/doc/api/ruby/classes/VPI.src/M000073.html +16 -0
  234. data/doc/api/ruby/classes/VPI.src/M000074.html +16 -0
  235. data/doc/api/ruby/classes/VPI.src/M000075.html +16 -0
  236. data/doc/api/ruby/classes/VPI.src/M000076.html +16 -0
  237. data/doc/api/ruby/classes/VPI.src/M000077.html +16 -0
  238. data/doc/api/ruby/classes/VPI.src/M000078.html +16 -0
  239. data/doc/api/ruby/classes/VPI.src/M000079.html +16 -0
  240. data/doc/api/ruby/classes/VPI.src/M000080.html +16 -0
  241. data/doc/api/ruby/classes/VPI.src/M000081.html +16 -0
  242. data/doc/api/ruby/classes/VPI.src/M000082.html +16 -0
  243. data/doc/api/ruby/classes/VPI.src/M000083.html +16 -0
  244. data/doc/api/ruby/classes/VPI.src/M000084.html +16 -0
  245. data/doc/api/ruby/classes/VPI.src/M000085.html +16 -0
  246. data/doc/api/ruby/classes/VPI.src/M000086.html +16 -0
  247. data/doc/api/ruby/classes/VPI.src/M000087.html +16 -0
  248. data/doc/api/ruby/classes/VPI.src/M000088.html +16 -0
  249. data/doc/api/ruby/classes/VPI.src/M000089.html +16 -0
  250. data/doc/api/ruby/classes/VPI.src/M000090.html +16 -0
  251. data/doc/api/ruby/classes/VPI.src/M000091.html +16 -0
  252. data/doc/api/ruby/classes/VPI.src/M000092.html +16 -0
  253. data/doc/api/ruby/classes/VPI.src/M000093.html +16 -0
  254. data/doc/api/ruby/classes/VPI.src/M000094.html +16 -0
  255. data/doc/api/ruby/classes/VPI.src/M000095.html +16 -0
  256. data/doc/api/ruby/classes/VPI.src/M000096.html +16 -0
  257. data/doc/api/ruby/classes/VPI.src/M000097.html +16 -0
  258. data/doc/api/ruby/classes/VPI.src/M000098.html +16 -0
  259. data/doc/api/ruby/classes/VPI.src/M000099.html +16 -0
  260. data/doc/api/ruby/classes/VPI.src/M000100.html +16 -0
  261. data/doc/api/ruby/classes/VPI.src/M000101.html +16 -0
  262. data/doc/api/ruby/classes/VPI.src/M000102.html +16 -0
  263. data/doc/api/ruby/classes/VPI.src/M000103.html +16 -0
  264. data/doc/api/ruby/classes/VPI.src/M000104.html +16 -0
  265. data/doc/api/ruby/classes/VPI.src/M000105.html +16 -0
  266. data/doc/api/ruby/classes/VPI.src/M000106.html +16 -0
  267. data/doc/api/ruby/classes/VPI.src/M000107.html +16 -0
  268. data/doc/api/ruby/classes/VPI.src/M000108.html +16 -0
  269. data/doc/api/ruby/classes/VPI.src/M000109.html +16 -0
  270. data/doc/api/ruby/classes/VPI.src/M000110.html +16 -0
  271. data/doc/api/ruby/classes/VPI.src/M000111.html +16 -0
  272. data/doc/api/ruby/classes/VPI.src/M000112.html +16 -0
  273. data/doc/api/ruby/classes/VPI.src/M000113.html +16 -0
  274. data/doc/api/ruby/classes/VPI.src/M000114.html +16 -0
  275. data/doc/api/ruby/classes/VPI.src/M000115.html +16 -0
  276. data/doc/api/ruby/classes/VPI.src/M000116.html +16 -0
  277. data/doc/api/ruby/classes/VPI.src/M000117.html +16 -0
  278. data/doc/api/ruby/classes/VPI.src/M000118.html +16 -0
  279. data/doc/api/ruby/classes/VPI.src/M000119.html +16 -0
  280. data/doc/api/ruby/classes/VPI.src/M000120.html +16 -0
  281. data/doc/api/ruby/classes/VPI.src/M000121.html +16 -0
  282. data/doc/api/ruby/classes/VPI.src/M000122.html +16 -0
  283. data/doc/api/ruby/classes/VPI.src/M000123.html +16 -0
  284. data/doc/api/ruby/classes/VPI.src/M000124.html +16 -0
  285. data/doc/api/ruby/classes/VPI.src/M000125.html +16 -0
  286. data/doc/api/ruby/classes/VPI.src/M000126.html +16 -0
  287. data/doc/api/ruby/classes/VPI.src/M000127.html +16 -0
  288. data/doc/api/ruby/classes/VPI.src/M000128.html +16 -0
  289. data/doc/api/ruby/classes/VPI.src/M000129.html +16 -0
  290. data/doc/api/ruby/classes/VPI.src/M000130.html +16 -0
  291. data/doc/api/ruby/classes/VPI.src/M000131.html +16 -0
  292. data/doc/api/ruby/classes/VPI.src/M000132.html +16 -0
  293. data/doc/api/ruby/classes/VPI.src/M000133.html +16 -0
  294. data/doc/api/ruby/classes/VPI.src/M000134.html +16 -0
  295. data/doc/api/ruby/classes/VPI.src/M000135.html +16 -0
  296. data/doc/api/ruby/classes/VPI.src/M000136.html +16 -0
  297. data/doc/api/ruby/classes/VPI.src/M000137.html +16 -0
  298. data/doc/api/ruby/classes/VPI.src/M000138.html +16 -0
  299. data/doc/api/ruby/classes/VPI.src/M000139.html +16 -0
  300. data/doc/api/ruby/classes/VPI.src/M000140.html +16 -0
  301. data/doc/api/ruby/classes/VPI.src/M000141.html +16 -0
  302. data/doc/api/ruby/classes/VPI.src/M000142.html +16 -0
  303. data/doc/api/ruby/classes/VPI.src/M000143.html +16 -0
  304. data/doc/api/ruby/classes/VPI.src/M000144.html +16 -0
  305. data/doc/api/ruby/classes/VPI.src/M000145.html +16 -0
  306. data/doc/api/ruby/classes/VPI.src/M000146.html +16 -0
  307. data/doc/api/ruby/classes/VPI.src/M000147.html +16 -0
  308. data/doc/api/ruby/classes/VPI.src/M000148.html +16 -0
  309. data/doc/api/ruby/classes/VPI.src/M000149.html +16 -0
  310. data/doc/api/ruby/classes/VPI.src/M000150.html +16 -0
  311. data/doc/api/ruby/classes/VPI.src/M000151.html +16 -0
  312. data/doc/api/ruby/classes/VPI.src/M000152.html +16 -0
  313. data/doc/api/ruby/classes/VPI.src/M000153.html +16 -0
  314. data/doc/api/ruby/classes/VPI.src/M000154.html +16 -0
  315. data/doc/api/ruby/classes/VPI.src/M000155.html +16 -0
  316. data/doc/api/ruby/classes/VPI.src/M000156.html +16 -0
  317. data/doc/api/ruby/classes/VPI.src/M000157.html +16 -0
  318. data/doc/api/ruby/classes/VPI.src/M000158.html +16 -0
  319. data/doc/api/ruby/classes/VPI.src/M000159.html +16 -0
  320. data/doc/api/ruby/classes/VPI.src/M000160.html +16 -0
  321. data/doc/api/ruby/classes/VPI.src/M000161.html +16 -0
  322. data/doc/api/ruby/classes/VPI.src/M000162.html +16 -0
  323. data/doc/api/ruby/classes/VPI.src/M000163.html +16 -0
  324. data/doc/api/ruby/classes/VPI.src/M000164.html +16 -0
  325. data/doc/api/ruby/classes/VPI.src/M000165.html +16 -0
  326. data/doc/api/ruby/classes/VPI.src/M000166.html +16 -0
  327. data/doc/api/ruby/classes/VPI.src/M000167.html +16 -0
  328. data/doc/api/ruby/classes/VPI.src/M000168.html +16 -0
  329. data/doc/api/ruby/classes/VPI.src/M000169.html +16 -0
  330. data/doc/api/ruby/classes/VPI.src/M000170.html +16 -0
  331. data/doc/api/ruby/classes/VPI.src/M000171.html +16 -0
  332. data/doc/api/ruby/classes/VPI.src/M000172.html +16 -0
  333. data/doc/api/ruby/classes/VPI.src/M000173.html +16 -0
  334. data/doc/api/ruby/classes/VPI.src/M000174.html +16 -0
  335. data/doc/api/ruby/classes/VPI.src/M000175.html +16 -0
  336. data/doc/api/ruby/classes/VPI.src/M000176.html +16 -0
  337. data/doc/api/ruby/classes/VPI.src/M000177.html +16 -0
  338. data/doc/api/ruby/classes/VPI.src/M000178.html +16 -0
  339. data/doc/api/ruby/classes/VPI.src/M000179.html +16 -0
  340. data/doc/api/ruby/classes/VPI.src/M000180.html +16 -0
  341. data/doc/api/ruby/classes/VPI.src/M000181.html +16 -0
  342. data/doc/api/ruby/classes/VPI.src/M000182.html +16 -0
  343. data/doc/api/ruby/classes/VPI.src/M000183.html +16 -0
  344. data/doc/api/ruby/classes/VPI.src/M000184.html +16 -0
  345. data/doc/api/ruby/classes/VPI.src/M000185.html +16 -0
  346. data/doc/api/ruby/classes/VPI.src/M000186.html +16 -0
  347. data/doc/api/ruby/classes/VPI.src/M000187.html +16 -0
  348. data/doc/api/ruby/classes/VPI.src/M000188.html +16 -0
  349. data/doc/api/ruby/classes/VPI.src/M000189.html +16 -0
  350. data/doc/api/ruby/classes/VPI.src/M000190.html +16 -0
  351. data/doc/api/ruby/classes/VPI.src/M000191.html +16 -0
  352. data/doc/api/ruby/classes/VPI.src/M000192.html +16 -0
  353. data/doc/api/ruby/classes/VPI.src/M000193.html +16 -0
  354. data/doc/api/ruby/classes/VPI.src/M000194.html +16 -0
  355. data/doc/api/ruby/classes/VPI.src/M000195.html +16 -0
  356. data/doc/api/ruby/classes/VPI.src/M000196.html +16 -0
  357. data/doc/api/ruby/classes/VPI.src/M000197.html +16 -0
  358. data/doc/api/ruby/classes/VPI.src/M000198.html +16 -0
  359. data/doc/api/ruby/classes/VPI.src/M000199.html +16 -0
  360. data/doc/api/ruby/classes/VPI.src/M000200.html +16 -0
  361. data/doc/api/ruby/classes/VPI.src/M000201.html +16 -0
  362. data/doc/api/ruby/classes/VPI.src/M000202.html +16 -0
  363. data/doc/api/ruby/classes/VPI.src/M000203.html +16 -0
  364. data/doc/api/ruby/classes/VPI.src/M000204.html +16 -0
  365. data/doc/api/ruby/classes/VPI.src/M000205.html +16 -0
  366. data/doc/api/ruby/classes/VPI.src/M000206.html +16 -0
  367. data/doc/api/ruby/classes/VPI.src/M000207.html +16 -0
  368. data/doc/api/ruby/classes/VPI.src/M000208.html +16 -0
  369. data/doc/api/ruby/classes/VPI.src/M000209.html +16 -0
  370. data/doc/api/ruby/classes/VPI.src/M000210.html +16 -0
  371. data/doc/api/ruby/classes/VPI.src/M000211.html +16 -0
  372. data/doc/api/ruby/classes/VPI.src/M000212.html +16 -0
  373. data/doc/api/ruby/classes/VPI.src/M000213.html +16 -0
  374. data/doc/api/ruby/classes/VPI.src/M000214.html +16 -0
  375. data/doc/api/ruby/classes/VPI.src/M000215.html +16 -0
  376. data/doc/api/ruby/classes/VPI.src/M000216.html +16 -0
  377. data/doc/api/ruby/classes/VPI.src/M000217.html +16 -0
  378. data/doc/api/ruby/classes/VPI.src/M000218.html +16 -0
  379. data/doc/api/ruby/classes/VPI.src/M000219.html +16 -0
  380. data/doc/api/ruby/classes/VPI.src/M000220.html +16 -0
  381. data/doc/api/ruby/classes/VPI.src/M000221.html +16 -0
  382. data/doc/api/ruby/classes/VPI.src/M000222.html +16 -0
  383. data/doc/api/ruby/classes/VPI.src/M000223.html +16 -0
  384. data/doc/api/ruby/classes/VPI.src/M000224.html +16 -0
  385. data/doc/api/ruby/classes/VPI.src/M000225.html +16 -0
  386. data/doc/api/ruby/classes/VPI.src/M000226.html +16 -0
  387. data/doc/api/ruby/classes/VPI.src/M000227.html +16 -0
  388. data/doc/api/ruby/classes/VPI.src/M000228.html +16 -0
  389. data/doc/api/ruby/classes/VPI.src/M000229.html +16 -0
  390. data/doc/api/ruby/classes/VPI.src/M000230.html +16 -0
  391. data/doc/api/ruby/classes/VPI.src/M000231.html +16 -0
  392. data/doc/api/ruby/classes/VPI.src/M000232.html +16 -0
  393. data/doc/api/ruby/classes/VPI.src/M000233.html +16 -0
  394. data/doc/api/ruby/classes/VPI.src/M000234.html +16 -0
  395. data/doc/api/ruby/classes/VPI.src/M000235.html +16 -0
  396. data/doc/api/ruby/classes/VPI.src/M000236.html +16 -0
  397. data/doc/api/ruby/classes/VPI.src/M000237.html +16 -0
  398. data/doc/api/ruby/classes/VPI.src/M000238.html +16 -0
  399. data/doc/api/ruby/classes/VPI.src/M000239.html +16 -0
  400. data/doc/api/ruby/classes/VPI.src/M000240.html +16 -0
  401. data/doc/api/ruby/classes/VPI.src/M000241.html +16 -0
  402. data/doc/api/ruby/classes/VPI.src/M000242.html +16 -0
  403. data/doc/api/ruby/classes/VPI.src/M000243.html +16 -0
  404. data/doc/api/ruby/classes/VPI.src/M000244.html +16 -0
  405. data/doc/api/ruby/classes/VPI.src/M000245.html +16 -0
  406. data/doc/api/ruby/classes/VPI.src/M000246.html +16 -0
  407. data/doc/api/ruby/classes/VPI.src/M000247.html +16 -0
  408. data/doc/api/ruby/classes/VPI.src/M000248.html +16 -0
  409. data/doc/api/ruby/classes/VPI.src/M000249.html +16 -0
  410. data/doc/api/ruby/classes/VPI.src/M000250.html +16 -0
  411. data/doc/api/ruby/classes/VPI.src/M000251.html +16 -0
  412. data/doc/api/ruby/classes/VPI.src/M000252.html +16 -0
  413. data/doc/api/ruby/classes/VPI.src/M000253.html +16 -0
  414. data/doc/api/ruby/classes/VPI.src/M000254.html +16 -0
  415. data/doc/api/ruby/classes/VPI.src/M000255.html +16 -0
  416. data/doc/api/ruby/classes/VPI.src/M000256.html +16 -0
  417. data/doc/api/ruby/classes/VPI.src/M000257.html +16 -0
  418. data/doc/api/ruby/classes/VPI.src/M000258.html +16 -0
  419. data/doc/api/ruby/classes/VPI.src/M000259.html +16 -0
  420. data/doc/api/ruby/classes/VPI.src/M000260.html +16 -0
  421. data/doc/api/ruby/classes/VPI.src/M000261.html +16 -0
  422. data/doc/api/ruby/classes/VPI.src/M000262.html +16 -0
  423. data/doc/api/ruby/classes/VPI.src/M000263.html +16 -0
  424. data/doc/api/ruby/classes/VPI.src/M000264.html +16 -0
  425. data/doc/api/ruby/classes/VPI.src/M000265.html +16 -0
  426. data/doc/api/ruby/classes/VPI.src/M000266.html +16 -0
  427. data/doc/api/ruby/classes/VPI.src/M000267.html +16 -0
  428. data/doc/api/ruby/classes/VPI.src/M000268.html +16 -0
  429. data/doc/api/ruby/classes/VPI.src/M000269.html +16 -0
  430. data/doc/api/ruby/classes/VPI.src/M000270.html +16 -0
  431. data/doc/api/ruby/classes/VPI.src/M000271.html +16 -0
  432. data/doc/api/ruby/classes/VPI.src/M000272.html +16 -0
  433. data/doc/api/ruby/classes/VPI.src/M000273.html +16 -0
  434. data/doc/api/ruby/classes/VPI.src/M000274.html +16 -0
  435. data/doc/api/ruby/classes/VPI.src/M000275.html +16 -0
  436. data/doc/api/ruby/classes/VPI.src/M000276.html +16 -0
  437. data/doc/api/ruby/classes/VPI.src/M000277.html +16 -0
  438. data/doc/api/ruby/classes/VPI.src/M000278.html +16 -0
  439. data/doc/api/ruby/classes/VPI.src/M000279.html +16 -0
  440. data/doc/api/ruby/classes/VPI.src/M000280.html +16 -0
  441. data/doc/api/ruby/classes/VPI.src/M000281.html +16 -0
  442. data/doc/api/ruby/classes/VPI.src/M000282.html +16 -0
  443. data/doc/api/ruby/classes/VPI.src/M000283.html +16 -0
  444. data/doc/api/ruby/classes/VPI.src/M000284.html +16 -0
  445. data/doc/api/ruby/classes/VPI.src/M000285.html +16 -0
  446. data/doc/api/ruby/classes/VPI.src/M000286.html +16 -0
  447. data/doc/api/ruby/classes/VPI.src/M000287.html +16 -0
  448. data/doc/api/ruby/classes/VPI.src/M000288.html +16 -0
  449. data/doc/api/ruby/classes/VPI.src/M000289.html +16 -0
  450. data/doc/api/ruby/classes/VPI.src/M000290.html +16 -0
  451. data/doc/api/ruby/classes/VPI.src/M000291.html +16 -0
  452. data/doc/api/ruby/classes/VPI.src/M000292.html +16 -0
  453. data/doc/api/ruby/classes/VPI.src/M000293.html +16 -0
  454. data/doc/api/ruby/classes/VPI.src/M000294.html +16 -0
  455. data/doc/api/ruby/classes/VPI.src/M000295.html +16 -0
  456. data/doc/api/ruby/classes/VPI.src/M000296.html +16 -0
  457. data/doc/api/ruby/classes/VPI.src/M000297.html +16 -0
  458. data/doc/api/ruby/classes/VPI.src/M000298.html +16 -0
  459. data/doc/api/ruby/classes/VPI.src/M000299.html +16 -0
  460. data/doc/api/ruby/classes/VPI.src/M000300.html +16 -0
  461. data/doc/api/ruby/classes/VPI.src/M000301.html +16 -0
  462. data/doc/api/ruby/classes/VPI.src/M000302.html +16 -0
  463. data/doc/api/ruby/classes/VPI.src/M000303.html +16 -0
  464. data/doc/api/ruby/classes/VPI.src/M000304.html +16 -0
  465. data/doc/api/ruby/classes/VPI.src/M000305.html +16 -0
  466. data/doc/api/ruby/classes/VPI.src/M000306.html +16 -0
  467. data/doc/api/ruby/classes/VPI.src/M000307.html +16 -0
  468. data/doc/api/ruby/classes/VPI.src/M000308.html +16 -0
  469. data/doc/api/ruby/classes/VPI.src/M000309.html +16 -0
  470. data/doc/api/ruby/classes/VPI.src/M000310.html +16 -0
  471. data/doc/api/ruby/classes/VPI.src/M000311.html +16 -0
  472. data/doc/api/ruby/classes/VPI.src/M000312.html +16 -0
  473. data/doc/api/ruby/classes/VPI.src/M000313.html +16 -0
  474. data/doc/api/ruby/classes/VPI.src/M000314.html +16 -0
  475. data/doc/api/ruby/classes/VPI.src/M000315.html +16 -0
  476. data/doc/api/ruby/classes/VPI.src/M000316.html +16 -0
  477. data/doc/api/ruby/classes/VPI.src/M000317.html +16 -0
  478. data/doc/api/ruby/classes/VPI.src/M000318.html +16 -0
  479. data/doc/api/ruby/classes/VPI.src/M000319.html +16 -0
  480. data/doc/api/ruby/classes/VPI.src/M000320.html +16 -0
  481. data/doc/api/ruby/classes/VPI.src/M000321.html +16 -0
  482. data/doc/api/ruby/classes/VPI.src/M000322.html +16 -0
  483. data/doc/api/ruby/classes/VPI.src/M000323.html +16 -0
  484. data/doc/api/ruby/classes/VPI.src/M000324.html +16 -0
  485. data/doc/api/ruby/classes/VPI.src/M000325.html +16 -0
  486. data/doc/api/ruby/classes/VPI.src/M000326.html +16 -0
  487. data/doc/api/ruby/classes/VPI.src/M000327.html +16 -0
  488. data/doc/api/ruby/classes/VPI.src/M000328.html +16 -0
  489. data/doc/api/ruby/classes/VPI.src/M000329.html +16 -0
  490. data/doc/api/ruby/classes/VPI.src/M000330.html +16 -0
  491. data/doc/api/ruby/classes/VPI.src/M000331.html +16 -0
  492. data/doc/api/ruby/classes/VPI.src/M000332.html +16 -0
  493. data/doc/api/ruby/classes/VPI.src/M000333.html +16 -0
  494. data/doc/api/ruby/classes/VPI.src/M000334.html +16 -0
  495. data/doc/api/ruby/classes/VPI.src/M000335.html +16 -0
  496. data/doc/api/ruby/classes/VPI.src/M000336.html +16 -0
  497. data/doc/api/ruby/classes/VPI.src/M000337.html +16 -0
  498. data/doc/api/ruby/classes/VPI.src/M000338.html +16 -0
  499. data/doc/api/ruby/classes/VPI.src/M000339.html +16 -0
  500. data/doc/api/ruby/classes/VPI.src/M000340.html +16 -0
  501. data/doc/api/ruby/classes/VPI.src/M000341.html +16 -0
  502. data/doc/api/ruby/classes/VPI.src/M000342.html +16 -0
  503. data/doc/api/ruby/classes/VPI.src/M000343.html +16 -0
  504. data/doc/api/ruby/classes/VPI.src/M000344.html +16 -0
  505. data/doc/api/ruby/classes/VPI.src/M000345.html +16 -0
  506. data/doc/api/ruby/classes/VPI.src/M000346.html +16 -0
  507. data/doc/api/ruby/classes/VPI.src/M000347.html +16 -0
  508. data/doc/api/ruby/classes/VPI.src/M000348.html +16 -0
  509. data/doc/api/ruby/classes/VPI.src/M000349.html +16 -0
  510. data/doc/api/ruby/classes/VPI.src/M000350.html +16 -0
  511. data/doc/api/ruby/classes/VPI.src/M000351.html +16 -0
  512. data/doc/api/ruby/classes/VPI.src/M000352.html +16 -0
  513. data/doc/api/ruby/classes/VPI.src/M000353.html +16 -0
  514. data/doc/api/ruby/classes/VPI.src/M000354.html +16 -0
  515. data/doc/api/ruby/classes/VPI.src/M000355.html +16 -0
  516. data/doc/api/ruby/classes/VPI.src/M000356.html +16 -0
  517. data/doc/api/ruby/classes/VPI.src/M000357.html +16 -0
  518. data/doc/api/ruby/classes/VPI.src/M000358.html +16 -0
  519. data/doc/api/ruby/classes/VPI.src/M000359.html +16 -0
  520. data/doc/api/ruby/classes/VPI.src/M000360.html +16 -0
  521. data/doc/api/ruby/classes/VPI.src/M000361.html +16 -0
  522. data/doc/api/ruby/classes/VPI.src/M000362.html +16 -0
  523. data/doc/api/ruby/classes/VPI.src/M000363.html +16 -0
  524. data/doc/api/ruby/classes/VPI.src/M000364.html +16 -0
  525. data/doc/api/ruby/classes/VPI.src/M000365.html +16 -0
  526. data/doc/api/ruby/classes/VPI.src/M000366.html +16 -0
  527. data/doc/api/ruby/classes/VPI.src/M000367.html +16 -0
  528. data/doc/api/ruby/classes/VPI.src/M000368.html +16 -0
  529. data/doc/api/ruby/classes/VPI.src/M000369.html +16 -0
  530. data/doc/api/ruby/classes/VPI.src/M000370.html +16 -0
  531. data/doc/api/ruby/classes/VPI.src/M000371.html +16 -0
  532. data/doc/api/ruby/classes/VPI.src/M000372.html +16 -0
  533. data/doc/api/ruby/classes/VPI.src/M000373.html +16 -0
  534. data/doc/api/ruby/classes/VPI.src/M000374.html +16 -0
  535. data/doc/api/ruby/classes/VPI.src/M000375.html +16 -0
  536. data/doc/api/ruby/classes/VPI.src/M000376.html +16 -0
  537. data/doc/api/ruby/classes/VPI.src/M000377.html +16 -0
  538. data/doc/api/ruby/classes/VPI.src/M000378.html +16 -0
  539. data/doc/api/ruby/classes/VPI.src/M000379.html +16 -0
  540. data/doc/api/ruby/classes/VPI.src/M000380.html +16 -0
  541. data/doc/api/ruby/classes/VPI.src/M000381.html +16 -0
  542. data/doc/api/ruby/classes/VPI.src/M000382.html +16 -0
  543. data/doc/api/ruby/classes/VPI.src/M000383.html +16 -0
  544. data/doc/api/ruby/classes/VPI.src/M000384.html +16 -0
  545. data/doc/api/ruby/classes/VPI.src/M000385.html +16 -0
  546. data/doc/api/ruby/classes/VPI.src/M000386.html +16 -0
  547. data/doc/api/ruby/classes/VPI.src/M000387.html +16 -0
  548. data/doc/api/ruby/classes/VPI.src/M000388.html +16 -0
  549. data/doc/api/ruby/classes/VPI.src/M000389.html +16 -0
  550. data/doc/api/ruby/classes/VPI.src/M000390.html +16 -0
  551. data/doc/api/ruby/classes/VPI.src/M000391.html +16 -0
  552. data/doc/api/ruby/classes/VPI.src/M000392.html +16 -0
  553. data/doc/api/ruby/classes/VPI.src/M000393.html +16 -0
  554. data/doc/api/ruby/classes/VPI.src/M000394.html +16 -0
  555. data/doc/api/ruby/classes/VPI.src/M000395.html +16 -0
  556. data/doc/api/ruby/classes/VPI.src/M000396.html +16 -0
  557. data/doc/api/ruby/classes/VPI.src/M000397.html +16 -0
  558. data/doc/api/ruby/classes/VPI.src/M000398.html +16 -0
  559. data/doc/api/ruby/classes/VPI.src/M000399.html +16 -0
  560. data/doc/api/ruby/classes/VPI.src/M000400.html +16 -0
  561. data/doc/api/ruby/classes/VPI.src/M000401.html +16 -0
  562. data/doc/api/ruby/classes/VPI.src/M000402.html +16 -0
  563. data/doc/api/ruby/classes/VPI.src/M000403.html +16 -0
  564. data/doc/api/ruby/classes/VPI.src/M000404.html +16 -0
  565. data/doc/api/ruby/classes/VPI.src/M000405.html +16 -0
  566. data/doc/api/ruby/classes/VPI.src/M000406.html +16 -0
  567. data/doc/api/ruby/classes/VPI.src/M000407.html +16 -0
  568. data/doc/api/ruby/classes/VPI.src/M000408.html +16 -0
  569. data/doc/api/ruby/classes/VPI.src/M000409.html +16 -0
  570. data/doc/api/ruby/classes/VPI.src/M000410.html +16 -0
  571. data/doc/api/ruby/classes/VPI.src/M000411.html +16 -0
  572. data/doc/api/ruby/classes/VPI.src/M000412.html +16 -0
  573. data/doc/api/ruby/classes/VPI.src/M000413.html +16 -0
  574. data/doc/api/ruby/classes/VPI.src/M000414.html +16 -0
  575. data/doc/api/ruby/classes/VPI.src/M000415.html +16 -0
  576. data/doc/api/ruby/classes/VPI.src/M000416.html +16 -0
  577. data/doc/api/ruby/classes/VPI.src/M000417.html +16 -0
  578. data/doc/api/ruby/classes/VPI.src/M000418.html +16 -0
  579. data/doc/api/ruby/classes/VPI.src/M000419.html +16 -0
  580. data/doc/api/ruby/classes/VPI.src/M000420.html +16 -0
  581. data/doc/api/ruby/classes/VPI.src/M000421.html +16 -0
  582. data/doc/api/ruby/classes/VPI.src/M000422.html +16 -0
  583. data/doc/api/ruby/classes/VPI.src/M000423.html +16 -0
  584. data/doc/api/ruby/classes/VPI.src/M000424.html +16 -0
  585. data/doc/api/ruby/classes/VPI.src/M000425.html +16 -0
  586. data/doc/api/ruby/classes/VPI.src/M000426.html +16 -0
  587. data/doc/api/ruby/classes/VPI.src/M000427.html +16 -0
  588. data/doc/api/ruby/classes/VPI.src/M000428.html +16 -0
  589. data/doc/api/ruby/classes/VPI.src/M000429.html +16 -0
  590. data/doc/api/ruby/classes/VPI.src/M000430.html +16 -0
  591. data/{ref → doc/api}/ruby/classes/VerilogParser/Module/Port.html +17 -17
  592. data/doc/api/ruby/classes/VerilogParser/Module/Port.src/M000005.html +23 -0
  593. data/doc/api/ruby/classes/VerilogParser/Module/Port.src/M000006.html +18 -0
  594. data/doc/api/ruby/classes/VerilogParser/Module/Port.src/M000007.html +18 -0
  595. data/{ref → doc/api}/ruby/classes/VerilogParser/Module.html +7 -7
  596. data/doc/api/ruby/classes/VerilogParser/Module.src/M000004.html +29 -0
  597. data/{ref → doc/api}/ruby/classes/VerilogParser.html +7 -7
  598. data/doc/api/ruby/classes/VerilogParser.src/M000003.html +26 -0
  599. data/doc/api/ruby/created.rid +1 -0
  600. data/{ref → doc/api}/ruby/files/bin/convert_rb.html +4 -4
  601. data/{ref → doc/api}/ruby/files/bin/generate_rb.html +10 -6
  602. data/doc/api/ruby/files/bin/ruby-vpi.html +169 -0
  603. data/doc/api/ruby/files/bin/ruby-vpi.src/M000001.html +35 -0
  604. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core/callback_rb.html +3 -3
  605. data/doc/api/ruby/files/lib/ruby-vpi/core/edge-methods_rb.html +107 -0
  606. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core/edge_rb.html +3 -3
  607. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core/handle_rb.html +10 -3
  608. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core/scheduler_rb.html +3 -3
  609. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core/struct_rb.html +2 -2
  610. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/core_rb.html +3 -3
  611. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/erb_rb.html +2 -2
  612. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/float_rb.html +2 -2
  613. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/integer_rb.html +2 -2
  614. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/rake_rb.html +3 -3
  615. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/rcov_rb.html +3 -4
  616. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/rdoc_rb.html +2 -2
  617. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +9 -10
  618. data/doc/api/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000002.html +17 -0
  619. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +3 -3
  620. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/runner_rb.html +3 -3
  621. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/util_rb.html +2 -2
  622. data/{ref → doc/api}/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +2 -2
  623. data/{ref → doc/api}/ruby/files/lib/ruby-vpi_rb.html +3 -3
  624. data/doc/api/ruby/files/ruby-vpi-dynamic_rb.html +110 -0
  625. data/{ref → doc/api}/ruby/fr_class_index.html +3 -2
  626. data/{ref → doc/api}/ruby/fr_file_index.html +5 -2
  627. data/doc/api/ruby/fr_method_index.html +567 -0
  628. data/{ref → doc/api}/ruby/index.html +5 -5
  629. data/{ref → doc/api}/ruby/rdoc-style.css +0 -0
  630. data/doc/{manual.doc → guide.erb} +379 -121
  631. data/doc/guide.html +3524 -0
  632. data/examples/counter/RSpec/counter_design.rb +7 -7
  633. data/examples/counter/RSpec/counter_loader.rb +1 -0
  634. data/examples/counter/RSpec/counter_proto.rb +8 -6
  635. data/examples/counter/RSpec/counter_runner.rake +9 -4
  636. data/examples/counter/RSpec/counter_spec.rb +13 -13
  637. data/examples/counter/xUnit/counter_design.rb +7 -6
  638. data/examples/counter/xUnit/counter_loader.rb +1 -0
  639. data/examples/counter/xUnit/counter_proto.rb +8 -6
  640. data/examples/counter/xUnit/counter_runner.rake +9 -4
  641. data/examples/counter/xUnit/counter_spec.rb +15 -15
  642. data/examples/pipelined_alu/hw5_unit_design.rb +11 -10
  643. data/examples/pipelined_alu/hw5_unit_loader.rb +1 -0
  644. data/examples/pipelined_alu/hw5_unit_proto.rb +4 -2
  645. data/examples/pipelined_alu/hw5_unit_runner.rake +9 -4
  646. data/examples/pipelined_alu/hw5_unit_spec.rb +18 -18
  647. data/examples/register_file/register_file_design.rb +2 -2
  648. data/examples/register_file/register_file_loader.rb +1 -0
  649. data/examples/register_file/register_file_proto.rb +15 -8
  650. data/examples/register_file/register_file_runner.rake +9 -4
  651. data/examples/register_file/register_file_spec.rb +15 -15
  652. data/ext/main.c +4 -4
  653. data/lib/ruby-vpi/core/edge-methods.rb +32 -0
  654. data/lib/ruby-vpi/core/edge.rb +8 -43
  655. data/lib/ruby-vpi/core/handle.rb +127 -91
  656. data/lib/ruby-vpi/core/scheduler.rb +14 -15
  657. data/lib/ruby-vpi/core.rb +1 -1
  658. data/lib/ruby-vpi/rake.rb +5 -7
  659. data/lib/ruby-vpi/rcov.rb +2 -7
  660. data/lib/ruby-vpi/runner.rb +16 -11
  661. data/lib/ruby-vpi/runner_boot_loader.rb +24 -60
  662. data/lib/ruby-vpi/runner_proxy.rb +2 -6
  663. data/lib/ruby-vpi.rb +56 -14
  664. metadata +809 -368
  665. data/doc/README +0 -9
  666. data/doc/Rakefile +0 -92
  667. data/doc/common.css +0 -108
  668. data/doc/common.inc +0 -14
  669. data/doc/common.tpl +0 -90
  670. data/doc/history.doc +0 -17
  671. data/doc/history.html +0 -2694
  672. data/doc/history.inc +0 -1077
  673. data/doc/history.rb +0 -22
  674. data/doc/history.yaml +0 -1409
  675. data/doc/images/feed-icon-28x28.png +0 -0
  676. data/doc/images/tango/LICENSE +0 -67
  677. data/doc/images/tango/caution.png +0 -0
  678. data/doc/images/tango/caution.svg +0 -290
  679. data/doc/images/tango/home.png +0 -0
  680. data/doc/images/tango/home.svg +0 -386
  681. data/doc/images/tango/important.png +0 -0
  682. data/doc/images/tango/important.svg +0 -163
  683. data/doc/images/tango/next.png +0 -0
  684. data/doc/images/tango/next.svg +0 -191
  685. data/doc/images/tango/note.png +0 -0
  686. data/doc/images/tango/note.svg +0 -483
  687. data/doc/images/tango/prev.png +0 -0
  688. data/doc/images/tango/prev.svg +0 -852
  689. data/doc/images/tango/tip.png +0 -0
  690. data/doc/images/tango/tip.svg +0 -1145
  691. data/doc/images/tango/up.png +0 -0
  692. data/doc/images/tango/up.svg +0 -195
  693. data/doc/images/tango/warning.png +0 -0
  694. data/doc/images/tango/warning.svg +0 -334
  695. data/doc/intro.inc +0 -215
  696. data/doc/lib/doc_format.rb +0 -137
  697. data/doc/lib/doc_proxy.rb +0 -562
  698. data/doc/lib/erb_content.rb +0 -55
  699. data/doc/lib/erb_proxy.rb +0 -42
  700. data/doc/manual.html +0 -3061
  701. data/doc/memo.doc +0 -66
  702. data/doc/memo.html +0 -210
  703. data/doc/print.css +0 -69
  704. data/doc/readme.doc +0 -10
  705. data/doc/readme.html +0 -515
  706. data/doc/rss.erb +0 -29
  707. data/doc/rss.xml +0 -186
  708. data/doc/screen.css +0 -146
  709. data/doc/spacing.css +0 -57
  710. data/index.html +0 -2
  711. data/ref/c/annotated.html +0 -34
  712. data/ref/c/functions.html +0 -182
  713. data/ref/c/functions_vars.html +0 -182
  714. data/ref/c/globals_0x73.html +0 -73
  715. data/ref/c/globals_type.html +0 -88
  716. data/ref/c/structt__vpi__value.html +0 -204
  717. data/ref/ruby/classes/ERB.src/M000024.html +0 -29
  718. data/ref/ruby/classes/FileUtils.src/M000025.html +0 -18
  719. data/ref/ruby/classes/FileUtils.src/M000026.html +0 -18
  720. data/ref/ruby/classes/Float.src/M000019.html +0 -19
  721. data/ref/ruby/classes/Integer.src/M000007.html +0 -25
  722. data/ref/ruby/classes/Integer.src/M000008.html +0 -18
  723. data/ref/ruby/classes/Integer.src/M000009.html +0 -18
  724. data/ref/ruby/classes/Integer.src/M000010.html +0 -18
  725. data/ref/ruby/classes/Integer.src/M000011.html +0 -18
  726. data/ref/ruby/classes/Integer.src/M000012.html +0 -18
  727. data/ref/ruby/classes/Integer.src/M000015.html +0 -25
  728. data/ref/ruby/classes/Integer.src/M000016.html +0 -31
  729. data/ref/ruby/classes/Integer.src/M000017.html +0 -25
  730. data/ref/ruby/classes/Integer.src/M000018.html +0 -30
  731. data/ref/ruby/classes/RDoc.src/M000081.html +0 -40
  732. data/ref/ruby/classes/String.src/M000020.html +0 -36
  733. data/ref/ruby/classes/String.src/M000021.html +0 -41
  734. data/ref/ruby/classes/String.src/M000022.html +0 -18
  735. data/ref/ruby/classes/String.src/M000023.html +0 -18
  736. data/ref/ruby/classes/VPI/Handle.html +0 -898
  737. data/ref/ruby/classes/VPI/Handle.src/M000037.html +0 -18
  738. data/ref/ruby/classes/VPI/Handle.src/M000038.html +0 -21
  739. data/ref/ruby/classes/VPI/Handle.src/M000039.html +0 -18
  740. data/ref/ruby/classes/VPI/Handle.src/M000040.html +0 -18
  741. data/ref/ruby/classes/VPI/Handle.src/M000045.html +0 -18
  742. data/ref/ruby/classes/VPI/Handle.src/M000046.html +0 -18
  743. data/ref/ruby/classes/VPI/Handle.src/M000057.html +0 -18
  744. data/ref/ruby/classes/VPI/Handle.src/M000058.html +0 -18
  745. data/ref/ruby/classes/VPI/Handle.src/M000061.html +0 -18
  746. data/ref/ruby/classes/VPI/Handle.src/M000062.html +0 -18
  747. data/ref/ruby/classes/VPI/Handle.src/M000065.html +0 -24
  748. data/ref/ruby/classes/VPI/Handle.src/M000067.html +0 -21
  749. data/ref/ruby/classes/VPI/Handle.src/M000068.html +0 -28
  750. data/ref/ruby/classes/VPI/Handle.src/M000069.html +0 -50
  751. data/ref/ruby/classes/VPI/Handle.src/M000070.html +0 -19
  752. data/ref/ruby/classes/VPI/Handle.src/M000071.html +0 -19
  753. data/ref/ruby/classes/VPI/Handle.src/M000072.html +0 -18
  754. data/ref/ruby/classes/VPI/Handle.src/M000073.html +0 -30
  755. data/ref/ruby/classes/VPI/Handle.src/M000075.html +0 -18
  756. data/ref/ruby/classes/VPI/Handle.src/M000076.html +0 -40
  757. data/ref/ruby/classes/VPI/Handle.src/M000077.html +0 -31
  758. data/ref/ruby/classes/VPI/S_vpi_time.src/M000078.html +0 -18
  759. data/ref/ruby/classes/VPI/S_vpi_time.src/M000079.html +0 -19
  760. data/ref/ruby/classes/VPI/S_vpi_value.src/M000034.html +0 -35
  761. data/ref/ruby/classes/VPI/S_vpi_value.src/M000035.html +0 -42
  762. data/ref/ruby/classes/VPI/S_vpi_value.src/M000036.html +0 -42
  763. data/ref/ruby/classes/VPI.html +0 -356
  764. data/ref/ruby/classes/VPI.src/M000027.html +0 -19
  765. data/ref/ruby/classes/VPI.src/M000028.html +0 -18
  766. data/ref/ruby/classes/VPI.src/M000029.html +0 -19
  767. data/ref/ruby/classes/VPI.src/M000031.html +0 -25
  768. data/ref/ruby/classes/VPI.src/M000032.html +0 -26
  769. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000004.html +0 -23
  770. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000005.html +0 -18
  771. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000006.html +0 -18
  772. data/ref/ruby/classes/VerilogParser/Module.src/M000003.html +0 -29
  773. data/ref/ruby/classes/VerilogParser.src/M000002.html +0 -26
  774. data/ref/ruby/created.rid +0 -1
  775. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000001.html +0 -17
  776. data/ref/ruby/fr_method_index.html +0 -107
@@ -1,15 +1,15 @@
1
-
2
1
  # Simulates the design under test for one clock cycle.
3
- def cycle!
4
- clock.high!
2
+ def DUT.cycle!
3
+ clock.t!
5
4
  advance_time
6
- clock.low!
5
+
6
+ clock.f!
7
7
  advance_time
8
8
  end
9
9
 
10
10
  # Brings the design under test into a blank state.
11
- def reset!
12
- reset.high!
11
+ def DUT.reset!
12
+ reset.t!
13
13
  cycle!
14
- reset.low!
14
+ reset.f!
15
15
  end
@@ -0,0 +1 @@
1
+ RubyVPI.load_test("counter", "counter_design.rb", "counter_proto.rb", "counter_spec.rb")
@@ -1,9 +1,11 @@
1
- always do
2
- wait until clock.posedge?
1
+ if RubyVPI::USE_PROTOTYPE
2
+ always do
3
+ wait until DUT.clock.posedge?
3
4
 
4
- if reset.high?
5
- count.intVal = 0
6
- else
7
- count.intVal += 1
5
+ if DUT.reset.t?
6
+ DUT.count.intVal = 0
7
+ else
8
+ DUT.count.intVal += 1
9
+ end
8
10
  end
9
11
  end
@@ -1,3 +1,8 @@
1
+ # Path to a Ruby script that will be invoked before the Verilog
2
+ # simulation begins. This script shall then load the appropriate
3
+ # tests to exercise the desired designs in the Verilog simulation.
4
+ TEST_LOADER = "counter_loader.rb"
5
+
1
6
  # Array of paths and shell globs (see the Dir.glob method's documentation for
2
7
  # details) to source files and directories that contain source files. These
3
8
  # source files will be loaded by the simulator before the simulation begins.
@@ -20,14 +25,14 @@ SIMULATOR_ARGUMENTS = {
20
25
  # Icarus Verilog
21
26
  :ivl => "",
22
27
 
28
+ # Cadence NC-Sim
29
+ :ncsim => "",
30
+
23
31
  # Synopsys VCS
24
32
  :vcs => "",
25
33
 
26
34
  # Mentor Modelsim
27
- :vsim => "",
28
-
29
- # Cadence NC-Sim
30
- :ncsim => "",
35
+ :vsim => "counter",
31
36
 
32
37
  }
33
38
 
@@ -1,39 +1,39 @@
1
1
  require 'spec'
2
2
 
3
3
  # lowest upper bound of counter's value
4
- LIMIT = 2 ** Counter::Size
4
+ LIMIT = 2 ** DUT.Size.intVal
5
5
 
6
6
  # maximum allowed value for a counter
7
7
  MAX = LIMIT - 1
8
8
 
9
- describe "A resetted counter's value" do
9
+ describe "A #{DUT.name} after being reset" do
10
10
  setup do
11
- Counter.reset!
11
+ DUT.reset! # reset the counter
12
12
  end
13
13
 
14
14
  it "should be zero" do
15
- Counter.count.intVal.should == 0
15
+ DUT.count.intVal.should == 0
16
16
  end
17
17
 
18
- it "should increment upon each rising clock edge" do
18
+ it "should increment upon each subsequent posedge" do
19
19
  LIMIT.times do |i|
20
- Counter.count.intVal.should == i
21
- Counter.cycle! # increment the counter
20
+ DUT.count.intVal.should == i
21
+ DUT.cycle! # increment the counter
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
- describe "A counter with the maximum value" do
26
+ describe "A #{DUT.name} with the maximum value" do
27
27
  setup do
28
- Counter.reset!
28
+ DUT.reset! # reset the counter
29
29
 
30
30
  # increment the counter to maximum value
31
- MAX.times { Counter.cycle! }
32
- Counter.count.intVal.should == MAX
31
+ MAX.times { DUT.cycle! }
32
+ DUT.count.intVal.should == MAX
33
33
  end
34
34
 
35
35
  it "should overflow upon increment" do
36
- Counter.cycle! # increment the counter
37
- Counter.count.intVal.should == 0
36
+ DUT.cycle! # increment the counter
37
+ DUT.count.intVal.should == 0
38
38
  end
39
39
  end
@@ -1,15 +1,16 @@
1
1
 
2
2
  # Simulates the design under test for one clock cycle.
3
- def cycle!
4
- clock.high!
3
+ def DUT.cycle!
4
+ clock.t!
5
5
  advance_time
6
- clock.low!
6
+
7
+ clock.f!
7
8
  advance_time
8
9
  end
9
10
 
10
11
  # Brings the design under test into a blank state.
11
- def reset!
12
- reset.high!
12
+ def DUT.reset!
13
+ reset.t!
13
14
  cycle!
14
- reset.low!
15
+ reset.f!
15
16
  end
@@ -0,0 +1 @@
1
+ RubyVPI.load_test("counter", "counter_design.rb", "counter_proto.rb", "counter_spec.rb")
@@ -1,9 +1,11 @@
1
- always do
2
- wait until clock.posedge?
1
+ if RubyVPI::USE_PROTOTYPE
2
+ always do
3
+ wait until DUT.clock.posedge?
3
4
 
4
- if reset.high?
5
- count.intVal = 0
6
- else
7
- count.intVal += 1
5
+ if DUT.reset.t?
6
+ DUT.count.intVal = 0
7
+ else
8
+ DUT.count.intVal += 1
9
+ end
8
10
  end
9
11
  end
@@ -1,3 +1,8 @@
1
+ # Path to a Ruby script that will be invoked before the Verilog
2
+ # simulation begins. This script shall then load the appropriate
3
+ # tests to exercise the desired designs in the Verilog simulation.
4
+ TEST_LOADER = "counter_loader.rb"
5
+
1
6
  # Array of paths and shell globs (see the Dir.glob method's documentation for
2
7
  # details) to source files and directories that contain source files. These
3
8
  # source files will be loaded by the simulator before the simulation begins.
@@ -20,14 +25,14 @@ SIMULATOR_ARGUMENTS = {
20
25
  # Icarus Verilog
21
26
  :ivl => "",
22
27
 
28
+ # Cadence NC-Sim
29
+ :ncsim => "",
30
+
23
31
  # Synopsys VCS
24
32
  :vcs => "",
25
33
 
26
34
  # Mentor Modelsim
27
- :vsim => "",
28
-
29
- # Cadence NC-Sim
30
- :ncsim => "",
35
+ :vsim => "counter",
31
36
 
32
37
  }
33
38
 
@@ -1,39 +1,39 @@
1
1
  require 'test/unit'
2
2
 
3
3
  # lowest upper bound of counter's value
4
- LIMIT = 2 ** Counter::Size
4
+ LIMIT = 2 ** DUT.Size.intVal
5
5
 
6
6
  # maximum allowed value for a counter
7
7
  MAX = LIMIT - 1
8
8
 
9
- class ResettedCounterValue < Test::Unit::TestCase
9
+ class A_counter_after_being_reset < Test::Unit::TestCase
10
10
  def setup
11
- Counter.reset!
11
+ DUT.reset! # reset the counter
12
12
  end
13
13
 
14
- def test_zero
15
- assert_equal( 0, Counter.count.intVal )
14
+ def test_should_be_zero
15
+ assert_equal( 0, DUT.count.intVal )
16
16
  end
17
17
 
18
- def test_increment
18
+ def test_should_increment_upon_each_subsequent_posedge
19
19
  LIMIT.times do |i|
20
- assert_equal( i, Counter.count.intVal )
21
- Counter.cycle! # increment the counter
20
+ assert_equal( i, DUT.count.intVal )
21
+ DUT.cycle! # increment the counter
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
- class MaximumCounterValue < Test::Unit::TestCase
26
+ class A_counter_with_the_maximum_value < Test::Unit::TestCase
27
27
  def setup
28
- Counter.reset!
28
+ DUT.reset! # reset the counter
29
29
 
30
30
  # increment the counter to maximum value
31
- MAX.times { Counter.cycle! }
32
- assert_equal( MAX, Counter.count.intVal )
31
+ MAX.times { DUT.cycle! }
32
+ assert_equal( MAX, DUT.count.intVal )
33
33
  end
34
34
 
35
- def test_overflow
36
- Counter.cycle! # increment the counter
37
- assert_equal( 0, Counter.count.intVal )
35
+ def test_should_overflow_upon_increment
36
+ DUT.cycle! # increment the counter
37
+ assert_equal( 0, DUT.count.intVal )
38
38
  end
39
39
  end
@@ -1,19 +1,20 @@
1
1
  # Simulates the design under test for one clock cycle.
2
- def cycle!
3
- clk.high!
2
+ def DUT.cycle!
3
+ clk.t!
4
4
  advance_time
5
- clk.low!
5
+
6
+ clk.f!
6
7
  advance_time
7
8
  end
8
9
 
9
10
  # Brings the design under test into a blank state.
10
- def reset!
11
- reset.high!
11
+ def DUT.reset!
12
+ reset.t!
12
13
  5.times { cycle! }
13
- reset.low!
14
+ reset.f!
14
15
  end
15
16
 
16
- OPERATIONS = (OP_NOP .. OP_MULT).to_a
17
+ OPERATIONS = (DUT.OP_NOP.intVal .. DUT.OP_MULT.intVal).to_a
17
18
 
18
19
  # Represents an ALU operation.
19
20
  class Operation
@@ -31,13 +32,13 @@ class Operation
31
32
  # Computes the result of this operation.
32
33
  def compute
33
34
  case @type
34
- when OP_ADD
35
+ when DUT.OP_ADD.intVal
35
36
  @arg1 + @arg2
36
37
 
37
- when OP_SUB
38
+ when DUT.OP_SUB.intVal
38
39
  @arg1 - @arg2
39
40
 
40
- when OP_MULT
41
+ when DUT.OP_MULT.intVal
41
42
  @arg1 * @arg2
42
43
  end
43
44
  end
@@ -0,0 +1 @@
1
+ RubyVPI.load_test("hw5_unit", "hw5_unit_design.rb", "hw5_unit_proto.rb", "hw5_unit_spec.rb")
@@ -1,2 +1,4 @@
1
- warn "Woe is me! Nobody implemented a Ruby prototype for this design. :-("
2
- exit
1
+ if RubyVPI::USE_PROTOTYPE
2
+ warn "Woe is me! Nobody implemented a Ruby prototype for this design. :-("
3
+ exit
4
+ end
@@ -1,3 +1,8 @@
1
+ # Path to a Ruby script that will be invoked before the Verilog
2
+ # simulation begins. This script shall then load the appropriate
3
+ # tests to exercise the desired designs in the Verilog simulation.
4
+ TEST_LOADER = "hw5_unit_loader.rb"
5
+
1
6
  # Array of paths and shell globs (see the Dir.glob method's documentation for
2
7
  # details) to source files and directories that contain source files. These
3
8
  # source files will be loaded by the simulator before the simulation begins.
@@ -19,14 +24,14 @@ SIMULATOR_ARGUMENTS = {
19
24
  # Icarus Verilog
20
25
  :ivl => "",
21
26
 
27
+ # Cadence NC-Sim
28
+ :ncsim => "",
29
+
22
30
  # Synopsys VCS
23
31
  :vcs => "",
24
32
 
25
33
  # Mentor Modelsim
26
- :vsim => "",
27
-
28
- # Cadence NC-Sim
29
- :ncsim => "",
34
+ :vsim => "hw5_unit",
30
35
 
31
36
  }
32
37
 
@@ -1,19 +1,19 @@
1
1
  require 'test/unit'
2
2
  require 'int_gen'
3
3
 
4
- class Hw5_unit_spec < Test::Unit::TestCase
4
+ class A_hw5_unit_when_reset < Test::Unit::TestCase
5
5
  # Number of input sequences to test.
6
6
  NUM_TESTS = 4000
7
7
 
8
8
  # Bitmask capable of capturing ALU result.
9
- ALU_RESULT_MASK = (2 ** Hw5_unit::WIDTH) - 1
9
+ ALU_RESULT_MASK = (2 ** DUT.WIDTH.intVal) - 1
10
10
 
11
11
  # Upper limit of values allowed for an operation's tag.
12
- OPERATION_TAG_LIMIT = 2 ** Hw5_unit::DATABITS
12
+ OPERATION_TAG_LIMIT = 2 ** DUT.DATABITS.intVal
13
13
 
14
14
  def setup
15
- Hw5_unit.reset!
16
- @intGen = IntegerGenerator.new(Hw5_unit::WIDTH)
15
+ DUT.reset!
16
+ @intGen = IntegerGenerator.new(DUT.WIDTH.intVal)
17
17
  end
18
18
 
19
19
  def test_pipeline
@@ -23,37 +23,37 @@ class Hw5_unit_spec < Test::Unit::TestCase
23
23
  until numVerified == NUM_TESTS
24
24
  # issue a new operation
25
25
  if numIssued < NUM_TESTS
26
- op = Hw5_unit::Operation.new(
27
- Hw5_unit::OPERATIONS[rand(Hw5_unit::OPERATIONS.size)],
26
+ op = Operation.new(
27
+ OPERATIONS[rand(OPERATIONS.size)],
28
28
  numIssued % OPERATION_TAG_LIMIT,
29
29
  @intGen.random,
30
30
  @intGen.random
31
31
  )
32
32
 
33
- Hw5_unit.a.intVal = op.arg1
34
- Hw5_unit.b.intVal = op.arg2
35
- Hw5_unit.in_op.intVal = op.type
36
- Hw5_unit.in_databits.intVal = op.tag
33
+ DUT.a.intVal = op.arg1
34
+ DUT.b.intVal = op.arg2
35
+ DUT.in_op.intVal = op.type
36
+ DUT.in_databits.intVal = op.tag
37
37
 
38
38
  issuedOps << op
39
39
  numIssued += 1
40
40
  end
41
41
 
42
- Hw5_unit.cycle!
42
+ DUT.cycle!
43
43
 
44
44
  # verify result of finished operation
45
- unless Hw5_unit.out_databits.x?
46
- finishedOp = Hw5_unit::Operation.new(
47
- Hw5_unit.out_op.intVal,
48
- Hw5_unit.out_databits.intVal
45
+ unless DUT.out_databits.x?
46
+ finishedOp = Operation.new(
47
+ DUT.out_op.intVal,
48
+ DUT.out_databits.intVal
49
49
  )
50
- finishedOp.result = Hw5_unit.res.intVal & ALU_RESULT_MASK
50
+ finishedOp.result = DUT.res.intVal & ALU_RESULT_MASK
51
51
 
52
52
  expectedOp = issuedOps.shift
53
53
  assert_equal expectedOp.type, finishedOp.type, "incorrect operation"
54
54
  assert_equal expectedOp.tag, finishedOp.tag, "incorrect tag"
55
55
 
56
- unless finishedOp.type == Hw5_unit::OP_NOP
56
+ unless finishedOp.type == DUT.OP_NOP.intVal
57
57
  assert_equal expectedOp.compute & ALU_RESULT_MASK, finishedOp.result, "incorrect result"
58
58
  end
59
59
 
@@ -1,10 +1,10 @@
1
1
  # Simulates the design under test for one clock cycle.
2
- def cycle!
2
+ def DUT.cycle!
3
3
  advance_time
4
4
  end
5
5
 
6
6
  # Brings the design under test into a blank state.
7
- def reset!
7
+ def DUT.reset!
8
8
  register.each_memoryWord do |word|
9
9
  word.x!
10
10
  end
@@ -0,0 +1 @@
1
+ RubyVPI.load_test("register_file", "register_file_design.rb", "register_file_proto.rb", "register_file_spec.rb")
@@ -1,11 +1,18 @@
1
- always do
2
- wait until rdReg.change? or wtReg.change? or rw.change? or enable.change?
1
+ if RubyVPI::USE_PROTOTYPE
2
+ always do
3
+ wait until
4
+ DUT.rdReg.change? or
5
+ DUT.wtReg.change? or
6
+ DUT.rw.change? or
7
+ DUT.enable.change?
3
8
 
4
- if rw.low?
5
- targetReg = register.memoryWord_a[rdReg.intVal]
6
- outBus.intVal = targetReg.intVal
7
- elsif enable.high?
8
- targetReg = register.memoryWord_a[wtReg.intVal]
9
- targetReg.intVal = inBus.intVal
9
+ if DUT.rw.f?
10
+ target = DUT.register.memoryWord_a[DUT.rdReg.intVal]
11
+ DUT.outBus.intVal = target.intVal
12
+
13
+ elsif DUT.enable.t?
14
+ target = DUT.register.memoryWord_a[DUT.wtReg.intVal]
15
+ target.intVal = DUT.inBus.intVal
16
+ end
10
17
  end
11
18
  end
@@ -1,3 +1,8 @@
1
+ # Path to a Ruby script that will be invoked before the Verilog
2
+ # simulation begins. This script shall then load the appropriate
3
+ # tests to exercise the desired designs in the Verilog simulation.
4
+ TEST_LOADER = "register_file_loader.rb"
5
+
1
6
  # Array of paths and shell globs (see the Dir.glob method's documentation for
2
7
  # details) to source files and directories that contain source files. These
3
8
  # source files will be loaded by the simulator before the simulation begins.
@@ -19,14 +24,14 @@ SIMULATOR_ARGUMENTS = {
19
24
  # Icarus Verilog
20
25
  :ivl => "",
21
26
 
27
+ # Cadence NC-Sim
28
+ :ncsim => "",
29
+
22
30
  # Synopsys VCS
23
31
  :vcs => "",
24
32
 
25
33
  # Mentor Modelsim
26
- :vsim => "",
27
-
28
- # Cadence NC-Sim
29
- :ncsim => "",
34
+ :vsim => "register_file",
30
35
 
31
36
  }
32
37
 
@@ -1,39 +1,39 @@
1
1
  require 'spec'
2
2
 
3
3
  module RegisterInterface
4
- NUM_REGS = Register_file.register.size
4
+ NUM_REGS = DUT.register.size
5
5
 
6
6
  def set_registers(vals)
7
7
  raise ArgumentError if vals.length > NUM_REGS
8
8
 
9
- Register_file.rw.intVal = 1
9
+ DUT.rw.intVal = 1
10
10
 
11
11
  vals.each_with_index do |val, i|
12
- Register_file.wtReg.intVal = i
13
- Register_file.inBus.intVal = val
14
- Register_file.cycle!
12
+ DUT.wtReg.intVal = i
13
+ DUT.inBus.intVal = val
14
+ DUT.cycle!
15
15
  end
16
16
  end
17
17
 
18
18
  def expect_registers(vals)
19
19
  raise ArgumentError if vals.length > NUM_REGS
20
20
 
21
- Register_file.rw.intVal = 0
21
+ DUT.rw.intVal = 0
22
22
 
23
23
  vals.each_with_index do |val, i|
24
- Register_file.rdReg.intVal = i
25
- Register_file.cycle!
26
- Register_file.outBus.intVal.should == val
24
+ DUT.rdReg.intVal = i
25
+ DUT.cycle!
26
+ DUT.outBus.intVal.should == val
27
27
  end
28
28
  end
29
29
  end
30
30
 
31
- describe "An enabled register file" do
31
+ describe "A #{DUT.name}, when enabled" do
32
32
  include RegisterInterface
33
33
 
34
34
  before do
35
- Register_file.reset!
36
- Register_file.enable.intVal = 1
35
+ DUT.reset!
36
+ DUT.enable.intVal = 1
37
37
  end
38
38
 
39
39
  it "should be able to write and then read registers" do
@@ -44,12 +44,12 @@ describe "An enabled register file" do
44
44
  end
45
45
  end
46
46
 
47
- describe "A disabled register file" do
47
+ describe "A #{DUT.name}, when disabled" do
48
48
  include RegisterInterface
49
49
 
50
50
  before do
51
- Register_file.reset!
52
- Register_file.enable.intVal = 0
51
+ DUT.reset!
52
+ DUT.enable.intVal = 0
53
53
  end
54
54
 
55
55
  it "should not write new values" do
data/ext/main.c CHANGED
@@ -30,15 +30,15 @@ void main_init() {
30
30
 
31
31
 
32
32
  char* bootLoader = getenv("RUBYVPI_BOOT_LOADER");
33
- char* bootTarget = getenv("RUBYVPI_BOOT_TARGET");
33
+ char* testLoader = getenv("RUBYVPI_TEST_LOADER");
34
34
 
35
- if (bootLoader != NULL && bootTarget != NULL) {
36
- ruby_script(bootTarget);
35
+ if (bootLoader != NULL && testLoader != NULL) {
36
+ ruby_script(testLoader);
37
37
  rb_load_file(bootLoader);
38
38
  ruby_run();
39
39
  }
40
40
  else {
41
- common_printf("error: the RUBYVPI_BOOT_LOADER and RUBYVPI_BOOT_TARGET environment variables are not initialized.");
41
+ common_printf("error: the RUBYVPI_BOOT_LOADER and RUBYVPI_TEST_LOADER environment variables must be defined.");
42
42
  exit(EXIT_FAILURE);
43
43
  }
44
44
  }
@@ -0,0 +1,32 @@
1
+ # Defines methods for detecting all possible value changes.
2
+ #--
3
+ # Copyright 2007 Suraj N. Kurapati
4
+ # See the file named LICENSE for details.
5
+
6
+ module RubyVPI
7
+ class EdgeClass #:nodoc:
8
+ DETECTION_METHODS = []
9
+ Meth = Struct.new :name, :info, :body
10
+
11
+ vals = %w[1 0 X Z H L t f]
12
+ edges = vals.map {|a| vals.map {|b| a + b}}.flatten
13
+
14
+ edges.each do |edge|
15
+ name = "change_#{edge.downcase}?"
16
+ old, new = edge.tr('tf', '10').split(//).map {|s| 'Vpi' + s}
17
+
18
+ info = "Tests if the logic value of this handle has changed from #{old} (in the previous time step) to #{new} (in the current time step)."
19
+
20
+ body = %{
21
+ def #{name}
22
+ old = @__edge__prev_val
23
+ new = get_value(VpiScalarVal)
24
+
25
+ old == #{old} && new == #{new}
26
+ end
27
+ }
28
+
29
+ DETECTION_METHODS << Meth.new(name, info, body)
30
+ end
31
+ end
32
+ end