Skip to content

Commit ed4e102

Browse files
author
Oron Port
committed
add cipher simulation checks
1 parent a0a95cb commit ed4e102

File tree

3 files changed

+171
-4
lines changed

3 files changed

+171
-4
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,6 @@ jobs:
4444
ghdl version
4545
nvc --version
4646
- name: Run tests
47-
run: sbt test
47+
run: sbt test
48+
- name: Run app tests
49+
run: sbt testApps

lib/src/main/scala/dfhdl/tools/toolsCore/Verilator.scala

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,10 @@ object Verilator extends VerilogLinter, VerilogSimulator:
9696
CompilerOptions,
9797
SimulatorOptions
9898
): CompiledDesign =
99-
given MemberGetSet = cd.stagedDB.getSet
99+
val linted = lintPreprocess(cd)
100+
given MemberGetSet = linted.stagedDB.getSet
100101
exec(simulateCmdFlags, (), simulateLogger, simRunExec)
101-
cd
102+
linted
102103

103104
override protected def simulateCmdLanguageFlag(dialect: VerilogDialect): String =
104105
lintCmdLanguageFlag(dialect)
@@ -194,7 +195,8 @@ class VerilatorConfigPrinter(verilatorVersion: String)(using
194195
|$commands
195196
|""".stripMargin
196197
def commands: String =
197-
lintOffHidden.emptyOr(_ + "\n") +
198+
lintOffNoParamDefaults.emptyOr(_ + "\n") +
199+
lintOffHidden.emptyOr(_ + "\n") +
198200
lintOffBlackBoxes.emptyOr(_ + "\n") +
199201
lintOffOpenOutPorts.emptyOr(_ + "\n") +
200202
lintOffUnused.emptyOr(_ + "\n") +
@@ -215,6 +217,10 @@ class VerilatorConfigPrinter(verilatorVersion: String)(using
215217
val matchWildArg = matchWild.emptyOr(m => s""" -match "$m"""")
216218
s"lint_off$ruleArg$fileArg$lineArg$matchWildArg"
217219
def lintOffHidden: String = lintOffCommand("VARHIDDEN")
220+
def lintOffNoParamDefaults: String =
221+
if (co.backend.asInstanceOf[backends.verilog].dialect == VerilogDialect.sv2005)
222+
lintOffCommand("NEWERSTD", file = "*.*", matchWild = "*Parameter requires default value*")
223+
else ""
218224
def lintOffBlackBoxes: String =
219225
designDB.srcFiles.flatMap {
220226
case SourceFile(SourceOrigin.Committed, SourceType.BlackBox, path, _) =>
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
package AES
2+
import dfhdl.*
3+
given options.CompilerOptions.DropUserOpaques = true
4+
5+
@top class CipherSim extends RTDesign:
6+
val cipher = Cipher()
7+
val data = Bits(128) <> VAR.REG init CipherSim.initData
8+
val key = Bits(128) <> VAR.REG init CipherSim.initKey
9+
val cnt = Int <> VAR.REG init 0
10+
data.din := (data(126, 0), data(127))
11+
key.din := (key(126, 0), key(127))
12+
cnt.din := cnt + 1
13+
if cnt == CipherSim.rotations then
14+
finish()
15+
else
16+
assert(
17+
cipher.o.bits == CipherSim.expectedDataOut(cnt),
18+
s"cnt: $cnt, expected: ${CipherSim.expectedDataOut(cnt)}, actual: ${cipher.o.bits}"
19+
)
20+
21+
cipher.data <> data.as(AESData)
22+
cipher.key <> key.as(AESKey)
23+
end CipherSim
24+
25+
object CipherSim:
26+
val initData = h"32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34"
27+
val initKey = h"2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c"
28+
val rotations = 128
29+
val expectedDataOut = DFVector(Bits(128) X rotations)(
30+
h"3925841d02dc09fbdc118597196a0b32",
31+
h"21b1d6e7c2fcfaf4a828c86688c5d92f",
32+
h"0e9ec2cef5b17a66194c55e171261c91",
33+
h"5ed441598dfb09d796a51ae5d108b39d",
34+
h"702a15773ae612cda40d0a439194016e",
35+
h"faa7d79aec23cee3266b9c252e4fcccd",
36+
h"74a9a049a872900de89fe402742de8ca",
37+
h"bca585fa61cfb22cbd3cd96260ec2bec",
38+
h"b742fb040f077de8303ebfb416a3e81c",
39+
h"9f531a7bd80c1c351612bfe22d8913fa",
40+
h"b0828e36eebccfed5748b7a6c8fbcbe7",
41+
h"7f3805298e468228957bf6fd6dfad850",
42+
h"2a305b3f6e3430d64adba555bd17bc00",
43+
h"1333c442b919811c4dfe9ad3f90122bb",
44+
h"71af126d7688ea0b8c02df214f9b9fc9",
45+
h"b0b06d3a8a9e135f7729ee4aa2c09577",
46+
h"869fa249f36c1cbe872d24dd4a2b898e",
47+
h"dc24478035e1576dd14cd330f233ca49",
48+
h"090849209ff4d9bdfb0318207eefc016",
49+
h"45ef1cd7f16d83964c2dbbfbf6094c86",
50+
h"9abe16b464fc2037528ea5de0e756896",
51+
h"a0f86c4981685d52078970cd21e3ffc7",
52+
h"e6569d33d21637d1a556ba931d6b58fc",
53+
h"70fb69a9e9e7dcb531458fb8d444081f",
54+
h"f04440f17157d6a1d42bdb3c82458f05",
55+
h"95de74e2cff9555703ea736e3a41c413",
56+
h"6fdace8af86bdc26d3ae8e34d42c8d47",
57+
h"22c884a2896fce844bdb4e1c40538ea7",
58+
h"ea1db32bac832341e4057fda2044db69",
59+
h"0f925c34ae5d4d9fbc961faf7260eae0",
60+
h"0d7ec8dc7981cfb9dc81f3d8470189f2",
61+
h"92b199ee9cb44af895606d0617a4f050",
62+
h"e6a25d317435b0dd59a9c2e17373ed8a",
63+
h"fcfd9935f3f0e60fc076b8a1cd5618aa",
64+
h"c8c8d3664e5f1648e0298e1695f920d6",
65+
h"afe540fc2ea301f5ed128f4baa52d74e",
66+
h"e4d113eb5783de01dab22324ea45f065",
67+
h"dfa9d12c3a4722c5025ddbd34360c04c",
68+
h"419cfab35eba93520d3750e78ccbd34f",
69+
h"2128fede3b9e50e76d5dbc08c415a434",
70+
h"be7e743397b1d90bb9e5ead9953f899e",
71+
h"f09bde3e012f5a3d29cff5fe267d1950",
72+
h"076b6bf7abd80567dc4a50f641768bf8",
73+
h"7f039373e6f23517392bbe8f70f679c4",
74+
h"286c169da527d026be44b626dfed5ee9",
75+
h"3d4002318c55c25c9e20d24d21e84604",
76+
h"d5842c769f563b44b74d80dd670b2a2e",
77+
h"cc03ea3ca1e45996c3425197ab1fb2b5",
78+
h"72924c4d7cb32ff65ab7342b5d9aeaf5",
79+
h"e2de6785a17ce3cd894e3afcbf8d8a72",
80+
h"cb6c8c67fa7b2ea912d2187da1643269",
81+
h"bd456e180e9f8493e0656de8a5691332",
82+
h"0db52a689a52ca9beac669fe24d62174",
83+
h"cd2b2a21d2a9862c885061c9f4166c97",
84+
h"9b15319495f8e91c522c53864f0d5160",
85+
h"c35c1c03370ca1961cf758f0195a56cd",
86+
h"5d9fc83cf9a97091b5a93ad95480f7dc",
87+
h"c11474aa16465e088dfa322410b105a7",
88+
h"a5f87c2adcc297a87845fcd1639d6995",
89+
h"194b7466c4234e55c925be7f5626d6f1",
90+
h"a8a383ad0ec3842dd45f5808bce0a58a",
91+
h"d31f7874304b573ad1a8876a173c804e",
92+
h"4a57ad1148f804ebf13fdba83e988a25",
93+
h"157cc204047e6a61e19cbb885ff18f0a",
94+
h"5989b4f685a23e12f4887545871c70a7",
95+
h"8baf68ba62a24b30ac63d19fcc79da27",
96+
h"a623872c9032b01cdb01d09fbe4207be",
97+
h"c848f583085689e2e95f9fe4b7ee08d7",
98+
h"e114fbf4740a6ea81a43463480ab158e",
99+
h"22e3aa6fa16357fb93586932f45d3fdd",
100+
h"b7871a5bf6e8b97c842e096a0a766b9d",
101+
h"9e5c83e9e4a513d0bd5e8ccfb98b2b6e",
102+
h"fe8068b5b0dd8c611bb2971f32aaed56",
103+
h"69b8c78895cb57845721f3951a2f1dd4",
104+
h"ab004eb15fce771746325fb40e7fcd59",
105+
h"f736640509456fc0032d31faa5544de8",
106+
h"7b587112fe4cfb4f3d8921f7d7b0bb75",
107+
h"31c8a695f3731a5ff94142d9fffc5037",
108+
h"382e0031862aca76893501cc11e86945",
109+
h"55bb48c9caef5c59eaca6b4bc0bb6d15",
110+
h"11e80baf6451211c6633e3a1f59bac7c",
111+
h"d60d65bef59cb257c996b0c97720f848",
112+
h"459596e7c0468e0398733f2ebac1f745",
113+
h"6d6c3bda5eb58da6294b3e26cc9a99fb",
114+
h"054fb0a5726bc37af4f4817f260e1efb",
115+
h"ed0e75e9dee79919a33b17f8ac7692bb",
116+
h"e186fbb068100618ed20b85272d74da1",
117+
h"1ef3c573e1e7f78af8d1af3bb8c75487",
118+
h"82ff1dddedc2d92cc1f75dc45ed2fa79",
119+
h"4e5fac1cf288c4971215016dc54be198",
120+
h"3a647e73352c0eb2b4fb6ba42a1b02fb",
121+
h"205f37b9d824fdcfd3d1d42d63ade8c9",
122+
h"98cf08028c68015a28785d45c0f6f6f4",
123+
h"c0fdc3d612778207f9d46b0b1fea2b15",
124+
h"95259f05dd2b23663a5efa689e533783",
125+
h"b4154111ab10be49f31967ccf1000923",
126+
h"44fc9d735c8ad1705416f14940135bf7",
127+
h"1ec6f07dbdeae5ed950ad3aba8225f4e",
128+
h"b57aca9bcfe054d903ad0369b77caa09",
129+
h"29ef8f9166c42a2c00343bc2dbcf063c",
130+
h"1ae7cb93d988168ee62180184db4bf6e",
131+
h"490c4244f1384542f067465b0a3ce8a7",
132+
h"e645c608795b5c360eb33198fa424054",
133+
h"146af2f91555564c44b8bddd0b5598d3",
134+
h"52a2c7d4129d3ef547abe81753b8ab0a",
135+
h"dd94bf9e4c6388b3322c99942df0e0a2",
136+
h"717efe25d9fdfaaedbd6d9864b96aab0",
137+
h"179b24076637184cceaaeb3758f41a79",
138+
h"6ef6d74227ea0fef0106261751cd2dd0",
139+
h"882c639280f4169069fa920c3a689870",
140+
h"5b9ea8e32bebab158c32e796f4017d93",
141+
h"a45ac5ed79f8cbe683f48a5b49f84382",
142+
h"fe8535a4f1cde211c5d0fd9da8abe889",
143+
h"71d8c2e8df5a59547c3563cbc11473ab",
144+
h"258e81dcbd1abfed829598deecda32df",
145+
h"6db70a8de77425d00a3e5a7a978f64f2",
146+
h"5b3cf9ec76cc8f2e5cb7d50300b77d5b",
147+
h"6c0e603f2279bc5d4ee3a1d838e1eeea",
148+
h"1af7d5326d50bcc19b62d64531e2db5a",
149+
h"3810e3e8ff7493f84a3a669590f29b63",
150+
h"3118eb802e8b594c2b50b3556aaed739",
151+
h"d2506a40b102df00ac96e436d8a9d411",
152+
h"f5d3f27ff52ca9121b2af2eba5b6eaaa",
153+
h"f4e83d8fb4349951d80d129e3fa9a617",
154+
h"87d61b2b60ac4e2892aae2c9f5ed8a0b",
155+
h"ed366c00ebc3fc18a0b73c605defabad",
156+
h"caea999a7f651b8cc7b05a6705cee530",
157+
h"e08681e1e4b64d14733b624e4e8c250b"
158+
)
159+
end CipherSim

0 commit comments

Comments
 (0)