Initial commit
This commit is contained in:
commit
9aca6c3042
40 changed files with 2557 additions and 0 deletions
19
.direnv/bin/nix-direnv-reload
Executable file
19
.direnv/bin/nix-direnv-reload
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
if [[ ! -d "/home/mya/thesis" ]]; then
|
||||
echo "Cannot find source directory; Did you move it?"
|
||||
echo "(Looking for "/home/mya/thesis")"
|
||||
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# rebuild the cache forcefully
|
||||
_nix_direnv_force_reload=1 direnv exec "/home/mya/thesis" true
|
||||
|
||||
# Update the mtime for .envrc.
|
||||
# This will cause direnv to reload again - but without re-building.
|
||||
touch "/home/mya/thesis/.envrc"
|
||||
|
||||
# Also update the timestamp of whatever profile_rc we have.
|
||||
# This makes sure that we know we are up to date.
|
||||
touch -r "/home/mya/thesis/.envrc" "/home/mya/thesis/.direnv"/*.rc
|
||||
1
.direnv/flake-inputs/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
Symbolic link
1
.direnv/flake-inputs/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
|
||||
1
.direnv/flake-inputs/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
Symbolic link
1
.direnv/flake-inputs/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
|
||||
1
.direnv/flake-inputs/i9syjxw0famqkabw2d01n723m3sc7vdn-source
Symbolic link
1
.direnv/flake-inputs/i9syjxw0famqkabw2d01n723m3sc7vdn-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/i9syjxw0famqkabw2d01n723m3sc7vdn-source
|
||||
1
.direnv/flake-inputs/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
Symbolic link
1
.direnv/flake-inputs/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
|
||||
1
.direnv/flake-inputs/rylyv28gslxqq5pxzr4llgrp2asq898n-source
Symbolic link
1
.direnv/flake-inputs/rylyv28gslxqq5pxzr4llgrp2asq898n-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/rylyv28gslxqq5pxzr4llgrp2asq898n-source
|
||||
1
.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
Symbolic link
1
.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
|
||||
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/nix/store/zmfxzr0ln2qgqg72g8a66v5jr1lqmwd1-nix-shell-env
|
||||
1881
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
1881
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
File diff suppressed because it is too large
Load diff
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
use flake
|
||||
1
README.md
Normal file
1
README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# MQT QCEC Diff Thesis
|
||||
23
bibliography.bib
Normal file
23
bibliography.bib
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
@article{quetschlich2023mqtbench,
|
||||
title={{{MQT Bench}}: Benchmarking Software and Design Automation Tools for Quantum Computing},
|
||||
shorttitle={{MQT Bench}},
|
||||
journal={{Quantum}},
|
||||
author={Quetschlich, Nils and Burgholzer, Lukas and Wille, Robert},
|
||||
year={2023},
|
||||
note={{{MQT Bench}} is available at \url{https://www.cda.cit.tum.de/mqtbench/}},
|
||||
}
|
||||
|
||||
@article{burgholzer2021ec,
|
||||
title={Advanced Equivalence Checking for Quantum Circuits},
|
||||
volume={40},
|
||||
ISSN={1937-4151},
|
||||
url={http://dx.doi.org/10.1109/TCAD.2020.3032630},
|
||||
DOI={10.1109/tcad.2020.3032630},
|
||||
number={9},
|
||||
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
|
||||
publisher={Institute of Electrical and Electronics Engineers (IEEE)},
|
||||
author={Burgholzer, Lukas and Wille, Robert},
|
||||
year={2021},
|
||||
month=sep,
|
||||
pages={1810–1824}
|
||||
}
|
||||
3
content/SMHD.typ
Normal file
3
content/SMHD.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
= S-Metric Helper Data Method
|
||||
|
||||
#figure(include("../graphics/quantizers/two-metric-enroll.typ"))
|
||||
70
content/background.typ
Normal file
70
content/background.typ
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#import "@preview/fletcher:0.5.1": diagram, node, edge
|
||||
#import "@preview/gentle-clues:0.9.0": example
|
||||
#import "@preview/quill:0.3.0": quantum-circuit, lstick, rstick, ctrl, targ, mqgate, meter
|
||||
|
||||
|
||||
= Background
|
||||
== Quantum Computation and Quantum Circuits
|
||||
A quantum computer is a device that performs calculations by using certain phenomena of quantum mechanics.
|
||||
The algorithms that run on this device are specified in quantum circuits.
|
||||
|
||||
#example[
|
||||
@example_qc shows a simple quantum circuit that implements a specific quantum algorithm.
|
||||
|
||||
#figure(
|
||||
quantum-circuit(
|
||||
lstick($|0〉$), $H$, mqgate($U$, n: 2, width: 5em, inputs: ((qubit: 0, label: $x$), (qubit: 1, label: $y$)), outputs: ((qubit: 0, label: $x$), (qubit: 1, label: $y plus.circle f(x)$))), $H$, meter(), [\ ],
|
||||
lstick($|1〉$), $H$, 1, 1, 1
|
||||
),
|
||||
caption: [A quantum circuit implementing the Deutsch-Jozsa algorithm]
|
||||
) <example_qc>
|
||||
]
|
||||
|
||||
|
||||
== Decision Diagrams
|
||||
Decision diagrams in general are directed acyclical graphs, that may be used to express control flow through a series of conditions.
|
||||
It consists of a set of decision nodes and terminal nodes.
|
||||
The decision nodes represent an arbitrary decision based on an input value and may thus have any number of outgoing edges.
|
||||
The terminal nodes represent output values and may not have outgoing edges.
|
||||
|
||||
A @bdd is a specific kind of decision diagram, where there are two terminal nodes (0 and 1) and each decision node has two outgoing edges, depending solely on a single bit of an input value.
|
||||
@bdd[s] may be used to represent any boolean function.
|
||||
|
||||
#example[
|
||||
Example @bdd[s] implementing boolean functions with an arity of $2$ are show in @example_bdd_xor and @example_bdd_and.
|
||||
|
||||
#figure(
|
||||
diagram(
|
||||
node-stroke: .1em,
|
||||
node((0, 0), [$x_0$], radius: 1em),
|
||||
edge((0, 0), (-1, 1), [0], "->"),
|
||||
edge((0, 0), (1, 1), [1], "->"),
|
||||
node((-1, 1), [$x_1$], radius: 1em),
|
||||
node((1, 1), [$x_1$], radius: 1em),
|
||||
edge((-1, 1), (-1, 2), [0], "->"),
|
||||
edge((-1, 1), (1, 2), [1], "->"),
|
||||
edge((1, 1), (1, 2), [0], "->"),
|
||||
edge((1, 1), (-1, 2), [1], "->"),
|
||||
node((-1, 2), [$0$]),
|
||||
node((1, 2), [$1$]),
|
||||
),
|
||||
caption: [A @bdd for an XOR gate.]
|
||||
) <example_bdd_xor>
|
||||
|
||||
#figure(
|
||||
diagram(
|
||||
node-stroke: .1em,
|
||||
node((1, 0), [$x_0$], radius: 1em),
|
||||
edge((1, 0), (0, 2), [0], "->"),
|
||||
edge((1, 0), (1, 1), [1], "->"),
|
||||
node((1, 1), [$x_1$], radius: 1em),
|
||||
edge((1, 1), (0, 2), [0], "->"),
|
||||
edge((1, 1), (1, 2), [1], "->"),
|
||||
node((0, 2), [$0$]),
|
||||
node((1, 2), [$1$]),
|
||||
),
|
||||
caption: [A @bdd for an AND gate.]
|
||||
) <example_bdd_and>
|
||||
]
|
||||
|
||||
|
||||
16
content/benchmarks.typ
Normal file
16
content/benchmarks.typ
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#import "@preview/tablex:0.0.8": tablex
|
||||
#import "@preview/unify:0.6.0": qty
|
||||
|
||||
= Benchmarks
|
||||
== Google Benchmark
|
||||
|
||||
== MQT QCEC Bench
|
||||
To generate test cases for the application schemes, @mqt Bench was used. @quetschlich2023mqtbench
|
||||
|
||||
#tablex(
|
||||
columns: (1fr, 1fr, 1fr),
|
||||
rows: (auto, auto, auto),
|
||||
[*Benchmark Name*], [*Diff Run Time*], [*Proportional Run Time*],
|
||||
[DJ], [$qty("1.2e-6", "s")$], [$qty("1.5e-6", "s")$],
|
||||
[Grover], [$qty("1.3e-3", "s")$], [$qty("1.7e-3", "s")$]
|
||||
)
|
||||
2
content/conclusion.typ
Normal file
2
content/conclusion.typ
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
= Conclusion
|
||||
#lorem(200)
|
||||
36
content/implementation.typ
Normal file
36
content/implementation.typ
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#import "@preview/lovelace:0.3.0": pseudocode-list
|
||||
|
||||
= Implementation
|
||||
== Visualisation
|
||||
Initially, a visualisation of the diff algorithms applied to quantum circuits was created to assess their usefulness in equivalence checking.
|
||||
Additionally, this served as exercise to better understand the algorithms to be used for the implementation in @qcec.
|
||||
|
||||
|
||||
== QCEC Application Scheme
|
||||
The Myers' Algorithm was implemented as an application scheme in @qcec.
|
||||
|
||||
#figure(
|
||||
block(
|
||||
pseudocode-list[
|
||||
+ do something
|
||||
+ do something else
|
||||
+ *while* still something to do
|
||||
+ do even more
|
||||
+ *if* not done yet *then*
|
||||
+ wait a bit
|
||||
+ resume working
|
||||
+ *else*
|
||||
+ go home
|
||||
+ *end*
|
||||
+ *end*
|
||||
],
|
||||
width: 100%
|
||||
),
|
||||
caption: [Myers' algorithm.]
|
||||
) <myers_algorithm>
|
||||
|
||||
|
||||
|
||||
== QCEC Benchmarking Tool
|
||||
As @qcec doesn’t have built-in benchmarks, a benchmarking tool was developed to test different configurations on various circuit pairs.
|
||||
|
||||
35
content/introduction.typ
Normal file
35
content/introduction.typ
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
= Introduction
|
||||
|
||||
These are the introducing words
|
||||
|
||||
== Notation
|
||||
|
||||
To ensure a consistent notation of functions and ideas, we will now introduce some required conventions
|
||||
|
||||
Random distributed variables will be notated with a capital letter, i.e. $X$, its realization will be the corresponding lower case letter, $x$.
|
||||
|
||||
Vectors will be written in bold test: $bold(k)$ represents a vector of quantized symbols.
|
||||
|
||||
We will call a quantized symbol $k$. $k$ consists of all possible binary symbols, i.e. $0, 01, 110$.
|
||||
|
||||
A quantizer will be defined as a function $cal(Q)(x, bold(a))$ that returns a quantized symbol $k$.
|
||||
|
||||
@example-quantizer shows the curve of a 2-bit quantizer that receives $tilde(x)$ as input. In the case, that the value of $tilde(x)$ equals one of the four bounds, the quantized value is chosen randomly from the relevant bins.
|
||||
|
||||
#figure(
|
||||
include("../graphics/quantizers/two-metric-enroll.typ"),
|
||||
caption: [Example quantizer function]) <example-quantizer>
|
||||
|
||||
For the S-Metric Helper Data Method, we introduce a function
|
||||
|
||||
$ cal(Q)(s,m) $<eq-1>
|
||||
|
||||
where s determines the amount of metrics and m the bit width of the symbols.
|
||||
|
||||
=== Tilde-Domain<tilde-domain>
|
||||
|
||||
AS also described in REFSMHD, we will use a CDF to transform the real PUF values into the Tilde-Domain
|
||||
This transformation can be performed using the function $sym(xi) = tilde(x)$. The key property of this transformation is the resulting uniform distribution of $x$.
|
||||
|
||||
Considering a normal distribution, the CDF is defined as
|
||||
$ sym(xi)(frac(x - sym(mu))(sym(sigma))) = frac(1)(2)[1 + erf(frac(x - sym(mu))(sym(sigma) sqrt(2)))] $
|
||||
2
content/outlook.typ
Normal file
2
content/outlook.typ
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
= Outlook
|
||||
#lorem(200)
|
||||
3
content/state.typ
Normal file
3
content/state.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
= State of the Art
|
||||
There are a variety of existing approaches to providing a suitable oracle for quantum circuit equivalence checking based on @dd[s].
|
||||
@qcec currently implements gate-cost, lookahead, one-to-one, proportional and sequential application schemes. @burgholzer2021ec
|
||||
99
flake.lock
generated
Normal file
99
flake.lock
generated
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1720553833,
|
||||
"narHash": "sha256-IXMiHQMtdShDXcBW95ctA+m5Oq2kLxnBt7WlMxvDQXA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "249fbde2a178a2ea2638b65b9ecebd531b338cf9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"typix": "typix",
|
||||
"typst-packages": "typst-packages"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"typix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1720341806,
|
||||
"narHash": "sha256-Z9h+Q2ijuUzoK6E8eOIs5nyMkwA3wD1ILzx29qTo+x4=",
|
||||
"owner": "loqusion",
|
||||
"repo": "typix",
|
||||
"rev": "058a5dc2fb7abd6bfbfa355898914bcc01798213",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "loqusion",
|
||||
"repo": "typix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"typst-packages": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1720615207,
|
||||
"narHash": "sha256-Hh2fgicC68hq5oTig+tKzbqh8XbxQ+3PSKThIqOU5eo=",
|
||||
"owner": "typst",
|
||||
"repo": "packages",
|
||||
"rev": "cd9b4250966792262b007fe200d9aa3bcb8d5aa4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "typst",
|
||||
"repo": "packages",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
56
flake.nix
Normal file
56
flake.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = github:nixos/nixpkgs/nixos-24.05;
|
||||
flake-utils.url = github:numtide/flake-utils;
|
||||
typix = {
|
||||
url = github:loqusion/typix;
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
typst-packages = {
|
||||
url = github:typst/packages;
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, typix, typst-packages, ... }: flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
inherit (pkgs) lib;
|
||||
|
||||
tx = typix.lib.${system};
|
||||
typstPackagesSrc = "${typst-packages}/packages";
|
||||
typstPackagesCache = pkgs.stdenv.mkDerivation {
|
||||
name = "typst-packages-cache";
|
||||
src = typstPackagesSrc;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out/typst/packages"
|
||||
cp -LR --reflink=auto --no-preserve=mode -t "$out/typst/packages" "$src"/*
|
||||
'';
|
||||
};
|
||||
|
||||
typstProject = {
|
||||
typstSource = "main.typ";
|
||||
fontPaths = [
|
||||
"./template/resources/"
|
||||
];
|
||||
};
|
||||
typstProjectSrc = {
|
||||
src = ./.;
|
||||
XDG_CACHE_HOME = typstPackagesCache;
|
||||
};
|
||||
in {
|
||||
devShell = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
typst
|
||||
];
|
||||
};
|
||||
|
||||
packages.mqt-qcec-diff-thesis = tx.buildTypstProject (typstProject // typstProjectSrc);
|
||||
packages.default = self.packages.${system}.mqt-qcec-diff-thesis;
|
||||
|
||||
apps.watch = flake-utils.lib.mkApp { drv = tx.watchTypstProject typstProject; };
|
||||
apps.default = self.apps.${system}.watch;
|
||||
}
|
||||
);
|
||||
}
|
||||
11
glossary.typ
Normal file
11
glossary.typ
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#import "@preview/glossarium:0.4.1": print-glossary
|
||||
|
||||
#counter(heading).update(0)
|
||||
#heading(numbering: none)[Glossary]
|
||||
|
||||
#print-glossary((
|
||||
(key: "bdd", short: "BDD", plural: "BDDs", long: "binary decision diagram", longplural: "binary decision diagrams"),
|
||||
(key: "dd", short: "DD", plural: "DDs", long: "decision diagram", longplural: "decision diagrams"),
|
||||
(key: "mqt", short: "MQT", long: "Munich Quantum Toolkit"),
|
||||
(key: "qcec", short: "QCEC", long: "Quantum Circuit Equivalence Checker"),
|
||||
))
|
||||
21
graphics/quantizers/two-metric-enroll.typ
Normal file
21
graphics/quantizers/two-metric-enroll.typ
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#import "@preview/cetz:0.2.2": canvas, plot
|
||||
|
||||
#let line_style = (stroke: (paint: black, thickness: 2pt))
|
||||
#let dashed = (stroke: (dash: "dashed"))
|
||||
#canvas({
|
||||
plot.plot(size: (8,6),
|
||||
x-tick-step: 0.25,
|
||||
y-label: $cal(Q)(2, 1, tilde(x))$,
|
||||
x-label: $tilde(x)$,
|
||||
y-tick-step: none,
|
||||
y-ticks: ((0.25, [00]), (0.5, [01]), (0.75, [10]), (1, [11])),
|
||||
axis-style: "left",
|
||||
x-min: 0,
|
||||
x-max: 1,
|
||||
y-min: 0,
|
||||
y-max: 1,{
|
||||
plot.add(((0,0), (0.25,0.25), (0.5,0.5), (0.75,0.75), (1, 1)), line: "vh", style: line_style)
|
||||
plot.add-hline(0.25, 0.5, 0.75, 1, style: dashed)
|
||||
plot.add-vline(0.25, 0.5, 0.75, 1, style: dashed)
|
||||
})
|
||||
})
|
||||
BIN
main.pdf
Normal file
BIN
main.pdf
Normal file
Binary file not shown.
40
main.typ
Normal file
40
main.typ
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#import "@preview/cetz:0.2.2"
|
||||
#import "@preview/fletcher:0.5.1"
|
||||
#import "@preview/gentle-clues:0.9.0"
|
||||
#import "@preview/glossarium:0.4.1": make-glossary
|
||||
#import "@preview/lovelace:0.3.0"
|
||||
#import "@preview/tablex:0.0.8"
|
||||
#import "@preview/unify:0.6.0"
|
||||
#import "@preview/quill:0.3.0"
|
||||
|
||||
#import "template/conf.typ": conf
|
||||
|
||||
#show: make-glossary
|
||||
|
||||
#set document(title: "Towards Efficient Helper Data Algorithms for Multi-Bit PUF Quantization", author: "Marius Drechsler")
|
||||
|
||||
#show: doc => conf(
|
||||
title: "Towards Efficient Helper Data Algorithms for Multi-Bit PUF Quantization",
|
||||
author: "Marius Drechsler",
|
||||
chair: "Chair for Security in Information Technology",
|
||||
school: "School of Computation, Information and Technology",
|
||||
degree: "Bachelor of Science (B.Sc.)",
|
||||
examiner: "Prof. Dr. Georg Sigl",
|
||||
supervisor: "M.Sc. Jonas Ruchti",
|
||||
submitted: "22.07.2024",
|
||||
doc
|
||||
)
|
||||
|
||||
#include "content/introduction.typ"
|
||||
#include "content/SMHD.typ"
|
||||
#include "content/state.typ"
|
||||
#include "content/implementation.typ"
|
||||
#include "content/benchmarks.typ"
|
||||
#include "content/conclusion.typ"
|
||||
#include "content/outlook.typ"
|
||||
|
||||
#include "glossary.typ"
|
||||
|
||||
#counter(heading).update(0)
|
||||
#bibliography("bibliography.bib", style: "mla")
|
||||
|
||||
3
template/colour.typ
Normal file
3
template/colour.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#let tum_blue = rgb(0, 101, 189)
|
||||
#let tum_white = rgb(255, 255, 255)
|
||||
#let tum_black = rgb(0, 0, 0)
|
||||
98
template/conf.typ
Normal file
98
template/conf.typ
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
#import "cover.typ": cover_page
|
||||
#import "title.typ": title_page
|
||||
#import "contents.typ": contents_page
|
||||
|
||||
#let conf(
|
||||
title: "",
|
||||
author: "",
|
||||
chair: "",
|
||||
school: "",
|
||||
degree: "",
|
||||
examiner: "",
|
||||
supervisor: "",
|
||||
submitted: "",
|
||||
doc
|
||||
) = {
|
||||
cover_page(
|
||||
title: title,
|
||||
author: author,
|
||||
chair: chair,
|
||||
school: school
|
||||
)
|
||||
|
||||
pagebreak()
|
||||
pagebreak()
|
||||
|
||||
title_page(
|
||||
title: title,
|
||||
author: author,
|
||||
chair: chair,
|
||||
school: school,
|
||||
degree: degree,
|
||||
examiner: examiner,
|
||||
supervisor: supervisor,
|
||||
submitted: submitted
|
||||
)
|
||||
|
||||
pagebreak()
|
||||
|
||||
set math.equation(numbering: "(1)")
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
top: 3cm,
|
||||
bottom: 3cm,
|
||||
x: 2cm,
|
||||
),
|
||||
header: [],
|
||||
footer: []
|
||||
)
|
||||
|
||||
set par(justify: true)
|
||||
set align(left)
|
||||
set text(
|
||||
font: "Times New Roman",
|
||||
size: 12pt,
|
||||
)
|
||||
|
||||
set heading(numbering: "1.")
|
||||
show heading: it => locate(loc => {
|
||||
let levels = counter(heading).at(loc)
|
||||
|
||||
set text(font: "TUM Neue Helvetica")
|
||||
if it.level == 1 [
|
||||
#set text(size: 24pt)
|
||||
#pagebreak()
|
||||
#if levels.at(0) != 0 {
|
||||
numbering("1", levels.at(0))
|
||||
}
|
||||
#it.body
|
||||
#v(1em, weak: true)
|
||||
] else if it.level == 2 [
|
||||
#set text(size: 16pt)
|
||||
#v(1em)
|
||||
#numbering("1.1", levels.at(0), levels.at(1))
|
||||
#it.body
|
||||
#v(1em, weak: true)
|
||||
] else if it.level == 3 [
|
||||
#set text(size: 16pt)
|
||||
#v(1em, weak: true)
|
||||
#numbering("1.1.1", levels.at(0), levels.at(1), levels.at(2))
|
||||
#it.body
|
||||
#v(1em, weak: true)
|
||||
] else [
|
||||
#set text(size: 12pt)
|
||||
#v(1em, weak: true)
|
||||
#it.body
|
||||
#v(1em, weak: true)
|
||||
]
|
||||
})
|
||||
|
||||
contents_page()
|
||||
|
||||
pagebreak()
|
||||
|
||||
doc
|
||||
}
|
||||
|
||||
14
template/contents.typ
Normal file
14
template/contents.typ
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#import "colour.typ": *
|
||||
|
||||
#let contents_page() = {
|
||||
set text(font: "TUM Neue Helvetica")
|
||||
|
||||
show outline.entry.where(
|
||||
level: 1
|
||||
): it => {
|
||||
v(1em)
|
||||
strong(it)
|
||||
}
|
||||
|
||||
outline(indent: auto)
|
||||
}
|
||||
46
template/cover.typ
Normal file
46
template/cover.typ
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#import "colour.typ": *
|
||||
|
||||
#let cover_page(
|
||||
title: "",
|
||||
author: "",
|
||||
chair: "",
|
||||
school: ""
|
||||
) = {
|
||||
set text(
|
||||
font: "TUM Neue Helvetica"
|
||||
)
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
top: 3cm,
|
||||
bottom: 1cm,
|
||||
x: 1cm,
|
||||
),
|
||||
header: [
|
||||
#grid(
|
||||
columns: (1fr, 1fr),
|
||||
rows: (auto),
|
||||
text(
|
||||
fill: tum_blue,
|
||||
size: 8pt,
|
||||
[#chair \ #school \ Technical University of Munich]
|
||||
),
|
||||
align(bottom + right, image("resources/TUM_Logo_blau.svg", height: 50%))
|
||||
)
|
||||
],
|
||||
footer: []
|
||||
)
|
||||
|
||||
v(1cm)
|
||||
|
||||
set align(top + left)
|
||||
text(size: 24pt, [*#title*])
|
||||
|
||||
v(3cm)
|
||||
|
||||
text(fill: tum_blue, size: 17pt, [*#author*])
|
||||
|
||||
set align(bottom + right)
|
||||
image("resources/TUM_Tower.png", width: 60%)
|
||||
}
|
||||
BIN
template/resources/TUMNeueHelvetica-Bold.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Bold.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-BoldItalic.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-BoldItalic.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-Italic.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Italic.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-Regular.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Regular.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUM_Flags_169.png
Normal file
BIN
template/resources/TUM_Flags_169.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 430 KiB |
BIN
template/resources/TUM_Flags_43.png
Normal file
BIN
template/resources/TUM_Flags_43.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 399 KiB |
6
template/resources/TUM_Logo_blau.svg
Normal file
6
template/resources/TUM_Logo_blau.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="Ebene_1" x="0px" y="0px" width="408.16" height="212.46684" viewBox="-16.014 -31 408.16 212.46684" enable-background="new -16.014 -31 149 114" xml:space="preserve" sodipodi:docname="TUM_Web_Logo_blau.svg" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata id="metadata13"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title>TUM_Web_Logo_blau</dc:title></cc:Work></rdf:RDF></metadata><defs id="defs11"/><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="986" id="namedview9" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom="1.754386" inkscape:cx="124.61021" inkscape:cy="115.2546" inkscape:window-x="-11" inkscape:window-y="-11" inkscape:window-maximized="1" inkscape:current-layer="Ebene_1"/>
|
||||
<title id="title2">TUM_Web_Logo_blau</title>
|
||||
<desc id="desc4">TUM</desc>
|
||||
<path fill="#3070b3" d="m 140.54052,-31 v 173.32822 h 44.72985 V -31 H 392.146 V 181.46685 H 353.00738 V 8.138629 H 308.2775 V 181.46685 H 269.13887 V 8.138629 H 224.40902 V 181.46685 H 101.4019 V 8.138629 H 62.26327 V 181.46685 H 23.12462 V 8.138629 H -16.014 V -31 Z" id="path6" style="stroke-width:5.59123"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
BIN
template/resources/TUM_Tower.png
Normal file
BIN
template/resources/TUM_Tower.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 240 KiB |
BIN
template/resources/TUM_Tower_white.png
Normal file
BIN
template/resources/TUM_Tower_white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
64
template/title.typ
Normal file
64
template/title.typ
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#import "colour.typ": *
|
||||
|
||||
#let title_page(
|
||||
title: "",
|
||||
author: "",
|
||||
chair: "",
|
||||
school: "",
|
||||
degree: "",
|
||||
examiner: "",
|
||||
supervisor: "",
|
||||
submitted: ""
|
||||
) = {
|
||||
set text(
|
||||
font: "TUM Neue Helvetica",
|
||||
size: 10pt
|
||||
)
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
top: 5cm,
|
||||
bottom: 3cm,
|
||||
x: 2cm,
|
||||
),
|
||||
header: [
|
||||
#grid(
|
||||
columns: (1fr, 1fr),
|
||||
rows: (auto),
|
||||
text(
|
||||
fill: tum_blue,
|
||||
size: 8pt,
|
||||
[#chair \ #school \ Technical University of Munich]
|
||||
),
|
||||
align(bottom + right, image("resources/TUM_Logo_blau.svg", height: 30%))
|
||||
)
|
||||
],
|
||||
footer: []
|
||||
)
|
||||
|
||||
v(1cm)
|
||||
|
||||
set align(top + left)
|
||||
text(size: 24pt, [*#title*])
|
||||
|
||||
v(3cm)
|
||||
|
||||
text(fill: tum_blue, size: 17pt, [*#author*])
|
||||
|
||||
v(3cm)
|
||||
|
||||
[Thesis for the attainment of the academic degree]
|
||||
v(1em)
|
||||
[*#degree*]
|
||||
v(1em)
|
||||
[at the #school of the Technical University of Munich.]
|
||||
|
||||
v(3cm)
|
||||
|
||||
[*Examiner:*\ #examiner]
|
||||
v(0em)
|
||||
[*Supervisor:*\ #supervisor]
|
||||
v(0em)
|
||||
[*Submitted:*\ Munich, #submitted]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue