A CI/CD Framework for Open-Source Hardware Designs
Open source hardware is the future, because:
None of us is as smart as all of us.
(* Extended Backus–Naur *)
rule = test | isin | mult | line
test = reg, eqs, reg
| reg, eqs, nat
isin = reg, "∈ {", nat, ",", nat, "}"
| reg, "∈ {", nat, ",", nat, ",", nat "}"
mult = reg, "≡ 0 (mod", reg, ")"
line = reg, "+", reg, "×", reg,
"-", reg, "+", nat, "= 0"
reg : string
nat : natural
eqs = "=" | "≠" | "<" | "⋜" | ">" | "⋝"
We containerized the entire workflow on Ubuntu image with best-effort minimization.
iverilog
) which helpfully follows the IEEE standard.
iverilog
iverilog
operates much like a compiler over hardware design languages.
iverilog
is often used for “small projects” but makes IEEE 1364 Value Change Dump (VCD) files.How do we go from value changes to traces?
.decls
).dtrace
)lines | words | bytes | |
---|---|---|---|
.vcd | 30356 | 46200 | 269184 |
.decls | 2219 | 4434 | 39059 |
.dtrace | 2936134 | 2931732 | 17474090 |
spec | 1846 | 5780 | 71988 |
We believe specification generation time scales linearly with the product of trace length and number of registers, and specification size scales with the log of the product.
lines | words | bytes | |
---|---|---|---|
.vcd | 30356 | 46200 | 269184 |
.decls | 2219 | 4434 | 39059 |
.dtrace | 2936134 | 2931732 | 17474090 |
spec | 1846 | 5780 | 71988 |
lines | words | bytes | |
---|---|---|---|
.vcd | 6290 | 10990 | 53007 |
.decls | 3519 | 7034 | 62829 |
.dtrace | 2230270 | 2228160 | 13840288 |
spec | 5594 | 17986 | 181149 |
.decls
+ .dtrace
vcd2df
on arXiv, CRAN, PyPIcdeutschbein@willamette.edu
about: