Skip to content

Commit e057d39

Browse files
committed
Add and update Verilog samples to validate heuristic improvements
- Added `module_stub.v`: Vivado-style stub using `module name(...)` syntax with no space - Added `encrypted_module.v`: representative of encrypted IP using `pragma protect` - Modified `button_debounce.v` to include a valid `always@(...)` syntax case These examples demonstrate the heuristic's improved ability to detect real-world Verilog files, including those previously misclassified as Rocq Prover or Coq due to compact or directive-heavy syntax.
1 parent 0369699 commit e057d39

File tree

3 files changed

+103
-1
lines changed

3 files changed

+103
-1
lines changed

samples/Verilog/button_debounce.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ module button_debounce
6161
always @ (posedge clk or negedge reset_n)
6262
state <= (!reset_n) ? WAIT : next_state;
6363

64-
always @ (posedge clk or negedge reset_n) begin
64+
always@(posedge clk or negedge reset_n) begin
6565
if (!reset_n) begin
6666
debounce <= 0;
6767
count <= 0;

samples/Verilog/encrypted_module.v

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
`pragma protect begin_protected
2+
`pragma protect version = 1
3+
`pragma protect encrypt_agent = "XILINX"
4+
`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2014"
5+
`pragma protect key_keyowner = "Cadence Design Systems.", key_keyname= "cds_rsa_key", key_method = "rsa"
6+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64)
7+
`pragma protect key_block
8+
BtrP/FiKT4cAIn9g/cLi+3bcreZzl8S+GQkeXK138B55MMOjow31+bevhaCy8/OUqRJOXmoFAjjC
9+
ag+Ia49Vcw==
10+
11+
`pragma protect key_keyowner = "Mentor Graphics Corporation", key_keyname= "MGC-VERIF-SIM-RSA-1", key_method = "rsa"
12+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128)
13+
`pragma protect key_block
14+
EaReJ4Y4kHzC9SLjK92Mjfwixi4UfUNRpYevnAoNW9iCwgAzGHKJWatSzB/sFUjptorl0o38Tkyb
15+
/mwEj0iblJzgM70crbOp8h1FSZSxWpPeku4OmV17wg2T0IAyS2x3Z8Ln/K8kgDgVlS3dVrh/BulN
16+
ouU2cu08vQ9CSau3QMA=
17+
18+
`pragma protect key_keyowner = "Synopsys", key_keyname= "SNPS-VCS-RSA-1", key_method = "rsa"
19+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128)
20+
`pragma protect key_block
21+
X718ly9oxX5OxKADbTPXe49kKf8x77G1Y+oCmjDHObDXGgYToKygNkWiDVqvid3JCNuC8QX+Bt5U
22+
LGwXDozhdDonelEWvXDYzAZ/NMJQybpuj3rEIuog0YtLSxxc7cLln1MUBVdUFJF5GGbiQ+krMfGm
23+
XkwA6ltQ4SExC00ka+U=
24+
25+
`pragma protect key_keyowner = "Aldec", key_keyname= "ALDEC15_001", key_method = "rsa"
26+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
27+
`pragma protect key_block
28+
FavYF9n1D1ZEqP7w0DJ0F/3BVdRQVBwGrU0Xh14WIw7RznS84eZnydcL51gttmvTUUe2Q/M19qqy
29+
AxnjtBOZWXNl2WpObHqxu+zePpPtJempqnZgcG/tMcyJ5gepOylwc4vnHGQTzfJmQ5tGdYeQTN1J
30+
nHYw6rlQhvsR/X+aNzKBt3VLKD7GAbivjrcp+CtW+GiQAYGuV2t2whw1Y2ZBCa5dKFkJYQQ9I8YK
31+
30Fmq5As6CcbF69p8cSU95qwLTG3Lc5pDd3D998/A9f8oaF5BhRo7DZ16wqD9UAsBgch3AzbDuBU
32+
UofRED7kkCoKn9YqIq5qt98SWLn/Qpu9O+v/yg==
33+
34+
`pragma protect key_keyowner = "ATRENTA", key_keyname= "ATR-SG-2015-RSA-3", key_method = "rsa"
35+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
36+
`pragma protect key_block
37+
KZvW9p2sDxpEFCd9AsiM2YCXm3l9xYlzGVFuonIsAZ/9egCRTWesBtFaLSAhxOwQs0t8G95wYLpy
38+
29LYXUNxlixAvci0eyV3jiXBbARzQ+mepbTWrQHboCX39Wtgh0x0FyA3tiMfzYIm2mJWjDGbAvbd
39+
A6OjKblz8AANIEu/asDVaR3Oebn/yY61dFYJXhojijw4KiPpmX93pS5zgki3C17VQu1T9OdyfzfD
40+
HI+flX+2BEUJ9J8WxcxBJRQ6WgWXav4Nxv7bSl85cMyj3y7nKF8jDiczfJ6YYUv2F8QjP0rj4VUs
41+
fnoNuOaGNtV1E8LLSWfMf6uTfIk9zKVeA0i4xQ==
42+
43+
`pragma protect key_keyowner = "Xilinx", key_keyname= "xilinx_2016_05", key_method = "rsa"
44+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
45+
`pragma protect key_block
46+
CCaF/36/hLxEK+Qhf7KrAS2FUQgTamDg47PImlUX/X2ecapU9Vqc5AErcJxNzyMCMype3X9UtDrN
47+
bHQEiStJOIAcxZup6yLKPzpnmJAbbJCibol1+UOvrjJBhJaEy01vjwltiFYYbG3uHKZ+yTbS6f6d
48+
1j46DBhz2tgrFvKo39Q5rDMNL1Wn7W6BzuHMDWveqGGfMXOJ9a2v7Ze9BU4ArhQ75S6tz1k5MMS7
49+
xx9yWR/3qIVeBTHkTVgIcrvwooKQjReeJFOlvsY5kBH5Qvjj9ApcFLBMBaIImpjOJEG69uSU0YDb
50+
vN1mUxtuKy82Aqy3tJqaT7VJ1a0yVxXlLyHq8A==
51+
52+
`pragma protect data_method = "AES128-CBC"
53+
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 438576)
54+
`pragma protect data_block
55+
U37lCH7MEZplkeIoaPPzYnHBMKwQu/RlhYwrWCai0IIS3Wwea9YtMU4FEAiyAeaH2lsIWSdCjGhm
56+
dstelEP2SUx0pzDpFU5ZsDxt4PS0AXPsq+An1VW4Jzeh2uhO2F67Oh4qAYJboJKURGZlnTI5RK1q
57+
ao1by0sAle6OawA6tAyROUhXIqPf/aPFurK9a+WfbVthTWIqW5w+akNl2ujndbrLRA1U8tFMBifK
58+
iqzc6YYYTxnba/nX5zodJdUPkhpDarbc9bcmErhpifH+h+cApREaZqc2Un759bkgDj17kRqPfe9z
59+
vrwo2fMYJiPBTN8Y27IrQWtuIyKjfT67/OztiBpmmfUcqCVcaqPc9bsMSQTt90aPaVsnICdaLS20
60+
Ugk5kdUlnd4ogHzI92SOkKUBY0PNsxXQ1kmS4A3viD6qw7lBYVMI/NYoDJMLBs0Qju7RBXc6j8jt
61+
sgaCpMEy5Z65LEkNIDKk3yUdfdG3BpDZLelTOKAElAJaPMt0M+Mal4jg/Zh/io1z7QcIHkAumLE/
62+
VlCORgoyc6N3fmE3WF/WMG2rfYIT8/WOukE67f+PWEL13WWqPxBfYNXN5FteX6Sh4BbB+aCap4/p
63+
xwhBteaDtaxhs7VJMNTCAlt4NSqtD+fusUMDU1pVPEQ87h+87SSzllgWjw7C0LR1qAx6sa5XWDx+
64+
is3uHtwma0j6zg58zWR8TyymjT/InqPcaOo5+RdlW8t7u4jPvvnWAC8ZfhdGoz1/llH5bbVwxmrN
65+
09EywTIB6jlK0RPKYDWj8RbySQI1G/24T1Gl/xzJE9zRAeXpLOZLweJirgIFXQMdJXBd/JmUsYu4
66+
ZdSHvIMhX2OBFlnfTBuzKo3hAoI68i98vdynNZ0P6obT1+5/ENNVnEHn4ChSuBAYQHC5qg4NRRzs
67+
d3Zsj45yPATI2vPyv9gGRG6yY9HHet1jT20dhm2+Tl8dZA0fJd/OYAM0hFMp4wMct6YZWZcyKVBp
68+
b7Gx3MTy9kUTIa5ywsdIgQQoLm4qBDe6oIWNlOtoKB9sMG740lvsQ4s02CvDFLDnWFiNo6+G89T3
69+
mLNXAtr8ZukyTvFRaL2YatNUeNakCgPZ8/7z18B0pkGWkfY0eMe/Ox6reTkepXyw8wGkQpZ8lZsK
70+
ZxgjB6pLnEamjI599PcU7GoprTlILgOZHPLjw9tjFo4Hv5L2iQ/p7A7xhIUYbb7FCHa0qK24eX3Q
71+
4cU0fjV1WvG25dwAS5BqmZX+AoPnKPw7o0wFWnbqNkVJcudyEGham5sCDWg6lY/00ZXG3lM09rNL
72+
PvMkAU1TYVzSiNf7eF0Lsm7IjHkkJeiAiPhLGzPiB2YIwHxC+NQUSQhvp34bcWzweJ+utLuLH5n+
73+
hdTTcyWMs50UD2IuHvCZwuUctzWtFm1TwlTJk+QzGS0afwC+QsGEzu5K9ObWMvGTF9P6V0JAh1Kq
74+
yF97ssM7lSDMpT3eiORcpHwkFUu3FBj2uihE0YZxhNMnY8eZYCL5UE5OKkFbkL0t2NaALGN+NEEQ
75+
fEFbs9S9D9QJSitqjSnz+2Im
76+
`pragma protect end_protected

samples/Verilog/module_stub.v

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
2+
// --------------------------------------------------------------------------------
3+
// Tool Version: Vivado v.2016.2 (win64) Build 1577090 Thu Jun 2 16:32:40 MDT 2016
4+
// Date : Fri May 02 13:58:04 2025
5+
// Command : write_verilog -force -mode synth_stub
6+
// Purpose : Stub declaration of top-level module interface
7+
// Device : xc7k456-2
8+
// --------------------------------------------------------------------------------
9+
10+
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
11+
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
12+
// Please paste the declaration into a Verilog source file or add the file as an additional source.
13+
(* x_core_info = "fifo_generator_v13_1_1,Vivado 2016.2" *)
14+
module fei4_spy_fifo(rst, wr_clk, rd_clk, din, wr_en, rd_en, dout, full, empty, valid)
15+
/* synthesis syn_black_box black_box_pad_pin="rst,wr_clk,rd_clk,din[35:0],wr_en,rd_en,dout[35:0],full,empty,valid" */;
16+
input rst;
17+
input wr_clk;
18+
input rd_clk;
19+
input [35:0]din;
20+
input wr_en;
21+
input rd_en;
22+
output [35:0]dout;
23+
output full;
24+
output empty;
25+
output valid;
26+
endmodule

0 commit comments

Comments
 (0)