summaryrefslogtreecommitdiff
path: root/python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv
diff options
context:
space:
mode:
authorEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
committerEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
commitab224e2e6ba65f5a369ec392f99cd8845ad06c98 (patch)
treea1e757e9341863ed52b8ad4c5a1c45933aab9da4 /python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv
parent40da1752f2c8639186b72f6838aa415e854d0b1d (diff)
downloadthesis-master.tar.gz
thesis-master.tar.bz2
thesis-master.zip
completed thesisHEADmaster
Diffstat (limited to 'python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv')
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv238
1 files changed, 238 insertions, 0 deletions
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv b/python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv
new file mode 100644
index 0000000..9cd9c63
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv
@@ -0,0 +1,238 @@
+`pragma protect begin_protected
+`pragma protect version=1
+`pragma protect author="Intel Corporation"
+`pragma protect encrypt_agent="Quartus Prime Pro Software"
+`pragma protect encrypt_agent_info="17.1"
+
+`pragma protect key_keyowner="Intel Corporation"
+`pragma protect key_method="rsa"
+`pragma protect key_keyname="Intel-FPGA-Quartus-RSA-1"
+`pragma protect encoding=(enctype = "base64", line_length = 76, bytes = 256)
+`pragma protect key_block
+kAm5fFo7+pBTXJ9xhb1QNMdcE74A74cZu1fwPJhrG7Pgjd99FO4pPbyobk0lLmYjPy7BalTFcC/P
+yjQzQ4wVVZbLSEM9nHuQBYB7oxIhUNpj+VmF21z6xGBf7q9w8rAW8l0z1j5gnz7GktXH1ZCgAm9g
+s4B43AyC4mxSMKo42IcFDjQL60450kfjmC6todLlo1aluiO1xw6aB3yvG4JfYRLX3qoSpDYGJRfq
+kZ9aIi/iX0usOn0kIyILicY4OKLflIGpP6L1u7UcOi45LHnuhzDYWCF5cTNH6tcpQPonLm6tDpeV
+RKFyeVg3jfzGGs1+vQbAmEttqjkG7EBMd9FzQg==
+
+`pragma protect data_method="aes128-cbc"
+`pragma protect encoding=(enctype = "base64", line_length = 76, bytes = 12352)
+`pragma protect data_block
+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
+`pragma protect end_protected